КАТЕГОРИИ: Архитектура-(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) |
Линейная сводимость и нижние границы сложности
Нижеприведенная теорема является следствием определения 28.1. Теорема 29.1. Пусть задачи P и Q таковы, что P s= Q. Пусть f (n) — асимптотическая нижняя граница сложности алгоритмов решения задачи P, и при этом соотношение P^Qустанавливается без § 29. Линейная сводимость и нижние границы сложности 191 наложения ограничений на сложность алгоритмов решения задачи Q. Тогда f (n) является асимптотической нижней границей сложности алгоритмов решения задачи Q. Доказательство. Для каждого алгоритма AQ решения задачи Q Если при соблюдении условия этого предложения для какого-то алгоритма AQ решения задачи Q имеет место оценка TA (n) = = O (f (n)), то этот алгоритм будет оптимальным по порядку сложности и TA (n) = в(f (n)). (При наличии ограничений на сложность q алгоритма AQ, когда фактически предполагается, что AQ принадлежит некоторому классу J2, речь должна бы идти об оптимальности по порядку сложности в классе 21; но если ограничения таковы, что в класс £2. попадают наиболее рациональные алгоритмы, то упоминание класса Ш не обязательно.) Пример 29.1. Вновь рассмотрим задачу построения выпуклой оболочки конечного множества точек с помощью арифметических операций и сравнений. Многоугольник, являющийся выпуклой оболочкой, представляется массивом своих вершин в порядке их следования при обходе в некотором направлении, обычно против часовой стрелки, начиная с некоторой вершины. Мы покажем, что задача сортировки массивов вещественных чисел с помощью арифметических операций и сравнений линейно сводится к задаче построения выпуклой оболочки в этой постановке, считая, что в этих задачах затраты измеряются общим числом арифметических операций и сравнений. Но если порядок вершин выпуклой оболочки, которую надо построить, может быть произвольным, то задача меняется, и про нее мы ничего не утверждаем. Пусть x1,x2,...,xn — данный массив попарно различных вещественных чисел. Решив задачу построения выпуклой оболочки множества точек с координатами (x 1, x21), (x2,x 22 ),..., (xn,xn2) (см. рис. 23), мы можем, двигаясь по вершинам построенного многоугольника, найти вершину с наименьшей абсциссой, а затем построить массив вершин в порядке возрастания абсцисс. Сложность этой дополнительной части работы допускает оценку O(n). Легко видеть, что сложность любого алгоритма построения выпуклой оболочки не Глава 7. Сводимость
х Рис. 23. Сведение сортировки чисел xt,x2, ■■■,хп, отмеченных на оси абсцисс, к построению выпуклой оболочки точек (хих*), {х2,х\),..., {хп,х2п). может быть меньше чем п. Таким образом, каждому алгоритму А построения выпуклой оболочки мы сопоставляем алгоритм сортировки со сложностью 0{ТА{п)). Следовательно, задача сортировки вещественных чисел с помощью арифметических операций и сравнений линейно сводится к задаче построения выпуклой оболочки. Из результатов § 14 следует, что любая сортировка с помощью сравнений массивов длины п имеет сложность не менее log2 п\. Но при построении выпуклой оболочки используются как сравнения, так и арифметические операции. Можно ли, привлекая помимо операций сравнения еще и арифметические операции, предложить алгоритм сортировки массивов вещественных чисел, сложность которого по числу сравнений была бы меньше, чем log2 п\, пусть даже при том, что потребовалось бы очень большое число арифметических операций? Ниже мы обосновываем отрицательный ответ на этот вопрос. Дополнительное использование четырех арифметических операций означает, что сравниваться могут не только числа хъх2, ■■■,хп, заданные изначально, но и значения рациональных функций от этих чисел. В качестве знаков сравнения могут использоваться <, >, =, фу ^,;>. Каждая рациональная функция F{хъ х2, ■ ■ ■, хп) записывается как отношение двух полиномов р(х1,х2,...,хп)
F(x1,x2,...,xn) § 29. Линейная сводимость и нижние границы сложности 193 (в этом параграфе мы рассматриваем рациональные функции и полиномы с вещественными коэффициентами). Каждый полином f (x 1, x2,..., xn) можно рассматривать как рациональную функцию f(x1,x2,...,xn) Предполагается, что если алгоритм предписывает сравнение, в котором участвует значение рациональной функции (29.1), то ее знаменатель q(x1,x2,...,xn) не обращается в 0 при рассматриваемых значениях x 1, x2,...,xn. Неравенство F1(x1,x2,...,xn)<F2(x1,x2,...,xn) равносильно, очевидно, неравенству F (x 1 ,x2,...,xn) <0, где F(x1,x2,...,xn)=F1(x1,x2,...,xn)-F2(x1,x2,...,xn). То же самое для сравнений со знаками >, =, ф, ^, ^. Далее будут использоваться два свойства рациональных функций: (R1) Множество точек (x 1, x 2,..., xn)еГ, для которых данная рациональная функция (29.1) неопределена или равна нулю, является замкнутым; в свою очередь, те точки, в которых эта функция определена и имеет значение большее (меньшее) нуля, образуют открытое множество. Это следует из того, что рациональная функция непрерывна на своем множестве определения. (R2) Если рациональная функция (29.1) определена и равна нулю всюду на некотором непустом открытом подмножестве множества Ж n, то ее числитель p (x 1, x2,..., xn) является нулевым полиномом (см. задачу 147). Предложение 29.1. Функция f (n) = [log2 n!] является нижней границей сложности по числу сравнений алгоритмов сортировки массивов длины n попарно различных вещественных чисел c помощью сравнений и четырех арифметических операций. Доказательство.г Каждой из перестановок a = (a 1, a2,..., an)еП n сопоставим сектор Sa — подмножество пространства Ж n такое, что (x 1 ,x2,..., xn) e Sa, если и только если числа x 1, x2,...,xn попарно различны и их относительный порядок совпадает с относительным порядком чисел a1,a2,...,an. Любой сектор является открытым множеством в Ж n. Каждому массиву вещественных чисел с попарно различными элементами x 1, x2,...,xn соответствует точка некоторого !Идея элементарного доказательства сообщена автору С.П.Поляковым. Наиболее раннее (довольно трудное для понимания) доказательство было опубликовано H. Фридманом в [49]. Глава 7. Сводимость сектора пространства Ж". В примере 14.2 говорилось, что при фиксированном п любую сортировку массивов длины п можно представить в виде дерева, каждой не являющейся листом вершине v которого приписано сравнение вида xt < х;-, а выходящие из нее ребра имеют метки 1 («да») и 0 («нет»); при этом каждому листу Z приписан набор х; ,х<,...,х;, где (b, i 2,...,*„) — некоторая перестановка чисел 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(x 1, x 2,..., xn), х = G,2(x 1, x 2,..., xn), - = G, n (x 1, x 2,..., xn). Можно считать, что числитель каждой из функций Fv (x l5 x 2,...,хп) не является нулевым полиномом, — в противном случае вершину v можно было бы удалить из дерева вместе с выходящей из нее ветвью, начинающейся с помеченного единицей ребра. Множество JV тех точек Ж", в которых обращается в нуль числитель хотя бы одной из рациональных функций Fv (x l5 x 2,...,хп), в силу свойства (R1) является замкнутым, причем это множество не может покрывать целиком ни один из секторов. Иначе в силу свойства (R2) произведение всех числителей рассматриваемых рациональных функций было бы нулевым полиномом, а это означало бы, что один из сомножителей этого произведения—нулевой полином. Таким образом, каждое из множеств S; = S;\JV, i = l,2,..., n!, есть непустое открытое множество. Покажем, что для массивов, соответствующих точкам из S't, i = l,2,..., п\, рассматриваемая сортировка в худшем случае требует не менее [log2 n!l сравнений. § 30. Классы P и NP Будем говорить, что точка (x ъ x 2,..., xn) некоторого сектора согласуется с листом l дерева D, если соответствующая дереву D сортировка массива x ъ x 2,..., 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 (x 1, x 2,..., xn) = xs при (x1,x2,...,xn)&U1 и Gk (x 1, x 2,..., xn)= xt при {xъx2,...,xn)&U2. Но значения рациональной функции на одном из множеств Uъ U2 однозначно определяют значения этой рациональной функции всюду на Uг и U2 (это выводится из свойства (R2)), поэтому из того, что, например, Gk (x ls x 2,..., xn) = xs на Uъ следует, что Gk (x l5 x 2,..., xn) = xs на U2. Но мы знаем, что Gk (x l5 x 2,..., xn) =xt на U2. Так как s / t, то в любом секторе xsфxt, в частности, это так и в секторе, подмножеством которого является U2. Противоречие. □ Из доказанного предложения следует, что f (n) = n log n является асимптотической нижней границей сложности алгоритмов сортировки массивов длины n попарно различных вещественных чисел c помощью сравнений и четырех арифметических операций. По теореме 29.1 эта функция является также асимптотической нижней оценкой для алгоритмов построения выпуклой оболочки. Любой алгоритм построения выпуклой оболочки с помощью арифметических операций и сравнений, который имеет сложность O (n log n), является оптимальным по порядку сложности по общему числу операций, и его сложность есть G(n log n). Алгоритм Грэхема построения выпуклой оболочки (пример 3.1) является оптимальным по порядку сложности по общему числу операций, коль скоро используемая им сортировка имеет сложность O (n log n) по числу сравнений. § 30. Классы Р и NP Цель этого и следующих параграфов—дать общее, без многих деталей, представление о некоторых проблемах, касающихся алгоритмов Глава 7. Сводимость полиномиально ограниченной сложности (см. § 5, определение 5.2) или, другими словами, полиномиальных алгоритмов. Подход, согласно которому алгоритмы подразделяются на полиномиальные и все остальные, далеко не всегда является продуктивным с практической точки зрения (алгоритм со сложностью п100, где п —размер входа, вряд ли найдет массовое применение), но при более широком взгляде этот подход имеет свою логику. Если для решения важной задачи никак не удается найти алгоритм, сложность которого хотя бы при каком-нибудь показателе d допускала бы оценку 0{nd), то сам вопрос о существовании такого алгоритма нельзя назвать праздным. Иногда бывает очень трудно установить принадлежность или соответственно непринадлежность задачи классу P, состоящему из таких задач, для которых существует полиномиальный алгоритм решения. В классе P выделяют подкласс Р тех вычислительных задач, где результатом может быть лишь 1 или 0, т. е. фактически «да» или «нет», что типично для задач распознавания. К этим задачам относится, например, задача распознавания выполнимости булевой формулы, задача распознавания существования в графе гамильтонова цикла и т. д. Неизвестно, существуют ли полиномиальные алгоритмы их решения, но сравнительно легко устанавливается их принадлежность специальному классу NP. Определение класса NP будет дано ниже, из него будет следовать, что Р с NP. Если бы было доказано, что Р = NP, то в широком спектре случаев мы бы легко устанавливали принадлежность задачи распознавания классу Р, т. е. устанавливали бы существование полиномиального алгоритма распознавания; его разработка—это отдельный вопрос. Но равенство P = NP по сей день не доказано, и есть основания подозревать, что оно неверно. Возникает проблема Р = NP, о которой мы тоже будем говорить. Вначале скажем о ряде ограничений, налагаемых на рассматриваемые задачи. Во-первых, речь будет идти о задачах распознавания тех слов в данном алфавите Л, которые принадлежат оговоренному подмножеству (языку) L множества всех слов Л* в этом алфавите. Все объекты, о которых идет речь в рассматриваемых задачах, должны быть представлены (закодированы) словами в алфавите Л, входом алгоритма является одно-единственное слово в алфавите Л. Размер входа х —это всегда длина |х| (число букв) в слове х. Вычислительные затраты должны учитываться достаточно тщательно, неучтенной может оставаться лишь незначительная часть операций (во всяком случае, допускающая полиномиальную верхнюю оценку). Если имеется в виду модель вычислений РАМ, то предполагается, что вычисле- § 30. Классы PuNP ния выполняются на базе конечного множества операций с тем или иным числом операндов, преобразующих буквы алфавита Л в буквы алфавита Л; исследуется сложность по числу этих операций — подобие битовой сложности. Требуется также учет числа присваиваний в ходе выполнения алгоритма. Таким образом, содержательная задача распознавания (например, задача существования пути с фиксированными свойствами в заданном графе) должна быть для обсуждения ее принадлежности классам Р и NP переформулирована в виде задачи распознавания принадлежности заданного слова некоторому языку. Такая формализация необходима потому что одна и та же математическая идея при одном из двух разных способов представления данных может приводить к полиномиальному алгоритму, а при другом—нет. Часто при обсуждении проблемы Р = NP исходят из машины Тьюринга (МТ) как модели вычислений, при этом вычислительные затраты измеряются числом тактов работы машины. Это связано с тем, что модель МТ удобнее модели РАМ при доказательстве разного рода теорем об алгоритмах, в особенности — теорем о невозможности алгоритмов с теми или иными свойствами. Но модель РАМ ближе, чем МТ, к реальным вычислительным устройствам, и хотелось бы, чтобы результаты исследования классов Р и NP, проводимые на основе модели МТ, сохраняли свою значимость для модели РАМ. Их значимость действительно сохраняется, о чем будет сказано в конце этого параграфа, а до той поры мы, как правило, не будем делать уточнений относительно модели вычислений. Но, повторяем, операции преобразования букв, входящих в слова, должны подсчитываться тщательно. По сути дела, в каждой задаче распознавания принадлежности слова языку L обсуждается некоторый предикат и(х), областью определения которого является все множество Л*, и и (х) = 1, если и только если х е L. В дальнейшем нам часто будет удобно говорить не о языках, а о предикатах (по существу, это, конечно, одно и то же, но предикаты несколько предпочтительнее из-за того, что к ним можно применять логические операции, кванторы и т.д.). Соответственно, мы будем говорить о принадлежности предиката классу Р и т. д. Иногда нам будет удобно рассуждать о предикатах не одной, а нескольких таких переменных, которые принимают значения в Л*. В этих случаях без специального упоминания предполагается, что в алфавит Л включены некоторые разделители: если, скажем, разделитель «запятая» (т.е. «,») включен в Л, то v (x, у) имеет один аргумент х, у, где х и у суть слова в Л*, не содержащие разделителя «,» (кавычки по- Глава 7. Сводимость ставлены, чтобы не нарушать пунктуацию фразы). Соответственно, длиной пары слов x, y является | x | + | y\ + 1. Теперь обсудим класс предикатов NP. Само его странное обозначение NP есть не что иное, как аббревиатура от английских слов nondeterministic polynomial —недетерминированный полиномиальный. Изначальное определение класса NP, появившееся в теории сложности в начале 70-х годов XX столетия, опиралось на понятие недетерминированного алгоритма1. Позднее появилось эквивалентное определение, не прибегающее к недетерминированности. Определение 30.1. Заданный на Л* предикат u (x) принадлежит классу NP, если существуют предикат R (x, y) е Р и полином p{n) такие, что u{x) можно представить в виде u{x) = З y еЛ,;| y К p (| x |) R x, y). (30.1) В том случае, когда u (x) = 1, слово y называется сертификатом слова x. Пример 30.1. Булева формула f (x l5 x 2,..., xn) выполнима, если су- ществуют значения x °, x °,..., xn ° g {0,1} переменных xг,x2,...,xn та- кие, что f (x °, x °,..., xn °) = 1; в противном случае булева формула невыполнима. Так, булева формула ( x iV x a) (30.2) выполнима, так как ее значение при xг = 1, x 2 = 0 равно 1, а булева формула xг Л x! одной переменной xг невыполнима, так как и при xг = 1, и при xг = 0 значение этой формулы есть 0. Любая булева формула может быть закодирована словом в алфавите Л1 = { x,0,1, (,),, л, V}, для этого переменные xг,x2,xъ,... кодируются как x l, x 10, x ll,...: вслед за буквой x помещается номер переменной в двоичной системе. Формула (30.2) кодируется как ( x l V x lO), при этом, например, слово )xlx в алфавите Аг не является кодом какой-либо булевой формулы. Можно предложить простой алгоритм, который проверяет, является ли данное слово в алфавите Лх кодом какой-либо булевой формулы, а также алгоритм, который по данному коду некой булевой формулы и данным булевым значениям (нулям и единицам) тех См., например, [13]. § 30. Классы PuNP переменных, которые фактически присутствуют в этой формуле, находит ее значение. На основе этих двух алгоритмов можно построить алгоритм, который по данному слову хёЛ* и слову у, являющемуся конечной последовательностью нулей и единиц, проверяет, верно ли, что (a) х является кодом некоторой булевой формулы, (b) значение закодированной словом х булевой формулы при тех значениях фактически присутствующих в ней переменных, которые последовательно указаны в слове у, равно 1. (Число нулей и единиц в слове у равно числу переменных, фактически присутствующих в закодированной булевой формуле: например, в булевой формуле x 3V x 15 фактически присутствуют две переменные, хотя для них и использованы большие индексы; сертификатом выполнимости этой формулы служит, например, слово 11.) Такой алгоритм можно сделать полиномиальным. Это говорит о том, что при указанном способе кодирования булевых формул предикат, распознающий выполнимость булевой формулы, принадлежит классу NP, — сертификатом является слово у, указывающее значения переменных, при которых значение булевой формулы равно 1, а значение предиката R{x,у), входящего в (30.1), вычисляется с помощью алгоритма, проверяющего (a) и (b). Полином р{п) можно взять равным п, так как |j| ^ |х| в силу того, что у содержит значения только тех переменных, которые фактически присутствуют в булевой формуле. Неизвестно, принадлежит ли классу Р предикат на словах из Л*, распознающий выполнимость. Алгоритмы проверки выполнимости, основанные на переборе всех возможных комбинаций значений переменных хъ х2,..., хп, не являются полиномиальными. Рассмотренный пример дает мотивацию определения 30.1 и проясняет смысл понятия «сертификат». Отметим два важных момента. 1) Перебор всех возможных слов у, |у|^р(|х|), для проверки равенства и(х) = 1 с помощью (30.1) может потребовать рассмотрения экспоненциального по отношению к |х| числа возможностей. Но определение 30.1 требует лишь, чтобы при и(х) = 1 сертификат существовал, вопрос же о сложности его построения не затрагивается. 2) Если и е NP, то равенство u (x) = 0 означает, что соответствующего сертификата для слова у не существует. Другими словами, принадлежность х множеству истинности предиката подтверждается сертификатом, а непринадлежность —отсутствием сертификата. По- Глава 7. Сводимость этому возможные значения 1 и 0 не являются симметричными или равноправными; как показано в примере 30.1, предикат, распознающий выполнимость булевой формулы, принадлежит NP, но мы не можем на основе только этого утверждать, что и предикат, распознающий невыполнимость булевой формулы, принадлежит NP (какое слово могло бы быть сертификатом невыполнимой формулы?). Предложение 30.1. Р с NP. Доказательство. Определим Д(х, у) = и (х) в (30.1) при любом сло Продолжим рассмотрение примеров. Пример 30.2. Согласно результатам Агравала, Кайала и Саксены (пример 22.2), классу Р принадлежит предикат, определенный на словах в алфавите {0,1} и принимающий значение 1, если и только если слово является записью простого числа. Рассмотрим близкую задачу. Для заданных п, fceN+, к < п, выяснить, имеется ли у числа п делитель Z такой, что 1 < Z s= к. Числа п и к задаются в двоичной системе; используя разделитель «;», мы можем кодировать пару п, к словом в алфавите Л2 = {0,1,;}. Если слово х кодирует указанным образом пару п, к, то в качестве сертификата можно взять двоичную запись некоторого конкретного делителя I, 1 < I < к. Тогда входящий в (30.1) предикат Д(х, у) должен принимать значение 1, если и только если (a) х является кодом пары п, к, удовлетворяющей сформулированным выше условиям, (b) у является двоичной записью некоторого числа Z такого, что Z ^ к и при этом Z | к. Существует алгоритм проверки условий (a), (b), вычислительные затраты которого ограничены величиной С(|х| + |у|)2, где С — некоторая константа. Можно в (30.1) положить р{п) = п, так как Ык. Это говорит о том, что рассматриваемый предикат на Л* принадлежит классу NP. Неизвестно, принадлежит ли он также классу Р. Пример 30.3. В связи с изучением классов Р и NP рассматривается большое число задач на графах, при этом графы, как правило, задаются матрицами смежности. В алфавите Л2 матрица смежности § 31. Существование задач распознавания, не принадлежащих Р 201 кодируется словом, в котором строки матрицы выписаны одна за другой через разделитель «;». Легко видеть, что классу NP принадлежит предикат, принимающий значение 1, если и только если слово является кодом графа, обладающего гамилътоновым циклом, т. е. циклом, проходящим по одному разу через все вершины графа (рис. 24);
Рис. 24. а) Гамильтонов цикл; б) граф без гамильтонова цикла. сертификатом может, например, являться последовательность двоичных номеров вершин гамильтонова цикла. Эти номера выписываются в одно слово через разделитель «;». Аналогичным образом, классу NP принадлежит предикат, принимающий значение 1, если и только если слово является кодом графа, обладающего кликой с заданным числом т вершин. При этом кликой называется набор т вершин, любые две из которых соединены ребром (в изображенном на рис. 24а графе имеется несколько клик с тремя вершинами, но нет ни одной с четырьмя вершинами). Исходные данные кодируются словом в алфавите Л2: сначала идет матрица смежности, записанная так, как было сказано выше, затем, после разделителя «;»,—число т в двоичной системе. Эта задача принадлежит классу NP, сертификатом может быть слово, составленное из двоичных номеров вершин клики, перечисленных через разделитель «;». Относительно обоих этих предикатов на Л2 неизвестно, принадлежат ли они классу Р.
Дата добавления: 2014-01-11; Просмотров: 481; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |