Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория NP-полноты.doc
Скачиваний:
25
Добавлен:
10.09.2019
Размер:
386.56 Кб
Скачать

Примеры np-полных задач

Для того чтобы доказать NP-полноту задачи, необходимо, согласно определению, доказать, во-первых, принадлежность задачи классу NP, а во-вторых, доказать возможность построения алгоритма сведения любой задачи класса NP к данной. Очевидно, что это достаточно сложная процедура.

Лемма 3, доказанная выше, дает реальный способ доказательства NP-полноты произвольной задачи L, заключающийся в следующем:

1) доказать, что LNP;

2) выбрать некоторую NP-полную задачу L’ (L’NPC) и свести ее к данной;

3) доказать, что построенный алгоритм сведения полиномиален.

Однако чтобы воспользоваться этим способом, необходимо иметь в арсенале хотя бы одну задачу, NP-полнота которой уже доказана. Роль такой NP-полной задачи принадлежит задаче распознавания из булевской логики, которую обычно называют ВЫПОЛНИМОСТЬ (сокращенно ВЫП).

1. Задача выполнимость

Пусть Х={х1, х2,…, хm} − множество булевских пере­менных. На множестве переменных построено множество литералов U={u1, u2,…, um}. Литералом 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-ВЫП.