Московский государственный университет имени М.В.Ломоносова
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 611 / 26 | Оценка: 5.00 / 4.50 | Длительность: 19:30:00
Специальности: Программист
Лекция 2:

Класс NP: сводимость и полнота

< Лекция 1 || Лекция 2: 12 || Лекция 3 >

Сводимость и NP-полнота.

Сложность вычисления предикатов можно сравнивать, пользуясь следующим определением.

Определение 2.4. Сводимость по Карпу. Предикат L_1 сводится к предикату L_2 (обозначение L_1\propto L_2 ), если существует такая функция f\in\P, что \forall\, x\:L_1(x)=L_2(f(x)).

Сводимость по Карпу также называют полиномиальной сводимостью, а часто — просто сводимостью.

Лемма 2.1. Пусть L_1\propto L_2. Тогда

  1. L_2\in\P \Rightarrow  L_1\in\P
  2. L_1\not\in\P \Rightarrow  L_2\not\in\P
  3. L_2\in\NP \Rightarrow  L_1\in\NP.

Доказательство. Пункт 1 совершенно очевиден — чтобы вычислить значение предиката L_1, достаточно применить ко входу x функцию f, а к результату ее работы — программу вычисления L_2.

Пункт 2 следует из пункта 1.

Пункт 3 также прост. Его можно объяснять по-разному. Например, так: Мерлин сообщает Артуру f(x) (длина которого ограничена некоторым полиномом h от длины x, поскольку f\in\P ) и слово y, которое убеждает Артура в том, что L_2(f(x))=1. Артур также может проверить, что ему действительно сообщено f(x). Используя определение 2.2, можно написать цепочку эквивалентностей

L_1(x)\Leftrightarrow L_2(f(x)) &\Leftrightarrow \exists\, y\: \big( (|y|<q(|f(x)|))\wedge R(f(x),y)\big)\Leftrightarrow\\&\Leftrightarrow\exists\, y\: \big( (|y|<r(|x|))\wedge R(f(x),y)\big).
Полином r(|x|) в последнем выражении — это композиция полиномов q и h.

Определение 2.5. Предикат L\in\NP называется NP- полным, если любой предикат из \NP к нему сводится.

Если некоторый NP-полный предикат можно вычислять за время T(n), то любой предикат из NP можно вычислять за время T(n^c) для некоторого фиксированного числа c. Такая потеря эффективности считается в этой науке несущественной.

NP-полные предикаты существуют, приведем примеры.

Выполнимость. Задается предикатом

SAT(x) \Longleftrightarrow x есть формула с булевыми переменными и символами (\neg,\, \vee,\, \wedge), которая истинна при некоторых значениях переменных.

Теорема 2.2 (Кук, Левин). 1) SAT\in\NP ; 2) SATNP- полна.

Если SAT\in\P, то \P=\NP.

Доказательство (теоремы 2.2). 1) Мерлину достаточно сообщить Артуру значения переменных, входящих в формулу, при которых она истинна. Артур справится с проверкой истинности полученного высказывания.

2) Пусть предикат из NP, который нужно свести к SAT, имеет вид L(x)= \exists\,y\:\big((|y|<q(|x|)) \wedge R(x,y)\big).

