Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные алгоритмы сортировки и поиска

Задачи

Hi

Hi

И.



 



г32



h2


 


Рис. 25. Построение графа GF для вершин, б) проведение ребер.


F = ­xi v ­*2) л (х2) Л (jq v х2): а) выбор


Доказано также, что задача распознавания гамильтоновости графа является NP-полной1. Упомянем еще одну очень известную NP-пол-ную задачу, называемую задачей о рюкзаке. Задано конечное множе­ство U, размер s(u) gN+ и стоимость v (u) gN+ каждого u e U, а также a, b е N+. Существует ли такое подмножество U' с U, что X! s (") ^ а,

2 v (u)^ b? u e U '

u e!7'?

Из теоремы Кука следует, что для решения проблемы Р = NP доста­точно со всей тщательностью рассмотреть какой-нибудь один NP-пол-ный предикат, например, тот же предикат Sat, и ответить на вопрос о его принадлежности классу Р. Если он принадлежит классу Р, то Р = NP в силу NP-полноты рассматриваемого предиката, если не при­надлежит, то Р ф NP, так как найден предикат, принадлежащий NP и не принадлежащий Р. Но этот заманчивый план до сих пор реали­зовать не удалось, усилия многих исследователей не привели к ре­шению этой проблемы, хотя и устоялось мнение, что, скорее всего, РФ NP. Это предположение влечет за собой рекомендацию: если дока­зано, что решаемая практическая задача (при надлежащей формали­зации в виде предиката на словах в алфавите) является NP-полной, то было бы опрометчивостью рассчитывать на нахождение в короткие сроки полиномиального алгоритма ее решения, и лучше попробовать решить эту задачу приближенно.

Многие задачи фактического построения некоторого математиче­ского объекта вписываются в следующую схему: дано х; если су­ществует у такое, что х вместе с у удовлетворяют фиксированно­му условию R{x,y), то найти такое у. Соответствующая задача рас-

Огромное число примеров NP-полных задач собрано в [13].



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


познавания выглядит так: дано х; требуется определить, существует ли у такое, что х вместе с у удовлетворяют фиксированному условию R{x,у). Мы полагаем, что х и у — это коды некоторых математиче­ских объектов, т. е. слова в некотором алфавите Л.

Пусть задача распознавания связана указанным образом с задачей построения, пусть R{x, у)еР и полином р таков, что если существу­ет какое-то решение задачи построения, то существует и такое реше­ние у, что |у|^р(|х|). Тогда задача распознавания принадлежит NP в соответствии с определением 30.1, причем в качестве сертификата для х выступает это решение у.

В примерах из § 30 по рассмотренным задачам распознавания лег­ко восстанавливаются соответствующие им задачи построения (по­строить набор логических значений переменных; построить делитель данного числа; построить клику в графе, имеющую определенное ко­личество вершин, и т.д.). Для доказательства принадлежности клас­су NP задачи распознавания мы брали в качестве сертификата само решение соответствующей вычислительной задачи.

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

Быстрый алгоритм распознавания наличия какого-то математиче­ского объекта, кодируемого словом из Л*, может в некоторых случа­ях позволить быстро решать и задачу фактического построения этого объекта. Проиллюстрируем это примером.

Пример 32.3. Мы знаем, что задача распознавания простоты нату­рального числа п принадлежит классу Р, — алгоритм Агравала, Кай-ала и Саксены (пример 22.2) имеет битовую сложность 0{т1г), где т — битовая длина п. Вопрос о существовании полиномиального ал­горитма факторизации (разложения на простые множители) остается без ответа до сих пор при том, что алгоритмы факторизации имеют огромную важность, например, для криптографии. Вернемся в связи с этим вопросом к принадлежащей NP задаче, рассмотренной в при­мере 30.2: для заданных п, k е N+, к < п, выяснить, имеется ли у чис­ла п делитель I такой, что 1 < I s= к. Полиномиальный алгоритм реше-


Задачи



ния этой задачи тоже неизвестен, но можно показать, что открытие такого алгоритма—назовем его A — автоматически дало бы полино­миальный алгоритм факторизации (кстати сказать, существование A автоматически следовало бы из равенства Р = NP, если бы оно вдруг было доказано). Для этого можно воспользоваться бинарным поис­ком.

