Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[54]

в. Измените процедуру Quicksort так, чтобы объём стека не превышал в (lgra) (сохраняя оценку O(ralgra) для среднего времени работы).

8-5 Разбиение с помощью медианы трёх элементов

Работу процедуры Randomized-Quicksort можно ускорить, выбирая граничный элемент для разбиения более тщательно. Один из распространённых подходов - это метод медианы трёх (median-of-3 method): в качестве граничного элемента используется средний из трёх случайно выбранных элементов массива. Мы будем предполагать, что все элементы входного массива А[1..га] различны и га 3. Через А[1..га] будем обозначать отсортированный массив (который мы и хотим получить). Пусть pi = Р{ж = А[г]}, где х - граничный элемент, выбранный описанным выше способом.

а.Выразите вероятность рг- (для г = 2, 3,..., га - 1) через inn (заметьте, что р\ = рп = 0).

б.Насколько вероятность выбрать средний элемент (А[[(га + 1)/2J]) больше, чем при обычном случайном выборе? К чему стремится отношение этих вероятностей при га -> оо?

в.Будем называть разбиение с граничным элементом х «хорошим», если х = A[i], где га/3 г 2га/3. Насколько вероятность «хорошего» разбиения больше, чем при обычном случайном выборе? (Указание: при вычислениях оцените сумму интегралом.)

г.Докажите, что использование метода медианы трёх сохраняет оценку fi(ralgra) для времени работы быстрой сортировки (и влияет лишь на константу перед га lgra).

Замечания

Алгоритм быстрой сортировки принадлежит Хоару [98]. В статье Седжвика [174] обсуждаются детали реализации быстрой сортировки и их влияние на время работы. Вероятностные алгоритмы для разных задач рассматриваются в статье Рабина [165].


9

Сортировка за линейное время

Мы познакомились с различными алгоритмами, которые могут отсортировать га чисел за время О (га lgra). Алгоритмы сортировки слиянием (merge sort) и сортировки с помощью кучи (heap sort) работают за такое время в худшем случае, а у алгоритма быстрой сортировки таковым является среднее время работы. Оценка О (га lgra) точна: для каждого из этих алгоритмов можно предъявить последовательность из га чисел, время обработки которой будет Q(гаlgra).

Все упомянутые алгоритмы проводят сортировку, основываясь исключительно на попарных сравнениях элементов, поэтому их иногда называют сортировками сравнением (comparison sort). В разделе 9.1 мы покажем, что всякий алгоритм такого типа сортирует га элементов за время не меньше fi(ralgra) в худшем случае. Тем самым алгоритмы сортировки слиянием и с помощью кучи асимптотически оптимальны: не существует алгоритма сортировки сравнением, который превосходил бы указанные алгоритмы более, чем в конечное число раз.

В разделах 9.2, 9.3 и 9.4 мы рассматриваем три алгоритма сортировки (сортировка подсчётом, цифровая сортировка и сортировка вычерпыванием), работающих за линейное время. Разумеется, они улучшают оценку fi(ralgra) за счёт того, что используют не только попарные сравнения, но и внутреннюю структуру сортируемых объектов.

9.1. Нижние оценки для сортировки

Говорят, что алгоритм сортировки основан на сравнениях, если он никак не использует внутреннюю структуру сортируемых элементов, а лишь сравнивает их и после некоторого числа сравнений выдаёт ответ (указывающий истинный порядок элементов). Так мы приходим к модели алгоритмов сортировки, называемой разрешающими деревьями.


Рис. 9.1 Разрешающее дерево для алгоритма сортировки вставками, обрабатывающего последовательность из трёх элементов. Поскольку число перестановок из трёх элементов равно 3! = 6, у дерева должно быть не менее 6 листьев.

Разрешающие деревья

Начнём с примера: на рис. 9.1 изображено разрешающее дерево

(decision tree), соответствующее сортировке последовательности из трёх элементов с помощью алгоритма сортировки вставками из раздела 1.1.

Пусть теперь мы сортируем га элементов а\,..., ап. Каждая внутренняя вершина разрешающего дерева соответствует операции сравнения и снабжена пометкой вида аг- : cij, указывающей, какие элементы надо сравнить (1 i,j га). Каждый лист разрешающего дерева снабжен пометкой (тг(1), 7г(2),..., тг(га)), где ж - перестановка га элементов (см. разд. 6.1 по поводу перестановок). Для получения нижних оценок мы можем ограничиться случаем различных элементов, тогда результатом сортировки будет перестановка элементов в порядке возрастания.

Опишем, какой алгоритм сортировки соответствует данному разрешающему дереву. Надо пройти по дереву от корня до листа. Выбор направления (налево или направо) происходит так. Пусть в вершине написано аг- : cij. Тогда надо идти налево, если аг- cij, и направо в противном случае. Если в листе, в который мы в итоге приходим, записана перестановка тг, то результатом сортировки считаем последовательность аж, civ2), , аж{п) которая должна быть неубывающей, если алгоритм правилен.

Каждая из га! перестановок должна появиться хотя бы на одном листе разрешающего дерева (поскольку правильный алгоритм должен предусматривать все возможные порядки).

Нижняя оценка для худшего случая

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



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]