2012-04-25 4 views
3

В массиве из n элементов, если n/2 являются повторяющимися элементами, а остальные являются различными, мы могли бы использовать алгоритм Лас-Вегаса для получения повторяющегося элемента в o (logn) времени.Анализ времени выполнения алгоритма Лас-Вегаса

Существует еще один вопрос, который гласит: каково минимальное количество повторений, необходимых для выполнения этого алгоритма o (logn), т.е. (n/k повторяющихся элементов, где k =?), И какова продолжительность выполнения, если повторяющийся элемент является корневым (п)?

В моем результате сказано, что это не o (logn), если повторяющийся элемент является корнем (n), но я не могу найти свободную привязку к этой проблеме, используя алгоритм Лас-Вегаса. Помощь будет оценена.

ответ

2

«Лас-Вегас» не является алгоритмом; это тип алгоритма. Очевидным алгоритмом является выборка пар элементов равномерно случайным образом до тех пор, пока они не совпадут. Когда массив имеет элемент, повторяемый n/2 раза, вероятность успеха для каждой пары равна ((n/2)/n) ((n/2-1)/(n-1)) = 1/4 - O (1/n), поэтому ожидаемое время работы равно 1/(1/4 - O (1/n)) = 4 + O (1/n) = O (1) выборкам.

Поскольку это, вероятно, домашнее задание, вы выяснить, как настроить анализ для различного количества повторений.

+0

P.S .: Вам, возможно, потребуется улучшить этот алгоритм. – 123

+0

Я знаю, что «лас-вегас» является «типом» алгоритма. и здесь сублинейная временная граница. это поддерживается для линейно упорядоченных повторяющихся элементов. для root (n) результат: -logbase (n). где base = {(n * root (n))/(n * root (n) -root (n) +1)} .. это справедливо при n> = 2. если вы получите другой результат, отправьте его здесь. И это не домашнее задание. Это просто хорошая проблема, которую я взял и хотел поделиться. Спасибо. :) – user624438