
- •Теория np-полноты Труднорешаемые задачи
- •Нерешенные проблемы теории np-полноты
- •Полиномиальная сводимость и np-полные задачи
- •Примеры np-полных задач
- •1. Задача выполнимость
- •2. Задача 3-выполнимость
- •3. Задача о клике
- •4. Задача о вершинном покрытии
- •Приближенные алгоритмы решения np-полных задач Оценка качества приближенных алгоритмов
- •Приближенный алгоритм решения задачи о вершинном покрытии
Примеры np-полных задач
Для того чтобы доказать NP-полноту задачи, необходимо, согласно определению, доказать, во-первых, принадлежность задачи классу NP, а во-вторых, доказать возможность построения алгоритма сведения любой задачи класса NP к данной. Очевидно, что это достаточно сложная процедура.
Лемма 3, доказанная выше, дает реальный способ доказательства NP-полноты произвольной задачи L, заключающийся в следующем:
1) доказать, что LNP;
2) выбрать некоторую NP-полную задачу L’ (L’NPC) и свести ее к данной;
3) доказать, что построенный алгоритм сведения полиномиален.
Однако чтобы воспользоваться этим способом, необходимо иметь в арсенале хотя бы одну задачу, NP-полнота которой уже доказана. Роль такой NP-полной задачи принадлежит задаче распознавания из булевской логики, которую обычно называют ВЫПОЛНИМОСТЬ (сокращенно ВЫП).
1. Задача выполнимость
Пусть
Х={х1,
х2,…,
хm}
− множество булевских переменных.
На множестве переменных построено
множество литералов U={u1,
u2,…,
u2·m}.
Литералом
u
называется переменная х
или ее отрицание
.
На множестве литералов построена формула , являющаяся конъюнкцией произвольного числа дизъюнкций, состоящих из произвольного числа литералов. Формула называется выполнимой в том и только в том случае, если найдется некоторый набор значений переменных на множестве X, на котором формула принимает истинное значение. Такой набор значений переменных называется выполняющим набором для формулы . В противном случае (если нет выполняющего набора значений переменных) формула называется невыполнимой.
Задача ВЫПОЛНИМОСТЬ формулируется следующим образом.
Дано множество переменных X, на котором построена формула . Определить, выполнима формула или нет.
Например,
пусть X={x1,
x2},
.
Это индивидуальная
задача из ВЫПОЛНИМОСТИ, ответ на которую
– «да», так как существует выполняющий
набор x1=false,
x2=true.
А
формула
– индивидуальная
задача,
ответ на которую – «нет», так
как не существует выполняющего набора.
NP-полнота данной задачи была доказана Куком.
Теорема Кука. Задача ВЫПОЛНИМОСТЬ NP-полна.
Для доказательства использовался аппарат машин Тьюринга (см. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи).
2. Задача 3-выполнимость
Формулировка задачи 3-ВЫПОЛНИМОСТЬ (3-ВЫП): дано множество переменных X, на котором построена формула , являющаяся конъюнкцией произвольного числа трехлитеральных дизъюнкций. Определить, выполнима формула или нет.
Например,
пусть X={x1,
x2,
x3},
.
Формула выполнима,
так как существует выполняющий набор,
например, x1=false,
x2=true,
x3=false.
Теорема. Задача 3-ВЫП NP-полна (3-ВЫПNPC).
Доказательство
1. Задача 3-ВЫПNP, так как проверяется за полиномиальное время (в качестве сертификата можно рассматривать выполняющий набор). Действительно, для того чтобы проверить, является ли некоторый набор выполняющим для формулы из k дизъюнкций, необходимо выполнить действий О(3·k).
2.
Построим алгоритм сведения NP-полной
задачи ВЫП к задаче
3-ВЫП, т. е.
преобразования произвольной формулы
выпВЫП
к задаче
3-вып3-ВЫП.
Для этого укажем правила преобразования
каждой дизъюнкции
формулы вып
в конъюнкцию трехлитеральных дизъюнкций
формулы 3-вып
так, чтобы выполнялось условие
– выполнима
– выполнима.
Пусть
дизъюнкция
имеет вид:
.
1)
k=1,
.
Введем набор дополнительных переменных Y={y1, y2} и построим формулу следующим образом:
.
Очевидно, что истинность формулы зависит лишь от истинности литерала u1, следовательно, – выполнима – выполнима.
2)
k=2,
.
Введем набор дополнительных переменных Y={y1} и построим формулу следующим образом:
.
Очевидно,
что истинность формулы
зависит лишь от истинности выражения
,
следовательно,
– выполнима
– выполнима.
3)
k=3,
.
Преобразования дизъюнкции не требуется, т. е. = .
4)
k≥4,
.
Введем набор дополнительных переменных Y={y1, y2, …, yk-3} и построим формулу следующим образом:
.
Например,
a)
пусть
,
тогда Y={y1}
;
b)
пусть
,
тогда Y={y1,
y2,
y3}
.
Очевидно, что если формула невыполнима, то также невыполнима, следовательно, – выполнима – выполнима.
3. Построенный алгоритм является алгоритмом сведения, так как вып выполнима 3-вып выполнима. Данный алгоритм полиномиален, время преобразования пропорционально длине формулы вып, а число трехлитеральных дизъюнкций в 3-вып ограниченно полиномом от m·n, где m число дизъюнкций в вып, n – число литералов в вып.
Таким образом, в силу леммы 3 задача 3-ВЫП NP-полна.
Задание
1) Дана следующая формула:
.
Преобразовать ее в формулу задачи 3-ВЫП.
2) Привести пример невыполнимой формулы задачи 3-ВЫП.