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

Глава 7. Сводимость

сектора пространства Ж". В примере 14.2 говорилось, что при фикси­рованном п любую сортировку массивов длины п можно представить в виде дерева, каждой не являющейся листом вершине v которого приписано сравнение вида xt < х;-, а выходящие из нее ребра име­ют метки 1 («да») и 0 («нет»); при этом каждому листу Z приписан набор х; ,х< ,...,х; , где (b,i2, ...,*„) — некоторая перестановка чисел 1,2,...,п.

Алгоритм сортировки массивов длины п c помощью сравнений и четырех арифметических операций представляется деревом D, которое можно считать таким, что каждой не являющейся ли­стом вершине v приписано сравнение Fv(x1,x2,...,xn) с нулем, где Ру(хъх2,...,хп) некоторая рациональная функция, а выходящие из вершины ребра имеют метки 1 («да») и 0 («нет»). При этом каждому листу Z приписаны рациональные функции

Gll{x1,x2,...,xn), Gl2{x1,x2,...,xn), ..., Gln(x1,x2,...,xn), (29.2)

значения которых для исходных хъх2, ...,хп определяют требуемый

порядок X; , X; , ...,Х; :

х =G,1(x1,x2,...,xn), х =G,2(x1,x2,...,xn),

- =G,n(x1,x2,...,xn).

Можно считать, что числитель каждой из функций Fv(xl5x2, ...,хп) не является нулевым полиномом, — в противном случае вершину v можно было бы удалить из дерева вместе с выходящей из нее вет­вью, начинающейся с помеченного единицей ребра. Множество JV тех точек Ж", в которых обращается в нуль числитель хотя бы одной из рациональных функций Fv(xl5x2, ...,хп), в силу свойства (R1) явля­ется замкнутым, причем это множество не может покрывать целиком ни один из секторов. Иначе в силу свойства (R2) произведение всех числителей рассматриваемых рациональных функций было бы нуле­вым полиномом, а это означало бы, что один из сомножителей этого произведения—нулевой полином.

Таким образом, каждое из множеств

S; = S;\JV, i = l,2,...,n!,

есть непустое открытое множество. Покажем, что для массивов, соот­ветствующих точкам из S't, i = l,2,..., п\, рассматриваемая сортировка в худшем случае требует не менее [log2n!l сравнений.

§ 30. Классы PиNp

195

Будем говорить, что точка (xъx2, ...,xn) некоторого сектора со­гласуется с листом l дерева D, если соответствующая дереву D сор­тировка массива xъx2, ...,xn заканчивается в листе l.

В том случае, когда D имеет не менее n\ листьев, мы, рассуждая так же, как в примере 14.2, получаем, что высота дерева D (слож­ность сортировки по числу сравнений) не может быть меньше чем [log2 n\]. Допустим, что число листьев дерева D меньше чем n\. Тогда найдется лист l такой, что имеются точки в двух разных множествах S[, S'j, согласующиеся с l. В силу свойства (R1) найдутся непустые открытые множества Uг с S[, U2 с S' такие, что любая точка, принад­лежащая какому-то одному из них, согласуется с листом l. Если ли­сту l приписан массив (29.2), то для некоторых целых k,s, t, не мень­ших единицы и не превосходящих n, таких, что s^t, будем иметь Gk(x1,x2,...,xn) = xs при (x1,x2,...,xn)&U1 и Gk(x1,x2,...,xn)=xt при {xъx2,...,xn)&U2. Но значения рациональной функции на одном из множеств Uъ U2 однозначно определяют значения этой рациональ­ной функции всюду на Uг и U2 (это выводится из свойства (R2)), поэтому из того, что, например, Gk(xls x2, ...,xn) = xs на Uъ следует, что Gk(xl5x2, ...,xn) = xs на U2. Но мы знаем, что Gk(xl5x2, ...,xn) =xt на U2. Так как s/t, то в любом секторе xsфxt, в частности, это так и в секторе, подмножеством которого является U2. Противоречие. □

Из доказанного предложения следует, что f(n) = nlogn является асимптотической нижней границей сложности алгоритмов сортиров­ки массивов длины n попарно различных вещественных чисел c по­мощью сравнений и четырех арифметических операций. По теоре­ме 29.1 эта функция является также асимптотической нижней оцен­кой для алгоритмов построения выпуклой оболочки.

Любой алгоритм построения выпуклой оболочки с помощью арифметических операций и сравнений, который имеет сложность O(nlogn), является оптимальным по порядку сложности по общему числу операций, и его сложность есть G(nlogn). Алгоритм Грэхема построения выпуклой оболочки (пример 3.1) является оптималь­ным по порядку сложности по общему числу операций, коль скоро используемая им сортировка имеет сложность O(nlogn) по числу сравнений.

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