- •Теория 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-ВЫП.