Пусть уже установлено, что n не имеет делителей, меньших n1, где n1 < n, и пусть n2 таково, что n1 < n2 < n, и мы интересуемся наи­меньшим принадлежащим отрезку [nг, n2] простым множителем чис-

Г n 1+ n 21

ла n. Тогда, применяя Aкn, n 3, где n 3 = — —^£, мы сузим диапазон поиска примерно вдвое: в зависимости от результата применения A мы перейдем от отрезка [nъ n2] либо к отрезку [nъ n 3], либо к отрез­ку [ n 3 + 1, n2]. Первоначально же полагаем nг = 2,n2 = n. Применив алгоритм A не более m = [log2(n + 1)1 раз, мы найдем наименьший простой множитель t числа n. Повторяем те же вычисления для

n' = t (32.2)

и т.д. Общее число простых множителей числа n с учетом их крат­ности ограничено сверху величиной log2 n, и, значит, величиной m. Битовые затраты каждого деления (32.2) не превосходят Cm2, где C — некоторая константа. Если битовая сложность алгоритма A есть O{md), то сложность описанного алгоритма факторизации будет до­пускать оценку O{md+2), т.е. этот алгоритм будет полиномиальным.

145. Задача умножения квадратных булевых матриц линейно сводится к задаче построения транзитивно-рефлексивного замыка­ния (предполагается, что для сложностей рассматриваемых алгорит­мов построения транзитивно-рефлексивного замыкания выполнено Tn) = O (T (n))).

Указание. Пусть Mг и M 2—две булевы матрицы порядка n. Пусть X — бу­лева матрица порядка З n:

0 0 M 2. \0 0 0 /

Чему равны X2,X3? Воспользоваться формулой (23.1) для транзитивно-ре­флексивного замыкания.



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


146. Здесь речь идет о линейной сводимости P^Q задач, связан­
ных с мультипликативными операциями над квадратными числовы­
ми матрицами порядка п. Рассматриваются лишь такие алгоритмы
решения задачи Q, для сложности по числу арифметических опера­
ций каждого из которых выполняется соотношение Т (кп) = 0(Т (п)),
к = 2,3.

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

а) умножения симметричных квадратных матриц;

б) умножения верхних треугольных матриц;

в) обращения невырожденных матриц.

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

fln М 1 0 V1

0 1п М2, V0 0 1п) где M1,M2 — исходные матрицы, 1п — единичная матрица порядка п.

147. а) Доказать свойство (R2) рациональных функций, сформули­
рованное в § 29.

Указание. Достаточно доказать, что если полином р(х 1, х2,...,хп) тожде­ственно равен нулю на некотором непустом открытом множестве U аШп, то этот полином нулевой. При п = 1 утверждение очевидно. Пусть п > 1 и точ­ка v = (v 1, v 2,..., vn)eIR n такова, что р(у 1, v 2,..., v) ф 0. Пусть ueU. Множе­ство U — открытое, поэтому у точки и существует окрестность некоторого радиуса г > 0, целиком принадлежащая U. Пусть I — расстояние от и до v, а с12,...,сп —координаты вектора единичной длины, направленного из и в v. Если t пробегает множество Ж, то формулы

x1 = u1+c1t, x2 = u2+c2t,..., xn=un+cnt (32.3)

задают прямую в Шп, причем при t = 0 получается точка и, а при t = l — точ­ка v. Остается рассмотреть для полинома p (t) одной переменной t, получаю­щегося подстановкой (32.3) в р(х12,...,хп), его значения в точке t = l и на интервале -г <t<r.

б) Для каких целых n ^ 1 справедливо утверждение, что ес­ли произвольный полином с вещественными коэффициентами от х 1, х2,...,хп обращается в нуль на бесконечном подмножестве мно­жества Ж", то этот полином является нулевым?

148. Функция /(n) = |"log2 n!l является нижней границей сложно­
сти по числу сравнений алгоритмов сортировки массивов длины п


Задачи



попарно различных рациональных чисел c помощью сравнений и че­тырех арифметических операций (в предложении 29.1 речь шла о сор­тировке вещественных чисел).

