Задача 2-ВЫПОЛНИМОСТЬ и полиномиальный алгоритм решения

2-ВЫПОЛНИМОСТЬ (2-SAT) — задача выполнимости КНФ, каждая скобка которой содержит не более двух литералов. В отличие от общего SAT и 3-SAT, задача 2-SAT принадлежит классу \(P\).1

В курсе полиномиальность доказывается последовательным исключением переменных. Формула преобразуется в равновыполнимую 2-КНФ с на одну переменную меньше. После не более чем \(n-1\) исключений остаётся формула от одной переменной. Для выбранного кодирования весь алгоритм реализуется детерминированной МТ за \(O(L^5)\) шагов.1

Что важно запомнить
  • 2-КНФ — конъюнкция скобок длины не более двух литералов.
  • Теорема курса: \(2\text{-SAT}\in P\).1
  • Если имеется единичная скобка с литералом \(\ell\), соответствующую переменную фиксируют так, чтобы \(\ell=1\), и упрощают формулу.
  • Если единичных скобок нет, для выбранной переменной \(x\) объединяют условия \((\neg x\vee y_i)\) и \((x\vee z_j)\) в скобки \((y_i\vee z_j)\), исключая \(x\).
  • Каждый шаг сохраняет выполнимость и уменьшает число переменных. Общая оценка в доказательстве — \(O(L^5)\).

Постановка 2-SAT

В 2-КНФ каждый сомножитель имеет вид \((a)\) или \((a\vee b)\), где \(a,b\) — литералы. Нужно определить, существует ли набор значений, обращающий все скобки в 1.

Исключение единичного литерала

Если формула содержит единичный множитель \(\ell\), соответствующую переменную фиксируют так, чтобы \(\ell=1\). В доказательстве случай записан как \(\ell=x\): тогда полагают \(x=1\), удаляют уже выполненные скобки и упрощают скобки с \(\neg x\). Для литерала \(\neg x\) действует симметричное правило с \(x=0\). Если после упрощения возникает противоречие, формула невыполнима.1

Исключение переменной из двухбуквенных скобок

Если единичных скобок нет, выберем переменную \(x\). Пусть \(K_0\) состоит из скобок \((\neg x\vee y_i)\), \(K_1\) — из скобок \((x\vee z_j)\), а \(K_2\) не зависит от \(x\). Тогда существование подходящего значения \(x\) эквивалентно выполнению всех резольвент

\((y_i\vee z_j)\)

вместе с \(K_2\). Полученная КНФ не содержит \(x\) и остаётся 2-КНФ.1

Полиномиальная оценка

После каждого шага число переменных уменьшается. Не более чем за \(n-1\) исключений задача сводится к формуле от одной переменной, которую легко проверить непосредственно. Подробный анализ кодирования в пособии даёт детерминированную оценку \(O(L^5)\). Поэтому \(2\text{-SAT}\in P\).1

Оценка \(O(L^5)\) здесь нужна как конструктивная полиномиальная верхняя граница для доказательства принадлежности \(P\). Она не утверждается как оптимальная трудоёмкость 2-SAT.

Пример простыми словами

Рассмотрим скобки \((\neg x\vee y)\) и \((x\vee z)\). Если существует значение \(x\), удовлетворяющее обеим скобкам при фиксированных \(y,z\), то обязательно истинна \(y\vee z\). И наоборот, если \(y\vee z=1\), можно выбрать подходящее значение \(x\). Поэтому пару условий можно заменить резольвентой \((y\vee z)\) и исключить \(x\).

Частые ошибки
  • Делать вывод, что 2-SAT полиномиальна только потому, что в каждой скобке два литерала. Нужен алгоритм и оценка его трудоёмкости.
  • При исключении \(x\) просто удалять все скобки с \(x\) и \(\neg x\). Нужно добавить резольвенты, сохраняющие условия совместной выполнимости.
  • Переносить этот результат на 3-SAT. Добавление третьего литерала принципиально меняет сложность: 3-SAT является NP-полной задачей.

Другие вопросы

Источники

  1. 1 Сапоженко А. А. Некоторые вопросы сложности алгоритмов М.: МГУ, факультет ВМК, 2001 г. §5, теорема 5.2 и алгоритм исключения переменных