Труднорешаемые задачи
Как уже говорилось выше, общепринятой является точка зрения, согласно которой алгоритм считается эффективным, если он имеет полиномиальную сложность. Именно таковы все алгоритмы, рассмотренные в предыдущих параграфах. Заметим, однако, что за пределами этих рассмотрений осталась большая часть важных задач. Это, в частности, задачи отыскания в графе наибольшего независимого множества, гамильтонова цикла, k-раскраски и ряд других. Все они характеризовались нами как очень трудные еще до того, как мы приступили к обсуждению алгоритмов. Дело в том, что, несмотря на усилия многих специалистов, для решения подобных задач до сих пор не найдено полиномиальных алгоритмов. Более того, имеются веские доводы, позволяющие предположить, что таких алгоритмов не существует. Обсуждению этих доводов и посвящен данный параграф. Начнем с внесения изменений в вычислительную модель. Будем считать, что каждая ячейка абстрактной вычислительной машины может содержать только 0 или 1, и целые числа рассматриваются в двоичной системе счисления. В соответствии с этим всякое целое число а ≠ 0,1 займет ]log|α|[ ячеек машинной памяти (]х[— наименьшее целое, не меньшее чем х). Рациональное число, не являющееся целым, будем рассматривать в виде несократимой дроби и представлять в машине как упорядоченную пару целых чисел — числитель и знаменатель этой дроби. Время выполнения каждой элементарной операции примем равным сумме длин записей ее операндов в двоичной системе счисления.
Далее будем рассматривать каждую задачу в так называемом распознавательном варианте, когда решение задачи заключается в получении ответа «да» или «нет». Всякий алгоритм решения такой задачи, будучи примененным к соответствующему виду, работает какое-то время и затем, сообщив ответ «да» либо «нет», останавливается. Для некоторых задач их «естественные» постановки уже являются распознавательными. Таковы, например, задачи распознавания изоморфизма, изоморфной вложимости, гамильтоновости, планарности, эйлеровости графов. Однако чаще (а на практике — как правило) исходная постановка задачи является оптимизационной. В оптимизационной задаче требуется выбрать из множества допустимых решений X такое решение х, вес (или стоимость) которого w{x) минимален. В рассмотренных нами оптимизационных задачах в качестве X фигурировали множества остовов, путей с заданной начальной вершиной или паросочетаний данного графа. Каждой оптимизационной задаче сопоставим ее распознавательный вариант, который выглядит следующим образом. По заданным множеству X, весовой функции w и числу k требуется определить, существует ли элемент х € Х такой, что w(x) ≤ k. Очевидно, что имея полиномиальный алгоритм решения оптимизационной задачи, легко получить полиномиальный алгоритм решения соответствующей ей распознавательной задачи. Можно показать, что при довольно необременительных предположениях относительно функции w верно и обратное. Мы не будем на этом останавливаться, поскольку для дальнейшего нам достаточно только знать, что оптимизационная задача «не проще» соответствующей распознавательной.
Итак, далее рассматриваются только распознавательные задачи. Определим Р как класс распознавательных задач, каждая из которых может быть решена некоторым алгоритмом за полиномиальное время. Мы уже знаем, что в этот класс входят задачи о минимальных остовах, кратчайших путях и наибольших паро.сочетаниях (имеются в виду распознавательные постановки этих задач, как было условленоу. В то же время было названо несколько задач, принадлежность которых к классу Р не установлена и считается сомнительной.
Теперь сделаем следующее важное наблюдение. Все задачи, с которыми мы сталкивались до сих пор, независимо от того, установлена их принадлежность классу Р или нет, обладают одним общим свойством: если вход задачи таков, что имеет место ответ «да», то существует полиномиальный алгоритм, доказывающий этот факт. Поясним сказанное на примере. Пусть задача состоит в выяснении, является ли граф гамильтоновым, и пусть поступающий на вход граф G гамильтонов, т. е. в графе G имеется гамильтонов цикл С. Тогда доказательство гамильтоновости графа G заключалось бы в проверке включения C € G. Если, например, граф G задан матрицей смежности, то эту проверку можно выполнить с помощью очевидного алгоритма, затратив О(п) операций. Подчеркнем, что речь идет лишь о существовании полиномиального доказательства — чтобы иметь это доказательство в своем распоряжении, надо знать цикл С. Положение иное, если граф G не является гамильтоновым. В этом случае нельзя утверждать даже, что полиномиальное доказательство этого факта существует. Можно, конечно, перебрать все (|G| — 1)! простых циклов длины |G| полного графа, проверяя каждый раз, содержится ли цикл в графе G. Однако подобное доказательство требует времени по крайней мере O((|G| — 1)!), и, следовательно, не является полиномиальным.
Теперь мы хотим определить еще один класс распознавательных задач, включив в него все задачи, обладающие тем свойством, что если вход задачи имеет ответ «да», то существует полиномиальный алгоритм, проверяющий (доказывающий) этот факт. С этой целью дополним множество обычных операторов, из которых мы составляли алгоритмы, одним особым. Пусть A = А1, А2, ..., Am — последовательность, элементами которой служат обычные операторы и один особый, запись которого имеет вид B(l1, l2), l1 ,l2 €{1, 2, ..., т}. Пусть, далее, Q = q1, q2 ,..., qp — такой список, что qi = l1 либо qi = l2 ( i = 1, р). После того как A и Q заданы, действие особого оператора B(l1, l2) определим так: в результате k-го(k≤p) выполнения этого оператора управление передается оператору Аl1 если qk = l1 , и Аl2, если qk = l2, а при k > р вычисления прекращаются. Итак, последовательности операторов A и списку Q ставится в соответствии обычный (детерминированный) алгоритм. Этот алгоритм будем обозначать через AQ, чтобы подчеркнуть наличие двух компонент A и Q. Список Q будем при этом называть угадывающей последовательностью, а последовательность A — недетерминированным алгоритмом. Подчеркнем особо, что недетерминированный алгоритм не является алгоритмом, а представляет собой чисто абстрактную конструкцию.
Будем говорить, что недетерминированный алгоритм A решает распознавательную задачу за полиномиальное время, если найдется такой полином р(п), что выполняется следующее условие: каждый вход длины п этой задачи имеет ответ «да» тогда и только тогда, когда для негр существует такая угадывающая последовательность Q, что алгоритм AQ, будучи примененным к этому входу, останавливается, сообщив ответ «да», и время его работы не превосходит р(п). Заметим, что согласно этому определению каждому входу с ответом «да» должен ставиться в соответствие свой алгоритм AQ .От этого алгоритма не требуется ничего иного, кроме правильной реакции на свой вход. Поведение алгоритма на всех других входах для нас безразлично.
Задача недетерминированно разрешима за полиномиальное время, если существует недетерминированный алгоритм, решающий ее за это время.
Определим теперь NP как класс всех распознавательных задач, недетерминированно разрешимых за полиномиальное время.
Нетрудно видеть, что Р € NP. Действительно, полиномиальный алгоритм решения всякой задачи из Р можно превратить в полиномиальный алгоритм вида AQ, добавив оператор B(l1, l2) так, чтобы он ни разу не срабатывал. При этом в качестве Q можно взять произвольную последовательность, например, состоящую из одного элемента. Класс NP чрезвычайно широк. Например, большинству задач, встречающихся в предыдущих главах, можно «естественным» образом сопоставить распознавательные задачи. При этом окажется, что почти все они принадлежат NP.
В качестве примера доказательства принадлежности задачи к NP рассмотрим задачу об изоморфном подграфе, которую здесь сформулируем в следующем виде.
Даны два графа G1 и G2, причем VG1 = VG2 = V. Установить, существует ли такая подстановка s: V->V,для которой истинна импликация
Очевидно, что ограничение VG1=VG2, которого нет в определении, приведенном в § 27, несущественно. Удобно рассматривать эту задачу в матричной постановке. Пусть V ={1, 2, ..., п}, А1 и А2 — матрицы смежности графов G1 и G2 соответственно. Обозначим через S матрицу подстановки s (см. § 6). Теперь задачу об изоморфном подграфе можно сформулировать так: определить, существует ли такая матрица подстановки S, что все единицы матрицы SА1S-1 содержатся среди единиц матрицы А2, т. е. что матрица (A2 - SА1S-1) неотрицательна.
Недетерминированный алгоритм A для решения этой задачи выглядит следующим образом. __________________________________
1. Выполнить пп. 2—4 для всех k = 1, п2 и перейти к п. 5.
2.B(3,4).
3. tk:=0.
4. tk:=1
5. Sij := ti(n-1)+j для всех i, j = 1, п.
6. A= SА1S-1
7. Если матрица A2 — А' неотрицательна, то конец и ответ «да». Иначе — конец.
Напомним, что Sij — элемент матрицы S, занимающий позицию (i, j).
Покажем теперь, как выбирать угадывающую последовательность Q. Рассмотрим произвольный вход задачи, имеющий ответ «да». Это — пара симметрических (0,1)-матриц А1 и А2, для которой существует такая матрица подстановки S, что A2 - SА1S-1— неотрицательная матрица. Заменим в матрице S0на Зи1на4ив качестве Q возьмем последовательность элементов этой новой матрицы, выписанных по строкам.
Работа алгоритма AQ состоит из двух этапов. На первом этапе (пп. 1—5) с помощью Q строится матрица подстановки, обеспечивающая изоморфное вложение. Содержанием второго этапа (пп. 6, 7) является проверка того, что матрица S обладает нужным свойством. Полиномиальность алгоритма AQ очевидна.
Напомним, что частными случаями задачи об изоморфном подграфе являются задачи об изоморфизме графов, о существовании в графе гамильтонова цикла или клики заданного размера и ряд других. Таким образом, попутно установлена принадлежность всех этих задач к классу NP. Доказательство этого свойства для других графовых задач проводится, как правило, столь же просто. При этом работа алгоритма AQ, так же как и в предыдущем случае, распадается на два этана: 1) построение некоторого варианта, 2) проверка того, что этот вариант подходящий. Например, в задаче о k-раскраске вершин графа такой алгоритм сначала припишет вершинам графа нужные цвета, а затем проверит, что любые две вершины одного цвета не смежны.
Тот факт, что большинство «естественных» задач входит в класс NP, свидетельствует о чрезвычайной важности вопроса: совпадают ли классы Р и NP? Эта не решенная до сих пор проблема считается важнейшей в науке о вычислениях. Большинство исследователей склоняется к мнению, что P ≠ NP. На первый взгляд ситуация P ≠ NP не лишает нас возможности получить в будущем полиномиальный алгоритм решения какой-либо из задач, названных нами «трудными». Однако это не так. Как оказалось, из P ≠ NP следует, что ни одна из этих «трудных» задач не имеет полиномиального алгоритма, а из существования такого алгоритма для одной из них следует, что Р == NP.
Изложение соответствующих результатов опирается на понятие сводимости одной задачи к другой. Предложение «задача А сводится к задаче В» означает, в общепринятом смысле, что из решения задачи В можно получить решение задачи А. Нам необходимо уточнить это понятие так, чтобы оно учитывало вычислительные затраты, связанные с получением решения одной задачи из решения другой.
Пусть существует полиномиальный алгоритм F, который, будучи примененным ко всякому входу I задачи A, строит некоторый вход F(I) задачи В. Если при этом вход I имеет ответ «да» тогда и только тогда, когда ответ «да» имеет вход F(I), то говорят, что задача А полиномиально сводится к задаче B, и пишут A∞В. Поскольку сводимостей, отличных от полиномиальной, мы не рассматриваем, то слово «полиномиально» в дальнейшем будем опускать и говорить просто «А сводится к В».
Нетрудно показать, что если задача А сводится к эадаче В и В € Р, то и А € Р. Действительно, пусть A — алгоритм решения задачи В и полиномы p1(n), p2(n) таковы, что O(p1(n)) и О(р2(п)) — сложности алгоритмов F и A соответственно. Рассмотрим теперь алгоритм A' решения задачи А,состоящей из двух этапов. На первом этапе вход I задачи А преобразуется алгоритмом F во вход F(I) задачи В. На втором этапе алгоритм A применяется ко входу F(I). Согласно определению F, алгоритм A сообщит ответ «да» тогда и только тогда, когда вход I имеет ответ «да», т. е. алгоритм A' действительно решает задачу А. Выясним теперь его сложность. Если длина I равна n, то F(I) будет построен за время О(p1(п)), и его длина — О(p1(п)). При этом алгоритм A, будучи примененным ко входу F(I), затратит время O(p2(p1(n))). Таким образом, сложность алгоритма A' есть O(p1(n) + p2(p1{n))). Поскольку суперпозиция и сумма полиномов также являются полиномами, то A' — полиномиальный алгоритм.
Точно так же можно показать, что из А ∞В и В ∞С следует А ∞ С.
Задачу А назовем NP-полной, если А € NP и любая задача из NP сводится к А.
Из этого определения и предыдущих рассмотрений сразу следует, что P = NP, если хотя бы одна МР-полная задача входит в Р.
Говоря неформально, каждая NP-полная задача «не проще», чем любая задача из NP. Поэтому, доказав NP-полноту некоторой задачи, мы получаем веские основания считать ее трудной. Для доказательства NP-полноты задачи достаточно установить ее принадлежность к NP и показать, что к ней сводится некоторая NP-полная задача. Чтобы воспользоваться этой схемой, надо иметь в распоряжении хотя бы одну NP-полную задачу.
Первой задачей, относительно которой было показано, что она является NP-полной, была задача о выполнимости. Пусть х1 , х2 , х3 ,…—булевы переменные, принимающие значения «истина» или «ложь», и х1, х2 , х3 — их отрицания. Те и другие в совокупности называются литералами. Пусть символы V и ^ обозначают булевы операции дизъюнкции и конъюнкции соответственно. Формула u1 V u2 V ... V um называется элементарной дизъюнкцией, если u1, u2, ..., um — литералы. Пусть С1 , С2 ,..., Ср — элементарные дизъюнкции. Тогда выражение вида С1 ^ С2 ^ ... ^ Ср называется булевым выражением в конъюнктивной нормальной форме. Булево выражение называется выполнимым, еесли входящим в него переменным можно так присвоить значения «истина» или «ложь», что значением выражения будет «истина». Не все выражения являются выполнимыми. Например, булево выражение выполнимо,
а выражение не выполнимо.
Задача о выполнимости (ВЫПОЛНИМОСТЬ) состоит в определении, является ли данное булево выражение в конъюнктивной нормальной форме выполнимым.
Следующая теорема, приводимая здесь без доказательства, лежит в основе теории NP -полноты.
Теорема (С. Кук, 1971 г.). Задача ВЫПОЛНИМОСТЬ является NP-полной.
В настоящее время известен значительный (и интенсивно пополняющийся) список NP -полных задач. В этом списке находятся почти все задачи, получившие ранее репутацию трудных для алгоритмического решения. Ниже приведены только те из них, с которыми мы сталкивались в предыдущих главах. Некоторые NP -полные задачи.
КЛИКА: Даны граф G и натуральное число k. Определить, содержит ли граф G клику мощности k.
НЕЗАВИСИМОСТЬ: Даны граф G и натуральное число k. Определить, содержит ли граф G независимое k-элементное множество вершин.
ИЗОМОРФНЫЙ ПОДГРАФ: Даны два графа G1=(V,E1) и G2= (V,E2). Определить, существует ли подстановка s: V-> V, для которой истинна импликация (uv € E1)=>(s(u)s(v)€E2).
ВЕРШИННОЕ ПОКРЫТИЕ: Даны граф G и натуральное число k. Определить, существует ли в графе G вершинное покрытие мощности не более k.
ДОМИНИРУЮЩЕЕ МНОЖЕСТВО: Даны граф G и натуральное число k. Определить, существует ли в графе G доминирующее множество мощности не менее k.
ГАМИЛЬТОНОВ ЦИКЛ: Дан граф G. Определить, содержит ли граф G гамильтонов цикл.
ЯДРО: Дан ориентированный граф G. Определить, содержит ли граф G ядро.
ВЕРШИННАЯ (РЕБЕРНАЯ) РАСКРАСКА: Даны граф G и натуральное число k. Определить, существует ли правильная k-раскраска вершин (ребер) графа G.
Рассмотрим в качестве примера доказательство NP-полноты задачи КЛИКА. Пусть Lk — граф, у которого некоторые k вершин образуют клику, а остальные п — k — изолированные вершины. Ранее мы установили, что задача ИЗОМОРФНЫЙ ПОДГРАФ принадлежит NP. Если в этой задаче положить G2 = G,где G— граф,фигурирующий в формулировке задачи КЛИКА, ав качестве G1 выбрать граф Lk , то получим задачу КЛИКА. Следовательно, задача КЛИКА принадлежит NP.
Покажем теперь, что ВЫПОЛНИМОСТЬ ∞ КЛИКА. Пусть В = С1 V С2 V....V Ст — произвольное булево выражение в конъюнктивной нормальной форме, { u1, u2, ..., um} — множество входящих в него литералов. Будем обозначать через С’1 множество литералов, входящих в элементарную дизъюнкцию Сi
Поставим в соответствие выражению В граф G по следующему правилу:
Таким образом, вершины графа G находятся во взаимно однозначном соответствии с вхождениями литералов в элементарные дизъюнкции. Две вершины смежны, если соответствующие вхождения не противоречат друг другу, т. е. элементарные дизъюнкции различны и оба литерала могут одновременно принять значение «истина».
Пусть в графе G имеется клика размера k = т. Этой клике соответствует набор таких т вхождений ui1 € С’1 ui2 €С’2 , .., uim € С’m, что uii≠uii. Поэтому после присвоения всем ui j(j=1,m) значения «истина» выражение В также примет это значение, т. е. В — выполнимое выражение.
Наоборот, предположим, что В — выполнимое выражение. Пусть переменным присвоены значения «истина» или «ложь» так, что выражение В получило значение «истина». Тогда каждая элементарная дизъюнкция С1 должна содержать литерал ui j имеющий значение «истина». Ясно, что при этом ui а ≠ ui t. Следовательно, т вершин u1i1 , u2 i2,…, um Ii m попарно смежны в графе G, т. е. образуют клику размера т. Таким образом, выражение В выполнимо тогда и только тогда, когда в графе G имеется клика размера k = т. Легко видеть, что построение графа G по выражению В можно выполнить за время О(р(п)), где р(п)—полином, а п — длина записи выражения В (длина входа задачи ВЫПОЛНИМОСТЬ).
Имеется ряд задач, входящих в NP, для решения которых до сих пор не найденополиномиальных алгоритмов и относительно которых неизвестно, являются ли они NP-полными. Наиболее заметной графовой задачей среди них является задача об изоморфизме графов.
С другой стороны, большинство встречающихся на практике задач не являются распознавательными и, следовательно, не принадлежат классу NP. В то же время ко многим из них удается свести некоторые NP-полные задачи. В этой ситуации полезным оказывается следующее определение. Задача называется NP-трудной, если к ней сводится некоторая NP-лолная задача. Новый термин позволяет, например, избежать громоздких конструкций типа «распознавательный аналог задачи А является NP-полной задачей» и дает возможность говорить просто, что «задача А NP -трудна».
Теория NP-полноты, помимо теоретического, представляет и чисто практический интерес. Доказав, что задача NP-трудна, разработчик алгоритмов получает достаточные основания, чтобы отказаться от поиска эффективного и точного алгоритма. Дальнейшие его усилия могут быть направлены, например, на получение приближенного решения, либо на получение решения в типичном случае (в большинстве случаев).
Дата добавления: 2019-07-26; просмотров: 625;