149. Функция /(n) = [log2(n + 1)1 является нижней границей слож­
ности по числу сравнений алгоритмов поиска места элемента в упо­
рядоченном массиве длины п попарно различных вещественных чи­
сел c помощью сравнений и четырех арифметических операций.

15 0. Пусть известен алгоритм, который по данным с,т, с > 1,

т е N+, строит т значащих двоичных цифр числа - (построить

с т значащих цифр некоторого числа х, 0 < х < 1, — это в данном

контексте означает отыскать первую ненулевую цифру после запя­той в двоичной записи этого числа, а затем отбросить все цифры после т цифр, отсчитанных от найденной), и пусть сложность этого алгоритма есть 0(f(m)), где /(т)—некоторая функция такая, что до­полнительно известен алгоритм умножения произвольных a, b е N+, сложность которого тоже есть 0(,f(m)), где m = max{A(a), А(Ь)}. На основе этих двух алгоритмов сконструировать алгоритм построения частного и остатка от деления положительных целых а и Ъ, имеющий сложность 0(f(m)), m = max{A(a), А(Ь)}.

Указание. Нужно построить q и г такие, что a = qb + r, 0 sj г < Ъ, или a-=q + s, 0^5 < 1. Возникновение погрешности при вычислении - может привести к тому, что найденное q будет отличаться на 1 от точного значе­ния; несколько добавочных проб помогут найти точные q и г, не изменяя оценки 0(f(m)) для сложности.

15 1. Пусть о 0 и jo удовлетворяет неравенствам у ^ у0 ^ -; пусть
последовательность Уо,Ут_,У2> ■■■ получена по рекуррентной формуле

yi = 2yi-1-ciyfL - 1 , i = l,2,...

Тогда последовательность Уп, y -i, ••• сходится к -.

152. (Продолжение предыдущей задачи.) Пусть c eN+. Справедли­
во следующее утверждение г. Пусть у0 удовлетворяет неравенствам

9~ ^ Уо ^ ~~ и последовательность УсъУъУг» ••• получена по рекуррент­ной формуле

Vi,

yi=2yi-1-ciyf1, i = l,2,..., (32.4)

См. [5, разд. 8.2].



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


где

• целое с; таково, что А(сг) = А(с), и если А(с) > 2*, то первые 2г цифр числа С; совпадают с соответствующими цифрами числа с, а по­следующие цифры суть нули, если же А(с) ^ 21, то q = с;

• jo получается из у0 отбрасыванием всех цифр после первой зна­чащей цифры;

• после вычисления значения у, i > 0, по рекуррентной форму­ле (32.4) в нем отбрасываются все цифры, идущие после пер­вых 21 значащих цифр,—это дает значение у.

Тогда первые Т - 3 значащие цифры числа у{ совпадают с соответ­ствующими цифрами числа - при i > 1. Считая этот факт установ-ленным и используя решение задачи 150, доказать, что задача де­ления одного целого числа на другое с остатком линейно сводится к задаче умножения двух целых чисел. (Размером входа считается m = max{A(a), А(Ь)}, где а и Ъ — исходные числа, при этом считаем, что m есть число вида 2к; всюду подразумеваются битовые затраты; если это нужно, можно считать, что сложность /(т) умножения удо­влетворяет условиям /(m) sS/(2 m) s= 4/(т)).

Указание. Соответствующий алгоритм построения частного и остатка уже описан в этой задаче и задаче 150. Достаточно доказать, что алгоритм при­ближенного обращения с, описанный в этой задаче, имеет сложность R(2k) такую, что R(2k) Ц yf(2k) для некоторой константы у. Подобрать у так, чтобы доказательство проводилось индукцией, и индуктивный переход был основан на неравенстве

R(2k)^R(2k-1) + 2f(2k-1) + 52k-\

где константа 5 определяется, в частности, тем, какой алгоритм сложения чисел используется.

153. Верно ли, что для доказательства того, что Р = NP, достаточно показать, что хотя бы одна задача из NP принадлежит Р?

154. Существуют ли в NP задачи, не являющиеся NP-полными?

155. Если бы оказалось, что полиномиального алгоритма распо­знавания простоты натурального числа не существует (забудем об алгоритме Агравала, Кайала и Саксены), то из этого бы следовало, что Р ф NP.

156. Дизъюнктивная нормальная форма (ДНФ) определяется как

C 1V C 2V...V Cm J q = (ZaAZ;2A...AZ;fc.), i = l,2,..., m,

при этом каждое Ц является литералом. Задача выполнимости ДНФ принадлежит Р.


Задачи



157. Найти ошибку или пробел в следующем доказательстве того, что Sate Р. Очевидно, что любую КНФ можно преобразовать в экви­валентную ДНФ (см. задачу 156), поэтому задача выполнимости КНФ сводится к задаче выполнимости ДНФ, а эта задача принадлежит Р.

158. Для выполнимой булевой формулы назовем соответствующий набор значений переменных выполняющим. Если Р = NP, то существу­ет полиномиальный алгоритм, который строит выполняющий набор для данной булевой формулы, если эта формула выполнима, и пустое слово, если формула невыполнима.


Приложение A

А1. Сортировка

Для простоты считаем, что требуется упорядочить по возрастанию числовой массив х1, х2,..., хп с попарно различными элементами. Раз­мер входа — число п. Мы называем сегментом массива х 1 2,...,хп любую его часть х, xi+1,..., хк- 1, xk, 1^i^k^n, которая по условию или по построению является упорядоченной.

1. Пузырьковая сортировка. Последовательным просмотром всех
х 1, х2,...,хп определяется x t такое, что Xj >xi +1; затем x t и xi+1 ме­
няются местами, просмотр продолжается с элемента xi+1 и т.д. Тем
самым в результате первого просмотра всего массива наибольший
элемент передвинется на последнее место. Следующие просмотры на­
чинаются опять сначала, после уменьшения на единицу количества
просматриваемых элементов. Массив будет упорядочен после про­
смотра, который охватывал только первый и второй элементы, или
же раньше, если при некотором просмотре не обнаружено x t такого,

что Xi>Xi+1.

2. Сортировка выбором. Выполняется п - 1 шаг. На i -м шаге (i = = 1, 2,..., п - 1) среди элементов х1, х1+1,..., хп отыскивается наимень­ший и переставляется с xt.

3. Сортировка простыми вставками (два варианта). Пусть по­сле нескольких шагов сортировки элементы х 1, х2,...,Х; уже упорядо­чены (образуют сегмент): х 1 2 <... <xt. Тогда на следующем шаге элемент x t вставляется в этот сегмент таким образом, что элементы х 1, х2,...,xi+1 оказываются упорядоченными (сегмент расширяется). В конечном счете получаем сегмент х 1 2,...,хп. В первом варианте сортировки место вставки определяется последовательными сравне­ниями xi+1 с X;, х(-1,..., во втором — последовательными сравнения­ми xi +1 с х12,...


Основные алгоритмы сортировки и поиска



4. Сортировка бинарными вставками. Отличается от сортиров­ки простыми вставками тем, что место xt в сегменте x1,x2,...,xi_1 определяется алгоритмом бинарного поиска (см. A2, п. 4).

5. Сортировка слияниями. Разнообразные виды этой сортировки используют слияние сегментов. Сначала мы рассмотрим процедуру слияния, а затем опишем два варианта сортировки, основанной на этой процедуре.

Слияние. Пусть для элементов массива е12,...,ет выполнено

е1 <е2<... <ек и ек+1 <ек+2<...<ет, к^ГП. Массив /1, /2, ...,fm, кото­рый является результатом слияния массивов е 1, е2,..., ек и ек+1, ек+2,......,ет, можно получить за т шагов. После i -го шага элементы f1,f2,...,fi уже имеют нужные значения, целые р и q (p + q = i) по­казывают, сколько элементов из числа е12,...,ек и ек+1к+2,...,ет уже использовано.

Рекурсивный вариант сортировки слияниями. При п = 1 мас­сив упорядочен. Пусть п > 1, тогда массив х 1, х2,...,хп разбивает­ся на два примерно равных по длине подмассива х 1, х2,..., x L n/ 2j и x\_n/2\+1,x\n/2\+2,...,хп. Сортировка применяется рекурсивно к этим подмассивам, после чего выполняется слияние.

Сортировка фон Неймана. Первоначально элементы массива х 1, х2,...,хп рассматриваются как упорядоченные одноэлементные сег­менты. Затем в массиве У 1 2,..., уп образуются упорядоченные сег­менты длины 2, получающиеся слиянием х 1 и х2, х3 и х4, х5 и х6,... Последний сегмент будет иметь один или два элемента в зависимо­сти от четности п. Полученные сегменты сливаются в упорядоченные сегменты длины 4 (кроме последнего, который тоже упорядочен, но, возможно, имеет длину 1, 2 или 3), они последовательно попадают в массив х 1, х2,...,хп. Процесс укрупнения сегментов продолжается дальше. В некий момент массив х 1, х2,..., хп или у 1, у2,..., уп содержит только один упорядоченный сегмент.

6. Быстрая сортировка. Эта сортировка основывается на проце­
дуре разбиения массива. Перед описанием сортировки мы рассмот­
рим эту процедуру.

Разбиение. Берется первый элемент массива и сравнивается со всеми остальными. Меньшие его элементы помещаются в начальную часть массива, большие — в конечную. Сам первоначально взятый элемент помещается между этими двумя частями, это—то место, ко­торое ему надлежит занимать в упорядоченном массиве. Дополни­тельный массив для этой процедуры не требуется, достаточно двух переменных р и q, показывающих, сколько элементов в начальной



Приложение A


и конечной частях уже занято. Элемент, взятый первым, расположен на (р + 1)-м месте и сравнивается со следующим за ним. Равенство р + q = п - 1 означает, что разбиение завершено.

Сортировка. Выполняется разбиение; в результате элемент, ранее располагавшийся в массиве первым, занимает нужное место (с неко­торым номером к, 1 ^ к ^ п). Затем быстрая сортировка применяется рекурсивно к сегментам хг2,...,хк-г и хк+ъ хк+2..., хп.

А2. Поиск

Числовой массив хъх2,...,хп имеет попарно различные элементы. В п. 4 элементы предполагаются упорядоченными по возрастанию.

1. Поиск наименьшего. Просматриваются последовательно х2, х3,...,хпи каждый новый элемент xt сравнивается с уже найденным наименьшим среди хъ х2,..., х{-х.

2. Поиск m -го наименьшего. Элементы хъх2,...,хп переставля­ются в соответствии с процедурой разбиения (см. алгоритм быст­рой сортировки). Пусть элемент, бывший в исходном массиве пер­вым, после выполнения процедуры стал fc-м, 1 ^ к ^ п. Если т = к, то задача решена. Если т<к, то разыскивается т-e наименьшее сре­ди хг, х2,...,хк-г; если т > к, то разыскивается (m - fc)-е наименьшее среди хк+ъхк+2,...,хп.

3. Одновременный поиск наименьшего и наибольшего. Эле­менты хг2,...,хп просматриваются последовательными парами: хг2, затем х34 и т.д. (последний элемент может остаться без пары). При рассмотрении fc-й пары х2к-ъх2к в ней выбираются наи­меньший и наибольший элементы, которые сравниваются с уже найденными наименьшим и, соответственно, наибольшим среди хг2, ■■■,х2к-2. Если п нечетно, то на последнем шаге хп сравнива­ется с уже найденными наименьшим и наибольшим среди хъх2,...

4. Бинарный поиск места элемента. Кроме упорядоченного мас­сива хг < х2 <... < хп дано число у, для которого априори может осу­ществляться любая из возможностей

у^хг, хг<у ^х2,..., хп-1<у^хп, хп<у.

Этим возможностям присваиваются номера 1,2,...,п + 1. Требует­ся найти номер фактически осуществившейся возможности. Пер­воначальный диапазон поиска — от 1 до п + 1. Каждый шаг би-


Основные алгоритмы сортировки и поиска



нарного поиска сужает диапазон примерно вдвое: если перед оче­редным шагом диапазон был от p до q, то y сравнивается с xr, r =L(p + q) / 2J. При xr<y диапазон дальнейшего поиска —от r + 1 до q (в дальнейшем рассматривается сегмент xr+1,xr+2,...,xq_1), в противном случае — от p до r (в дальнейшем рассматривается сег­мент xp,xp+1,...,xr). И так далее до совпадения границ диапазона.


Приложение B

<== предыдущая лекция | следующая лекция ==>
Полиномиальная сводимость. NP-полные задачи | Оценивание сумм значений монотонных функций
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 463; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.