Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

520 Глава 11. Сортировка, наборы и выбор

Продолжительность Быстрого Вида

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

вид слияния в Разделе 11.1.3. А именно, мы можем определить время, проведенное в каждом узле дерева быстрого вида T, и подвести итог продолжительности для всех узлов.

Исследуя Кодовый Фрагмент 11.5, мы видим, что шаг дележа и побеждать шаг быстрого вида могут быть осуществлены в линейное время. Таким образом время, проведенное в узле v T, пропорционально входному размеру s (v) из v, определенных как размер последовательности, обработанной просьбой быстрого вида, связанного с узлом v. Начиная с подпоследовательности у E есть по крайней мере один элемент (центр), сумма входных размеров детей

v в большей части s (v)- 1.

Учитывая дерево быстрого вида T, позвольте си обозначить сумму входных размеров узлов

на глубине i в T. Ясно, s0 = n, так как корень r T связан со всем

последовательность. Кроме того, s1£ n- 1, так как центр не размножен детям r.

Рассмотрите следующий s2. Если у обоих детей r есть входной размер отличный от нуля, то s2 = n- 3. Иначе (у одного ребенка корня есть нулевой размер, другой, имеет размер n- 1), s2 = n- 2. Таким образом, s2£ n- 2. Продолжая эту цепь рассуждений, мы получаем тот £ ñèn- я. Как наблюдается в Разделе 11.2, высота T - n- 1 в худшем случае. Таким образом продолжительность худшего случая быстрого вида - Oån=01 си, который является Oån=01 (n- i), это- -

я я

я я

время худшего случая.

O (ån=1 i). Суждением 4.3,ån=1 я - O (n2). Таким образом быстрый вид бежит в O (n2)

Учитывая его имя, мы ожидали бы, что быстрый вид будет бежать быстро. Однако квадратное, связанное выше, указывает, что быстрый вид медленный в худшем случае. Парадокс - ically, это поведение худшего случая происходит для проблемных случаев, когда сортировка должна быть легкой - если последовательность уже сортирована.

Возвращаясь к нашему анализу, обратите внимание на то, что лучший случай для быстрого вида на последовательности отличных элементов происходит, когда у подпоследовательностей L и G, оказывается, есть примерно тот же самый размер. Таким образом, в лучшем случае мы имеем

s0 = n

s1 = n- 1

s2 = n- (1 + 2) = n- 3...

си = n- (1 + 2 + 22 + + 2i-1) = n- (2i- 1). Таким образом, в лучшем случае, у T есть высота O (зарегистрируйте n), и пробеги быстрого вида в O (n регистрируют n), время.

Мы оставляем оправдание этого факта как осуществление (Упражнение R-11.12).

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

11.2. Быстрый вид 521

11.2.1 Рандомизированный Быстрый Вид

Одна общепринятая методика для анализа быстрого вида должна предположить что центр всегда

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

В целом мы желаем некоторого способа быть рядом с продолжительностью лучшего случая для быстрого вида. Способ быть рядом с продолжительностью лучшего случая, конечно, для центра, чтобы разделить входную последовательность S почти одинаково. Если бы этот результат должен был произойти, то он привел бы к продолжительности, которая является асимптотически тем же самым как продолжительностью лучшего случая. Таким образом, наличие центров близко к «середине» набора элементов приводит к O (n, регистрируют n), продолжительность для быстрого вида.

Выбор центров наугад

Так как цель шага разделения метода быстрого вида состоит в том, чтобы разделить se-

айва S почти одинаково, давайте введем рандомизацию в алгоритм и давайте выберем случайный элемент входной последовательности как центр. Таким образом, вместо выбора - луг центр как последний элемент S, мы выбираем элемент S наугад как центр, сохраняя остальную часть алгоритма неизменной. Это изменение быстрого вида называют рандомизированным быстрым видом. Следующее суждение показывает, что ожидаемая продолжительность рандомизированного быстрого вида на последовательности с n элементами - O (n, регистрируют n). Это ожидание взято по всему возможному случайному выбору, который алгоритм делает и независим от любых предположений о распределении возможных входных последовательностей, которые, вероятно, будет дан алгоритм. Суждение 11.3: ожидаемая продолжительность рандомизированного быстрого вида на se-айве S размера n является O (n, регистрируют n).

Оправдание: Мы предполагаем, что два элемента S могут быть сравнены в O (1) время. Рассмотрите единственный рекурсивный вызов рандомизированного быстрого вида и позвольте n обозначить размер входа для этого требования. Скажите, что это требование «хорошо», если выбранный центр таков, что у подпоследовательностей L и G есть размер, по крайней мере, n/4 и в большей части 3n/4 каждый; иначе, требование «плохо».

Теперь, рассмотрите значения нашего выбора центра однородно наугад. Обратите внимание на то, что есть n/2 возможный хороший выбор для центра для любого данного требования размера n рандомизированного алгоритма быстрого вида. Таким образом вероятность, что любое требование хорошо, является 1/2. Отметьте далее, что хорошее требование, по крайней мере, разделит список размера n в два списка размера 3n/4 и n/4, и плохое требование могло настолько же плохо как производить сингл

требование размера n- 1.

522