Читайте также:
|
|
К задачам сортировки могут быть за линейное время сведены следующие классические задачи
Задача 1. Найти все различные элементы множества { A1,…,AN }, где – Ai, например, целые или вещественные числа.
Задача 2. Определить, все ли элементы в множестве A={A1,…,AN } различаются, где – Ai, например, целые или вещественные числа.
Задача 3. Определить, совпадают ли два множества { A1,…,AN } и { B1,…,BN }, где Ai, Bi, например, – целые или вещественные числа.
Т.о., мы получаем, что для всех трех приведенных задач верхняя оценка времени решения равна Q (N log N).
Можно задаться вопросом: а можно ли решить эти задачи быстрее? Заметим, что Задача 2 может быть за линейное время сведена к Задаче 1, поэтому если мы докажем, что нижняя оценка времени решения Задачи 2 есть Q(N log N), то тем мы докажем неулучшаемость полученной оценки для Задачи 1.
Задача 2 относится к классу задач о принятии решения. Это значит, что на выходе таких задач выдается всего один бит информации, т.е. ответ ` да ’ или ` нет ’. Мы будем рассматривать алгоритмы решения задач о принятии решений, которые сводятся к бинарному дереву принятия решений. Под деревом принятия решений имеется в виду следующее. Пусть на входе нашего алгоритма находится вектор входных данных aÎIR N. Рассмотрим бинарное дерево, в каждой вершине которого вычисляется некоторая функция от вектора a и в зависимости от знака этой функции происходит переход на правую или левую ветвь дерева. Каждая конечная вершина дерева будет называться либо принимающей либо отвергающей, в зависимости от приписанного ей соответствующего атрибута. Достижение принимающей вершины означает выдачу алгоритмом ответа ` да ’, а отвергающей, соответственно, - ` нет ’.
Дерево принятия решений называется алгебраическим деревом принятия решений степени n, если функции в вершинах дерева являются многочленами степени не выше n.
Далее мы рассмотрим лишь алгоритмы, представимые в виде алгебраического дерева принятия решений степени 1. Мы будем предполагать, что время вычисления каждой функции в вершине дерева есть Q(1). Приведенная далее теорема верна и для деревьев высшей степени, но для ее доказательства потребуются весьма серьезные факты из теории функций, которые мы здесь привести не сможем.
Введем два определения.
Разделимые множества. Множества A, B Ì IR N называются разделимыми (линейно-разделимыми) если " aÎ A, bÎ B найдется cÎ [a,b], такое что с Ï A, сÏ B.
Связное множество. Связным множеством называется такое множество, что при любом его разбиении на два непересекающихся непустых подмножества одно из них содержит точку, предельную для другого. В евклидовом пространстве открытое множество связно тогда и только тогда, когда любые две его точки можно соединить целиком лежащей в нём ломаной.
Теорема. Пусть W Ì IR N – множество точек, на которых решением задачи будет `да’. Пусть # W – количество разделимых связных компонент множества W. Тогда, в рамках алгоритмов, описывающихся алгебраическими деревьями степени 1, время решения задачи есть W(log 2 #W).
Доказательство. Докажем, что количество принимающих вершин дерева принятия решений не меньше # W. Для этого докажем, что все элементы R N, относящиеся к одной принимающей вершине дерева решений находятся внутри одной разделимой связной компоненты W.
Предположим противное: существует принимающая вершина дерева принятия решений, в которую попадает алгоритм при использовании двух различных a,bÎ W, таких что a и b принадлежат различным разделимым связным компонентам Va, Vb Ì W, соответственно. Рассмотрим [a,b]. Линейные функции от N переменных обладают свойством монотонности на отрезке, поэтому все функции, вычисляющиеся в вершинах дерева принятия решений, сохраняют свой знак на [a,b]. Т.о. весь отрезок [a,b] Ì W (т.к. все точки из отрезка обязаны попасть в одно и ту же принимающую вершину). Это противоречит предположению о принадлежности a и b различным разделимым компонентам.
Итак, мы получили, что количество концевых вершин бинарного дерева принятия решений не меньше #W, из чего сразу следует, что высота дерева не меньше [log 2 #W].
¢
Вернемся к решению Задачи 2. Рассмотрим множество W для Задачи 2. Легко увидеть, что W – открыто. Для точки P Î IR N будем называть связной компонентой, содержащей P, множество WP, состоящие из таких точек R, для которых существует ломаная, соединяющая P и R, содержащаяся в W. В силу открытости W множество WP тоже открыто, а значит (в силу определения множества) и связно.
Рассмотрим в качестве различных вариантов входных данных задачи все перестановки последовательности {1,2,…,N}. Т.е.
Ap= {p(1), p(2),…, p(N)}, где p – некоторая перестановка.
Докажем, что каждая последовательность Ap принадлежит своей связной компоненте WAP множества W и что все WAP линейно разделимы. Тогда мы докажем, что каждая принадлежит своей разделимой связной компоненте. Действительно, допустим противное, т.е. пусть две различные последовательности Ap1 и Ap2 принадлежат одной связной компоненте W. Тогда найдутся 1 £ i, j £ N, такие что (p1(i)- p1(j)) (p2(i)- p2(j))<0, т.е. (p1(i)- p1(j)) и (p2(i)- p2(j)) имеют разные знаки. Но тогда для любой ломаной S, соединяющей точки Ap1 и Ap2 Î IR N, найдется x Î S такая, что xi = xj, что противоречит принадлежности Ap1 и Ap2 одной связной компоненте множества W.
Аналогично доказывается, что компоненты WP1 и WP2 линейно разделимы. Действительно, рассмотрим точки p1’ Î WP1 и p2’ Î WP2. Для тех же самых индексов i, j получим, что (p’1(i)- p’1(j)) (p’2(i)- p’2(j))<0, из чего сразу получаем, что на отрезке, соединяющем p’1 и p’2, найдется точка, не принадлежащая W.
В приведенном доказательстве требует объяснения следующий факт: для двух различных перестановок множества {1,2,…,N} всегда найдутся 1 £ i, j £ N, такие что (p1(i)- p1(j)) и (p2(i)- p2(j)) имеют разные знаки. Пусть для каждой перестановки p: tk – количество чисел p(i) больших p(k) для i>k. Легко увидеть, что p и t однозначно задают друг друга.
Действительно, для p(i)=N имеем t(i)=0, причем для j<i выполняется: t(j)>0. (отметим, что t(i)=0 может выполняться и для других i) Поэтому если мы найдем минимальное i такое, что t(i)=0, то сразу получим, что p(i)=N; далее мы ищем минимальное i такое, что t(i)=1, и получаем, что p(i)=N-1, и т.д.
Т.о. для двух различных перестановок p1 и p2 мы получим различные соответствующие t1 и t2. Выберем i: t1(i) ¹ t2(i). Пусть, например, t1(i) > t2(i), но тогда найдется j>i, такое что p1(j)> p1(i), но p2(j)< p2(i). Получили требуемое.
¢
Итак, мы доказали, что верна следующая
Теорема. Задачи 1 и 2 имеют нижнюю оценку времени решения O(NlogN) на алгоритмах, основанных на алгебраическом дереве принятия решения первой степени.
Для Задачи 3 также можно доказать аналогичную теорему:
Теорема. Задача 3 имеет нижнюю оценку времени решения O(NlogN) на алгоритмах, основанных на алгебраическом дереве принятия решения первой степени.
Для доказательства рассмотрим все пары последовательностей {1,2,…,N} и {s1,s2,…,sN} для всех перестановок s. Назовем эти последовательности A и Bs. Покажем, что количество принимающих вершин любого алгебраического дерева принятия решения первой степени, решающего заданную задачу, не меньше, чем количество всевозможных пар {A, Bs}. В этом случае мы сразу получим, что высота дерева принятия решения будет не меньше Q (log(N!))= Q (N log N), что докажет нашу теорему.
Доказательство требуемого факта тривиально. Нам достаточно доказать, что никакие две различные пары {A, Bs} и {A, Br} не могут попасть в одну принимающую вершину данного дерева принятия решений. Докажем данный факт от противного.
Пусть есть две различные пары {A, Bs} и {A, Br}. Тогда найдется индекс i для которого ri≠si. Рассмотрим пары последовательностей {A, Bst}, для которых все элементы Bst совпадают с соответствующими элементами Bs, кроме элемента с индексом i, равным t, который должен лежать в интервале (Min(ri,si), Max(ri,si)). Тогда, с одной стороны любая пара {A, Bst} должна попасть в ту же принимающую вершину (в силу проверки линейных соотношений в каждой вершине дерева), а с другой, среди возможных значений t обязательно найдется значение, не встречающееся в последовательности Br. Получаемое противоречие завершает доказательство.
¢
Заметим, что Задача 3 также, как и Задача 2, может быть сведена к Задаче 1.
Лекция 4
Дата добавления: 2015-10-30; просмотров: 158 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Оценки времени работы алгоритма. | | | Сортировки и связанные с ними задачи. |