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

Глава 7. Сводимость

контекста и определен, по крайней мере, с точностью до полино­миальной сводимости. Обсуждая в дальнейшем задачи из примеров предыдущего параграфа, мы будем иметь в виду рассмотренные там способы кодирования.

Пример 32.2. Покажем сводимость задачи выполнимости КНФ к задаче о клике с указанным числом вершин (пример 30.3). Пусть КНФ F имеет вид (32.1). Построим граф GF с kг + k2 + ... + km верши­нами, для которых используем обозначения

lij, i = l,2, ...,m, j = l,2,...,kh

при этом вершины lij и lvw соединяем ребром, если и только если выполнены два условия:

                  1. i#v,

                  1. конкретные литералы, скрывающиеся в (32.1) за обозначениями lij и lvw, не являются отрицанием друг друга (скажем, если lij—это ­ xъ а lvw это xъ то эти две вершины ребром не соединяются).

Построение матрицы смежности графа GF может быть выполнено за полиномиально ограниченное время.

Из определения клики и способа построения графа GF следует, что клика из m вершин в этом графе существует, если и только если формула (32.1) выполнима. В самом деле, при наличии такой клики полагаем xs = 0, когда литерал ­xs соответствует одной из вершин клики, а в остальных случаях xs = l. В результате каждое Di в (32.1) равно 1.

Наоборот, если заданная формула (32.1) выполнима, то при со­ответствующих значениях всех переменных xъx2, ■■■,xn для каждого i^m можно выбрать j такое, что lij—это литерал со значением 1. Сделав такой выбор, мы получаем набор вершин, образующий клику с m вершинами.

Если исходная КНФ имеет вид

(-x1v-x2)A(x2)A(x1Vx2),

то мы получаем граф GF с пятью вершинами (рис. 25), в котором обнаруживается клика Cln, l2i, l32D с тремя вершинами. Это соответ­ствует тому, что исходная формула принимает значение 1 при xг = 0, x2 = 1.

Задача распознавания существования в графе клики с заданным числом вершин является NP-полной.

г31

§ 32. Полиномиальная сводимость. NP-полные задачи *2i г21

а)

б)

.hi

h2*

1и.

207

hi

г32

hi

h2

Рис. 25. Построение графа GF для вершин, б) проведение ребер.

F = ­xi v ­*2) л (х2) Л (jq v х2): а) выбор

Доказано также, что задача распознавания гамильтоновости графа является NP-полной1. Упомянем еще одну очень известную NP-пол-ную задачу, называемую задачей о рюкзаке. Задано конечное множе­ство U, размер s(u) gN+ и стоимость v(u) gN+ каждого ue U, а также a, b е N+. Существует ли такое подмножество U' с U, что X! s(") ^ а,

2 v(u)^b? ueU'

ue!7' ?

Из теоремы Кука следует, что для решения проблемы Р = NP доста­точно со всей тщательностью рассмотреть какой-нибудь один NP-пол-ный предикат, например, тот же предикат Sat, и ответить на вопрос о его принадлежности классу Р. Если он принадлежит классу Р, то Р = NP в силу NP-полноты рассматриваемого предиката, если не при­надлежит, то Р ф NP, так как найден предикат, принадлежащий NP и не принадлежащий Р. Но этот заманчивый план до сих пор реали­зовать не удалось, усилия многих исследователей не привели к ре­шению этой проблемы, хотя и устоялось мнение, что, скорее всего, РФ NP. Это предположение влечет за собой рекомендацию: если дока­зано, что решаемая практическая задача (при надлежащей формали­зации в виде предиката на словах в алфавите) является NP-полной, то было бы опрометчивостью рассчитывать на нахождение в короткие сроки полиномиального алгоритма ее решения, и лучше попробовать решить эту задачу приближенно.

Многие задачи фактического построения некоторого математиче­ского объекта вписываются в следующую схему: дано х; если су­ществует у такое, что х вместе с у удовлетворяют фиксированно­му условию R{x,y), то найти такое у. Соответствующая задача рас-

Огромное число примеров NP-полных задач собрано в [13].

208

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]