Ожидаемое время работы против времени работы в худшем случае - PullRequest
6 голосов
/ 26 октября 2011

Я изучаю алгоритм рандомизированной быстрой сортировки.Я понял, что время работы этого алгоритма всегда представляется как «ожидаемое время работы».

В чем причина указания или использования «ожидаемого времени работы»?Почему бы нам не рассчитать наихудший или средний случай?

Ответы [ 3 ]

7 голосов
/ 26 октября 2011

Иногда ожидаемое время работы означает среднее время работы для случайно выбранного входа.Но если это рандомизированный алгоритм, то часто подразумевается ожидаемое время выполнения в отношении случайных выборов, сделанных алгоритмом для каждого входа.Вот что здесь подразумевается.Для каждого ввода из n элементов рандомизированная быстрая сортировка выполняется в среднем за время O (n (log n)), усредненная только по броскам монет.

В этом ограниченном смысле ожидаемое время выполненияочень оправданная мера времени работы рандомизированного алгоритма.Если вас беспокоит только худшее, что может произойти, когда алгоритм переворачивает монеты внутри, тогда зачем вообще переворачивать монеты?С таким же успехом вы можете сделать их головы.(Что в случае рандомизированной быстрой сортировки уменьшило бы ее до обычной быстрой сортировки.)

Среднее значение по сравнению с наихудшим случаем является гораздо более серьезным вопросом, когда оно является средним по входным данным, а не средним по броскам монет.В этом случае среднее время выполнения в лучшем случае является цифрой, которая не адаптируется к изменениям в типе входных данных - различные варианты использования алгоритма могут иметь различные распределения входных данных.Я говорю в лучшем случае, потому что вы, возможно, не знаете, что гипотетическое распределение входных данных всегда является истинным использованием.

Глядя на наихудший случай в отношении бросков монет, имеет смысл только тогда, когда вы оба хотели бы бежать быстро, когда вашброски монет не неудачны, и не бегают слишком медленно, даже когда броски монет неудачны.Например, представьте, что вам нужен алгоритм сортировки для регулятора подачи кислорода (для медицинского пациента или аквалангиста).Тогда рандомизированная быстрая сортировка будет иметь смысл, только если вы оба хотите, чтобы результат был обычно очень быстрым, для удобства пользователя, И если худший случай не задушит пользователя, несмотря ни на что.Это надуманный сценарий для алгоритмов сортировки, потому что существуют неслучайные алгоритмы сортировки (такие как сортировка слиянием), которые не намного медленнее, чем быстрая сортировка в среднем.Он менее изобретателен для такой задачи, как тестирование на простоту, когда рандомизированные алгоритмы на намного быстрее, чем нерандомизированные алгоритмы.Тогда вы можете захотеть запустить его с помощью рандомизированного алгоритма - и в то же время запустить нерандомизированный алгоритм в качестве резервной копии.

(Хорошо, вы можете задаться вопросом, почему регулятор кислорода захочетчтобы узнать, являются ли определенные числа простыми числами. Может быть, для связи с медицинской компьютерной сетью требуется связь, и для обеспечения конфиденциальности медицинских данных эта связь должна быть безопасной ...)

5 голосов
/ 26 октября 2011

Когда мы говорим «ожидаемое время выполнения», мы говорим о времени выполнения для среднего случая. Мы можем говорить об асимптотически верхней или нижней границе (или обоих). Точно так же мы можем говорить об асимптотически верхних и нижних границах времени выполнения лучших или худших случаев. Другими словами, граница ортогональна случаю.

В случае рандомизированной быстрой сортировки люди говорят об ожидаемом времени выполнения (O (n log n)), поскольку это заставляет алгоритм казаться лучше, чем алгоритмы O (n ^ 2) в худшем случае (что это, хотя и не так) асимптотически в худшем случае). Другими словами, рандомизированная быстрая сортировка намного асимптотически быстрее, чем, например, Bubblesort для почти всех входов, и люди хотят, чтобы этот факт был ясен; поэтому люди подчеркивают среднее время выполнения рандомизированной быстрой сортировки, а не тот факт, что в худшем случае оно асимптотически плохо, как Bubblesort.

Как указано в комментариях и в отличном ответе Грега, также может быть распространено говорить об ожидаемом времени выполнения относительно набора последовательностей случайных выборов, сделанных во время выполнения алгоритма на фиксированном произвольном входе. Это может быть более естественным, поскольку мы считаем, что входные данные пассивно воздействуют активным алгоритмом. Фактически, это эквивалентно говорить о среднем по случайным входам и алгоритме, выполнение которого не учитывает структурных различий. Обе эти формулировки легче визуализировать, чем истинное среднее по набору пар входов и случайных выборов, но вы получите одинаковые ответы независимо от того, как вы к этому подходите.

3 голосов
/ 23 февраля 2012

Алгоритм рандомизирован, если его поведение определяется не только входными данными, но и значениями, генерируемыми генератором случайных чисел.Вот почему вы анализируете то, что ожидается.

Анализ наихудшего случая только на входе.

...