Рассмотрим таблицу вычисления (см. доказательство теоремы 1.2) для МТ, вычисляющей R(x,y) (входом является пара x\#y ). Будем использовать те же переменные, что и в доказательстве теоремы 1.2 (коды состояний клеток таблицы вычисления). Чтобы таблица вычисления соответствовала правильно проведенному успешному (с ответом "да") вычислению, должны выполняться локальные правила согласования для каждой четверки клеток видаи результат должен быть "да". Каждое такое правило задается формулой от переменных, отвечающих либо рассматриваемой четверке, либо нулевой ячейке самой нижней строки таблицы. Определим формулу \varphi_x как конъюнкцию всех этих формул, в которые подставлены значения переменных, кодирующих вход x\# y, дополненный символами \emptycell до длины |x|+1+q(|x|). Значения, соответствующие x и \#, — константы, поэтому переменные, от которых зависит эта формула, отвечают y и кодам внутренних ячеек таблицы. Так что можно считать, что формула \phi_x зависит от y и еще от каких-то переменных, которые мы обозначим z.

Итак, мы сопоставили слову x формулу \varphi_x(y,z), которая по построению обладает следующим свойством. Если выполняется R(x,y), то найдется такой набор значений z(x,y), при котором \varphi_x(y,z(x,y)) истинна (эти значения описывают работу МТ на входе x\# y ). А если R(x,y) не выполняется, то \varphi_x(y,z) всегда ложна (поскольку по сути утверждает, что вычисление на входе (x,y) дает ответ "да"). Таким образом, при L(x)=1 такая формула иногда (при некоторых значениях y ) истинна, при L(x)=0 — всегда ложна.

Другие примеры NP-полных задач получаются с помощью следующей леммы.

Лемма 2.2. Если SAT\propto L и L\in\NP, то LNP-полная. И вообще, если L_1NP-полная, L_1\proptoL_2 и L_2\in\NP, то L_2NP-полная.

Доказательство. Достаточно проверить транзитивность сводимости: если L_1\propto L_2, L_2\propto L_3, то L_1\propto L_3. Она следует из того, что композиция двух полиномиально вычислимых функций полиномиально вычислима.

3-КНФ. Задается предикатом

3\text{-}SAT(x) \Longleftrightarrow x есть 3-КНФ, которая истинна истинна при некоторых значениях переменных. 3-КНФ — это конъюнкция дизъюнкций, каждая из которых содержит три литерала.

3\text{-}SAT также NP-полна. Это устанавливается сведением к ней SAT.

Теорема 2.3. SAT\propto 3\text{-}SAT.

Доказательство. Сопоставим любой схеме в стандартном базисе такую 3-КНФ, выполнимость которой равносильна тому, что вычисляемая схемой функция не равна тождественно 0. В эту КНФ будут входить все переменные схемы ( x_1,\dots,x_n и y_1,\dots,y_s — используем те же обозначения, что и в определении схемы). Для этого построим вначале конъюнкцию K'' условий, означающих, что каждая из вспомогательных переменных y_j имеет значение, соответствующее правой части присваивания Y_j. Есть три типа таких условий (они соответстуют трем базисным функциям), и каждый можно записать в виде 3-КНФ:

\begin{align*}
				\big( y\Leftrightarrow( x_1\vee x_2)\big)
				&=
				(x_1\vee x_2\vee\neg y)\wedge(\neg x_1\vee x_2\vee y)\wedge
				(x_1\vee\neg x_2\vee y)\wedge\\ &\wedge(\neg x_1\vee\neg x_2\vee y),\\
				\big(y\Leftrightarrow(x_{1}\wedge x_2)\big)&=
				(x_1\vee x_2\vee\neg y)\wedge(\neg x_1\vee x_2\vee\neg y)\wedge
				(x_1\vee\neg x_2\vee\neg  y)\wedge\\
				&\wedge(\neg x_1\vee\neg x_2\vee y),\\
				\big(y\Leftrightarrow\neg x\big)&=
				(x\vee y)\wedge(\neg x\vee \neg y).
				\end{align*}

Подставляя эти 3-КНФ в K'', получим 3-КНФ K'. Искомая 3-КНФ имеет вид K=K'\wedge y_s. Действительно, истинность K равносильна утверждению: все присваивания выполнены правильно и в результате получилась 1 ( y_s=1 ). Значит, если при каких-то значениях переменных x_i схема выдает 1, то K выполнима, и наоборот.

Еще один простой пример сведения.

Задача ЦЛП (целочисленного линейного программирования). Дана система линейных неравенств с целыми коэффициентами. Есть ли у нее целочисленное решение? (Другими словами, совместна ли система?)

В этой задаче входом является матрица коэффициентов и вектор правых частей. То, что \textsc{ЦЛП}\in \NP, не совсем очевидно. Оказывается, что в качестве подсказки Мерлин может сообщить Артуру значения переменных, при которых выполнены все неравенства системы. По определению, длина этого сообщения должна быть также полиномиально ограничена. Можно доказать, что из существования целочисленного решения следует существование целочисленного решения, размер записи которого ограничен полиномом от длины записи системы, см. [14, т. 2, 17.1].

Сведем теперь 3-КНФ к ЦЛП. Построим по 3-КНФ систему линейных неравенств. Целочисленных переменных возьмем столько же, сколько есть булевых переменных. Булевой переменной x_i сопоставим выражение p_i. Отрицанию переменной \neg x_i сопоставим выражение 1-p_i. Каждой дизъюнкции X_j\vee X_k \vee X_m ( X_* — литералы) сопоставим неравенство P_j+P_k+P_m\geq1, в котором P_j, P_k, P_m — выражения, сопоставленные литералам дизъюнкции.

Искомая система содержит для всех i неравенства 0\leq p_i\leq 1, а также все неравенства, сопоставленные дизъюнкциям из КНФ. Очевидно, что выполнимость 3-КНФ равносильна совместности такой системы.

Замечание 2.4. Если не требовать целочисленности решений, то проверить совместность системы линейных неравенств можно за полиномиальное время. Примеры таких алгоритмов (Хачияна, Кармаркара) также см. в [14, т. 1, 13, 15.1].

Обширный список NP-полных задач содержится в книге Гэри и Джонсона [3]. Как правило, их NP-полнота доказывается с помощью сведений. Приведем несколько примеров NP-полных задач.

3-раскраска. Дан граф. Спрашивается, можно ли раскрасить его вершины в три цвета так, чтобы концы каждого ребра были покрашены в разные цвета. (Аналогичная задача 2-раскраска решается за полиномиальное время.)

Клика. Даны граф и число k. Спрашивается, есть ли k -элементное множество вершин графа, любые две вершины которого соединены ребром.

Задачи

  1. Докажите, что задача проверки выполнимости 2-КНФ (конъюнкции дизъюнкций, каждая из которых содержит два литерала) принадлежит P.
  2. Докажите, что задача об эйлеровом пути в неориентированном графе (существует ли путь, проходящий по всем ребрам ровно по одному разу) принадлежит P.
  3. Предположим, что класс NP совпадает с P. Докажите, что в этом случае за полиномиальное время можно не только проверить выполнимость формулы, но и найти значения переменных, при которых она истинна (аналогично для гамильтонова цикла и т.п.)
  4. Докажите, что задача о паросочетаниях (есть n мальчиков и n девочек, известно, какие пары согласны друг с другом танцевать; надо определить, можно ли устроить танец, в котором все n мальчиков и n девочек соединены в пары) принадлежит NP и, более того, принадлежит P.
  5. Постройте

    1. полиномиальное сведение задачи 3-КНФ к задаче Клика;
    2. тот же вопрос, но дополнительно требуется, чтобы количество решений сохранялось (если 3-КНФ F при сведении соответствует пара (граф H, размер k ), то количество выполняющих наборов переменных для F равно количеству клик размера k в графе H ).
  6. Постройте

    1. полиномиальное сведение задачи 3-КНФ к задаче 3-раскраска;
    2. тот же вопрос, но дополнительно требуется, чтобы количество выполняющих наборов переменных для любой 3-КНФ равнялось бы шестикратному количеству 3-раскрасок соответствующего ей графа.
  7. Покажите, что следующая задача является NP-полной: дан набор из не более чем n типов квадратиков 1\times1, на сторонах которых написаны какие-то буквы; дан список допустимых пар букв и список граничных букв; спрашивается, можно ли корректно сложить из квадратиков набора большой квадрат размера n\times n (так, чтобы на примыкающих сторонах квадратиков были только допустимые пары букв, а на границе квадрата — только граничные буквы).
  8. Докажите, что предикат " x — двоичная запись составного числа" принадлежит NP.
  9. Докажите, что предикат " x — двоичная запись простого числа" принадлежит NP.
< Лекция 1 || Лекция 2: 12 || Лекция 3 >