Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
abramov_s_a_lekcii_o_slozhnosti_algoritmov.doc
Скачиваний:
136
Добавлен:
11.05.2015
Размер:
2.74 Mб
Скачать

§ 17. Нижняя граница сложности в среднем

При рассмотрении сложности в среднем мы основываемся на тех же понятиях нижней границы, оптимального и оптимального по порядку сложности алгоритма, которые были введены для сложности в худ­шем случае.

Пример 17.1. Вновь обратимся к классу алгоритмов сортировки. Будем, как и в § 6, рассматривать вероятностное пространство Пn.

Предложение 17.1. Функция log2n! является нижней границей сложности в среднем для класса алгоритмов сортировки массивов длины n с помощью сравнений.

§ 17. Нижняя граница сложности в среднем

119

Прежде всего докажем вспомогательное утверждение.

Лемма 17.1. В любом двоичном дереве с т листьями сумма высот всех листьев не меньше т log2 т.

Доказательство. Пусть непусто множество М всех двоичных дере­вьев, для которых сумма высот всех листьев меньше т log2 т. Выбе­рем в М какое-нибудь из деревьев, имеющих наименьшую сумму вы­сот, и обозначим его U (сумму высот всех листьев будем обозначать через Я(J7)). Это дерево не может состоять из одного лишь корня, потому что для такого дерева обсуждаемое неравенство выполнено. Далее, из корня этого дерева не может выходить только одно ребро, потому что для дерева, получающегося из исходного удалением кор­ня и этого ребра, обсуждаемое неравенство не выполняется, и такое новое дерево имеет сумму высот меньшую, чем дерево U (противо­речие со способом выбора дерева U). Поэтому из корня дерева U выходит два ребра, концы которых являются корнями двух деревьев иг и U2, для которых выполнено обсуждаемое неравенство. Пусть эти деревья имеют, соответственно, тг и т2 листьев, тъ т2 > 0. Имеем соотношение для сумм высот всех листьев

H{U) =H(U1) + Я(!У2) + т^тг log2 тг + т2 log2 m2 + т.

Отсюда получаем

Я([7) =г тг log2 тг + {т- тг) log2(m-тг)+т

при некотором тг таком, что 1 ^ тг ^ т - 1.

Легко показать, что при фиксированном т функция /(х) =х log2 х+ + (т-х) log2(m-x) достигает минимума на отрезке [1, т - 1] в точке (не обязательно целой) т/2. Поэтому

Я([7) ^ j log2 j + j log2 Щ-+т = т log2 т. Но это противоречит способу выбора U. Лемма доказана. □

Доказательство предложения 17.1. Рассмотрим какое-либо дерево сортировки массива длины п. Это дерево имеет ровно п! листьев, каждый лист соответствует перестановке элементов исходного масси­ва. Появление на выходе рассматриваемой сортировки любой из этих

1 перестановок имеет одну и ту же вероятность —, количество сравне­ний, приводящее к этой перестановке—это высота соответствующего этой перестановке листа. Поэтому математическое ожидание числа

сравнений равно произведению суммы высот всех листьев на —.

120 Глава 4. Нижняя граница сложности. Оптимальные алгоритмы

Согласно лемме 17.1 сумма высот всех листьев должна быть не меньше, чем n\ log2 n\. Отсюда математическое ожидание числа срав­ нений не меньше, чем log2 n\.

Доказанные ранее теорема 16.2 и предложение 16.1 справедливы в равной мере и для сложности в худшем случае, и для сложности в среднем. Принимая это во внимание, мы получаем следствие пред­ложения 17.1:

Сортировка бинарными вставками и сортировка фон Неймана, а также быстрая сортировка являются оптимальными по порядку сложности в среднем по числу сравнений.

К этому списку позднее мы добавим и рекурсивную сортиров­ку слияниями. Наиболее же существенно упоминание в этом списке быстрой сортировки. С одной стороны, как мы знали и раньше, эта сортировка очень удобна и имеет низкую пространственную слож­ность, с другой—мы видим теперь, что и в смысле временной слож­ности в среднем эта сортировка в определенном смысле может быть отнесена к наилучшим.

Можно показать существование оптимальной в среднем сортиров­ки: для каждого фиксированного n в множестве всех деревьев сорти­ровки массивов длины n можно рассмотреть подмножество деревьев, имеющих наименьшую сумму H высот всех листьев (тогда и H/n\ будет иметь наименьшее значение), и взять какое-нибудь из дере­вьев этого подмножества. Определяя сортировку этим способом для всех n мы получаем оптимальную сортировку. Для любой оптималь­ной в среднем сортировки выполнено

Topt(n)~log2n!~nlog2n,

так как, например, мы имеем TvN(n)~log2n! и

TvN(n) ^ TvN(n) ^ T(n) ^ log2 n\.

В этом примере, как и во всем этом параграфе, мы не касаемся рандомизированных алгоритмов, о которых будет говориться в § 18.

Как мы ранее наблюдали в некоторых примерах, рассмотрение функции L, подобранной надлежащим образом, и изучение измене­ния ее значений в ходе выполнения алгоритма нередко позволяет получать хорошие оценки (в частности, нижние границы) сложности в худшем случае. Рассмотрение такого рода функций может приво­дить к цели и при исследовании сложности в среднем. В задаче 37 функцию L можно определить как максимум значений компонент

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]