Задача 3-ВЫПОЛНИМОСТЬ и её NP-полнота

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

NP-трудность доказывается сведением SAT к 3-SAT. Длинную скобку \(y_1\vee\cdots\vee y_m\), \(m>3\), заменяют двумя скобками с новой переменной \(u\): \((y_1\vee y_2\vee u)\wedge(y_3\vee\cdots\vee y_m\vee\neg u)\). Такое преобразование сохраняет выполнимость и уменьшает длину длинной скобки. Повторяя его, получают равновыполнимую 3-КНФ полиномиального размера.1

Что важно запомнить
  • 3-SAT использует КНФ со скобками длины не более трёх литералов.
  • Принадлежность \(NP\) проверяется так же, как для SAT: выбранный набор значений можно проверить за полиномиальное время.
  • Для NP-трудности в курсе строится сведение \(SAT\prec 3\text{-SAT}\).1
  • Новые переменные нужны только для разбиения длинных скобок. Полученная формула должна быть равновыполнима исходной.

Почему 3-SAT принадлежит NP

Свидетельством положительного ответа служит набор значений всех переменных. Подстановка этого набора и проверка всех скобок требуют времени, полиномиального по длине записи формулы. Поэтому \(3\text{-SAT}\in NP\).

Сведение SAT к 3-SAT

Пусть в КНФ есть скобка \(C=y_1\vee\cdots\vee y_m\) с \(m>3\). Берут новую переменную \(u\), не встречающуюся в исходной формуле, и вместо \(C\) записывают

\((y_1\vee y_2\vee u)\wedge(y_3\vee\cdots\vee y_m\vee\neg u)\). 1

Если исходная скобка истинна за счёт \(y_1\vee y_2\), можно положить \(u=0\). Если она истинна за счёт одного из \(y_3,\ldots,y_m\), можно положить \(u=1\). Обратно, если обе новые скобки истинны, то при \(u=0\) истинна первая группа литералов, а при \(u=1\) — вторая. Значит исходная скобка тоже истинна.

Замена уменьшает число литералов в длинной скобке на единицу и добавляет лишь постоянное число новых символов. Повторяя её, каждую скобку приводят к длине не более трёх. Число шагов и размер результата полиномиальны по размеру исходной КНФ. Поэтому \(SAT\prec 3\text{-SAT}\), а вместе с принадлежностью \(NP\) это доказывает NP-полноту 3-SAT.1

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

Скобку \(a\vee b\vee c\vee d\vee e\) можно сначала заменить на \((a\vee b\vee u)\wedge(c\vee d\vee e\vee\neg u)\). Во второй скобке ещё четыре литерала, поэтому вводят новую переменную \(v\): получают \((a\vee b\vee u)\wedge(c\vee d\vee v)\wedge(e\vee\neg u\vee\neg v)\). Новая 3-КНФ выполнима тогда и только тогда, когда была выполнима исходная скобка.

Частые ошибки
  • Доказывать только \(3\text{-SAT}\in NP\). Для NP-полноты нужна ещё NP-трудность.
  • Строить сведение в обратную сторону \(3\text{-SAT}\prec SAT\): оно очевидно, но не доказывает трудность 3-SAT.
  • Требовать логической эквивалентности формул на расширенном наборе переменных. Для сведения достаточно равновыполнимости: существует удовлетворяющий набор исходных переменных тогда и только тогда, когда существует расширяющий его набор новых переменных.

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

Источники

  1. 1 Сапоженко А. А. Некоторые вопросы сложности алгоритмов М.: МГУ, факультет ВМК, 2001 г., §5, теорема 5.3: полиномиальное сведение ВЫП к 3-ВЫП