Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть 1.doc
Скачиваний:
6
Добавлен:
18.04.2019
Размер:
1.01 Mб
Скачать

4.3 Примеры задач np-класса.

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

Пусть х1, х2, …, хn – множество логических переменных; – их отрицания или дополнения.

if xi = true then = false

 - И;  - ИЛИ.

Дизъюнкция: х1 х5 …

Конъюнкция: х4 х3  …

Конъюнктивная нормальная форма:

E*(x1, …, xn) = (x1 x2 x3) (x1 ) ( x4) ( ) (*)

Задача о выполнимости заключается в определении, является ли булевская функция, записанная в КНФ, выполнимой.

Любая булевская функция может быть представлена в КНФ по правилу Де Моргана:

АС)=( АВ)С)

Говорят, что булевская функция выполнима, если существует некоторое присваивание переменным true или false, при этом функция должна быть равна true.

Для функции (*) она будет выполнима, если ввести следующие присваивания:

(*)

Например:

Функция

f2(xi)=(x1 x2)( )( )

не является выполнимой, т. к. при любых xi f2(xi)=false.

Теорема:

Задача о выполнимости является NP-полной.

for i=1 to N do

xi  выбор (true, false)

if E(x1, x2, …, xN) then успех

else неудача

Используя преобразование задачи Р1 в Р2, можно показать, что даже ограниченный случай задачи о выполнимости является NP-полным.

К-выполнимость.

К-выполнимость означает, что любой дизъюнкт, входящий в КНФ, содержит не более К логических переменных.

Минимальный случай К=3. Для булевской функции, представленной в КНФ, за полиномиальное время можно найти функцию Е*2), содержащую не более трех переменных в каждом дизъюнкте. Тогда Е выполнима, если выполнима Е*.

E*(x1, x2,…, xn)E*(xi)

Для этого используется метод уменьшения порядка дизъюнкта

(1 2 k)=(1 2 z) (3 4 k )

Применяя итерационный процесс разложения, можно получить Е*.

Найти алгоритм решения Е* проще, чем функции Е. Но при этом доказав выполнимость Е*, докажем выполнимость исходной функции Е.

Частный случай: при К=2 функция Е входит в Р.

Примерами задач NP-класса могут послужить также задачи на графах:

  1. Определение максимума клик неориентированного графа (NP-трудная задача).

  2. Задача определения полного подграфа (NP-полная задача).

  3. Определение вершинного покрытия мощности L для неориентированного графа (NP-полная задача).

  4. Определение максимума вершинных покрытий неориентированного графа (NP-трудная задача).

  5. Задача определения существования Гамильтонова цикла для графа (NP-полная задача).

  6. Задача коммивояжера: определение оптимального движения по графу с единым вхождением в каждую вершину (NP-трудная задача).

  7. Задача составления расписания (NP-полная задача).