Оптимальная сортировка.ppt
- Количество слайдов: 9
Оптимальная сортировка Какой метод внутренней сортировки наилучший? Существует ли предел скорости сортировки? 1
Цель оптимальной сортировки • Изучение внутреннего механизма методов сортировки обычно было направлено на – минимизацию числа сравнений ключей при сортировке n элементов – или на минимизацию слияний т элементов с n элементами, – или на минимизацию выбора i-го наибольшего элемента из неупорядоченного набора n элементов 2
Сортировка с минимальным числом сравнений • Варианты постановки задачи сортировки посредством сравнений. • Если есть n грузов и весы с двумя чашами, то каково минимальное число взвешиваний, необходимое для того, чтобы расположить грузы по порядку в соответствии с весом, если в каждой чаше весов помещается только один груз? • Или в некотором турнире участвуют n игроков. Каково наименьшее число парных встреч, достаточное для того, чтобы распределить места между соревнующимися в предположении, что силы игроков можно линейно упорядочить (ничейные результаты не допускаются). 3
Решение поставленной задачи Используем дерево сравнений. Каждый внутренний узел содержит два индекса "i : j" и означает сравнение ключей Кi и Kj. Левое поддерево этого узла соответствует последующим сравнениям, при Кi < Kj, а правое поддерево — тем действиям, если Кi > Kj. Каждый лист дерева содержит перестановку Кi, a это обозначает, что было установлено упорядочение К 1 < К 2 < • • • < Кn. • Возможны и избыточные сравнения; например, на рис. нет необходимости сравнивать 3: 1, поскольку из неравенств К 1 < К 2 и K 2 < K 3 следует К 1 < Кз. . В дереве сравнений для сортировки n элементов без избыточных сравнений имеется ровно n! внешних узлов 4
Оптимизация в наихудшем случае • Пусть S(n) — минимальное число сравнений, достаточное для сортировки n элементов. Если все внутренние узлы в дереве сравнений располагаются на уровнях < k, то очевидно, что в дереве не может быть более 2 к внешних узлов. Следовательно, полагая k = S(n), имеем • n! ≤ 2 S(n) • Поскольку S(n) – целое число, можно записать эту формулу иначе, получив нижнюю оценку: • S(n) ≥ lg n!. • Заметим, что по формуле Стирлинга • lg n! =n lgn-n/ln 2+ ½ lg n + O (l), • следовательно, необходимо выполнить около n lg n сравнений. 5
Практические результаты • Из всех рассмотренных и не рассмотренных нами методов сортировки три метода требуют меньше всего сравнений: – бинарные вставки, – выбор из дерева – и простое двухпутевое слияние. • Для метода выбора из дерева верхняя оценка числа сравнений либо такая же, как для метода бинарных вставок, либо такая же, как для двухпутевого слияния, в зависимости от вида дерева. Во всех трех случаях имеем асимптотическое значение n lg n; • Таким образом, мы получили приближенную формулу для S(n), однако желательно иметь более точную оценку. В следующей таблице приведены значения верхней и нижней границ при малых n. Здесь В(n) и L(n) относятся соответственно к методам бинарных вставок и слияния списков. Можно показать, что В(n) ≤ L(n) при любом n. • n = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 • lg n! = 0 1 3 5 7 10 13 16 19 22 26 29 33 37 41 45 49 • В(n) = 0 1 3 5 8 11 14 17 21 25 29 33 37 41 45 49 54 • L(n) = 0 1 3 5 9 11 14 17 25 27 30 33 38 41 45 49 65 6
Среднее число сравнений • До сих пор мы искали "минимаксные" процедуры, минимизирующие максимальное число сравнений. • Поищем теперь "мини-средние" процедуры, минимизирующие среднее число сравнений в предположении, что входные данные случайны, т. е. все перестановки равновероятны. Рассмотрим еще раз изображенное на рис представление процедуры сортировки в виде дерева. Среднее число сравнений по всем перестановкам для этого дерева равно (2+3+3+2)/6=8/3 7
Общий случай • В общем случае среднее число сравнений для метода сортировки есть длина внешнего пути дерева, деленная на n!. (Напомним, что длина внешнего пути — это сумма всех расстояний от корня до каждого из внешних узлов) • Минимальная длина внешнего пути достигается на таком бинарном дереве с N внешними узлами, у которого имеется 2 q — N внешних узлов на уровне q - 1 и 2 N – 2 q на уровне q, где q = [lg N]. (Корень находится на нулевом уровне. ) Таким образом, минимальная длина внешнего пути равна • (q - 1)(2 q - N) + q(2 N - 2 q) = (q + 1)N - 2 q. • минимальная возможная средняя длина пути не может быть меньше lg. N и больше lg. N + 0. 0861. 8
нижняя оценка среднего числа сравнений • при N = n!, получим нижнюю оценку среднего числа сравнений по всем схемам сортировки. Оценка асимптотически приближается к • lg n! + O(l) = n lg n - n/ln 2 + O(log n). • Пусть F(n) — среднее число сравнений, выполняемых алгоритмом сортировки посредством вставок и слияния; имеем • n=1 2 3 4 5 6 7 8 Нижн. гран. = 0 2 16 112 832 6896 62368 619904 • F(n) = 0 2 16 112 832 6912 62784 623232 • В работе Y. Cesari, показано, что при n = 7 не существует метода сортировки, при котором достигалась бы нижняя граница длины внешнего пути (62 368). 9


