Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комбинаторные задачи.doc
Скачиваний:
37
Добавлен:
25.09.2019
Размер:
720.38 Кб
Скачать

2.5. Теорема Кука

Эта теорема (S.A.Cook, 1971г.) – тот самый первый шаг, о котором говорилось выше: доказательство NP-полноты одной конкретной задачи.

Как вообще можно доказать сводимость всех NP-задач к данной задаче? Можно воспользоваться определением NP-задачи: для нее имеется НМТ, принимающая индивидуальные задачи за полиномиальное время. А каждую НМТ можно описать, закодировав ее правила перехода. Тогда любую NP-задачу можно сформулировать следующим образом. Дано описание НМТ для данной массовой задачи Z и дано описание индивидуальной задачи z Î Z в виде записи с длиной l на ленте этой НМТ. Верно ли, что существует допустимое вычисление этой НМТ при этом исходном состоянии ленты, которое не более, чем за P(l) тактов приводит в состояние qy? Заметьте, что специфика конкретной задачи Z здесь исчезла, или вернее – она закодирована в правилах НМТ. Назовем такую «универсальную» NP-задачу Z0.

Теперь нам нужно сделать следующее. Нужно выбрать некоторую задачу распознавания Z1 и предложить алгоритм, который за полиномиальное (относительно l) время будет переводить описание индивидуальной задачи z0 Î Z0 в описание эквивалентной индивидуальной задачи z1 Î Z1. Тогда ясно, что задача Z1 является NP-трудной, поскольку мы фактически умеем полиномиально сводить к ней любую NP-задачу.

Рассмотрим задачу о выполнимости КНФ.

Даны переменные X = {xi, i=1...N} и конъюнктивная нормальная форма (КНФ) G(X). Существует ли такой план X, для которого G(X) = 1?

Теорема Кука. Задача о выполнимости КНФ NP-полна.

Приведем эскиз доказательства (т.е. не будем добиваться полной строгости рассуждений, но покажем их общий ход).

Пусть n – число состояний НМТ, m – число букв ленточного алфавита, l – длина описания некоторой индивидуальной NP-задачи z Î Z на ленте НМТ, P(l) – полином из определения NP-задачи (т.е. это верхняя оценка числа тактов, за которые НМТ принимает любую индивидуальную задачу z Î Z, имеющую длину l и ответ «Да».) Введем три набора булевых переменных, которые в совокупности описывают функционирование заданной НМТ.

1) {Qik, 0£i£P(l), 0£k£n}; Qik = 1, если на такте i НМТ находится в состоянии k.

2) {Hij, 0£i£P(l), -P(l)£j£P(l)}; Hij = 1, если на такте i текущей ячейкой ленты является ячейка j.

3) {Aijr, 0£i£P(l), -P(l)£j£P(l), 0£r£m}; Aijr = 1, если на такте i в ячейке j записана буква ar.

Любой набор значений переменных Qik, Hij, Aijr описывает некоторое вычисление НМТ, т.е. одну ветвь дерева вычислений НМТ, включая ее начальное состояние и все переходы. Но не любой набор значений описывает корректное поведение машины, некоторые наборы могут описывать такую чушь, как одновременное пребывание в нескольких состояниях, несколько букв в одной ячейке, неправильные переходы и т.п. Чтобы выделить допустимые вычисления НМТ, следует наложить еще некоторые условия на значения переменных. Таковые условия можно объединить в 6 групп. Опишем их сначала словесно.

1. На любом такте работы НМТ находится ровно в одном состоянии.

2. На любом такте работы головка НМТ находится ровно в одной позиции ленты.

3. На любом такте работы каждая ячейка ленты содержит ровно одну букву ленточного алфавита.

4. На такте i = 0 НМТ находится в состоянии q0, головка на ячейке 1, на ленте записано описание решаемой индивидуальной задачи.

5. Не позднее, чем через P(l) тактов НМТ приходит в состояние qy (принимает задачу).

6. Все изменения конфигурации НМТ между тактами i и i+1 происходят в соответствии с правилами перехода данной НМТ.

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

Для формализации условий корректности вполне подходит аппарат КНФ. Выпишем соответствующие КНФ.

1. (Qi0 Ú Qi1 Ú ... Ú Qin) & (~Qi0 Ú ~Qi1) & (~Qi0 Ú ~Qi2) & ... & (~Qi,n-1 Ú ~Qi,n), 0£i£P(l) (т.е. хотя бы одна Qij истинна, но не две одновременно!).

2. Аналогичная конструкция для переменных Hij.

3. Для Aijr так же по смыслу, только индексов больше: (Aij0 Ú Aij1 Ú ... Ú Aijm) & (~Aij0 Ú ~Aij1) & ... & (~Ai,j,m-1 Ú ~Ai,j,m), 0£i£P(l), -P(l)£j£P(l).

4. Q00 & H01 & A0,1,v1 & A0,1,v2 & ... & A0,l,vl & A0,l+1,0.

Здесь av1, av2, ... avl - входное слово на ленте (описание решаемой задачи).

5. QP(l),1 (полагая, что принимающее состояние qy пронумеровано как q1).

6. Это условие следует разбить на два:

6.1. Если на такте i головка не находится в позиции j, то буква в этой ячейке не изменится при переходе к такту i+1.

~Aijr Ú Hij Ú Ai+1,j,r , 0£i£P(l), -P(l)£j£P(l), 0£r£m.

Эта дизъюнкция кажется несколько загадочной, однако заметим, что ее отрицание означало бы следующее: в ячейке j была буква ar, головки там не было, но буква изменилась! Ясно, что этого не может быть, поэтому записанная дизъюнкция истинна.

6.2. Если на такте i НМТ была в состоянии qk, головка находилась в позиции j и там была записана буква ar, то на такте i+1 НМТ должна оказаться в одной из тех конфигураций (q'k, j', a'r), которые получаются применением одного из правил перехода этой НМТ с подходящей левой частью:

~Qik Ú ~Hij Ú ~Aijr Ú (Hi+1,j'Qi+1,k'Ai+1,j,r' Ú Hi+1,j''Qi+1,k''Ai+1,j,r'' Ú …)

Здесь 0£i£P(l), -P(l)£j£P(l), 0£k£n, 0£r£m.

Индексы с разным числом штрихов относятся к правым частям различных правил перехода с одной и той же левой частью. Выражение в скобках не находится в конъюнктивной нормальной форме. В ходе приведения этого выражения к КНФ его длина может сильно возрасти, однако можно показать, что длина выражения остается ограниченной некоторым полиномом от l.

Только в условии 6.2 фигурируют правила перехода конкретной НМТ.

Наконец, соединим все выписанные выражения из всех 6 групп с помощью операций конъюнкции. Результатом будет КНФ G(Q, H, A), зависящая как от рассматриваемой массовой задачи Z, так и от ее индивидуального представителя z.

Предположим, эта КНФ выполнима, т.е. существует набор Qik, Hij, Aijr, выполняющий все 6 условий. Но по смыслу условий это означает, что существует принимающее вычисление НМТ, т.е. исходная задача распознавания ΠZ имеет ответ «Да». И наоборот, если существует принимающее вычисление, то его ход можно закодировать набором переменных Qik, Hij, Aijr, которые по построению будут выполнять КНФ G(Q, H, A). Тем самым мы доказали эквивалентность задачи z и задачи о выполнимости КНФ G(Q, H, A). Таким образом, задача Z была сведена к задачи о выполнимости (сокращенно – задаче ВЫП). Было ли это сведение полиномиальным по времени относительно l? Да, ибо все сведение задачи заключалось просто в выписывании логических выражений, длина и количество которых ограничены полиномом от l.

Поскольку Z – произвольная задача из NP, то доказана полиномиальная сводимость любой NP-задачи к задаче ВЫП. В то же время задача ВЫП, очевидно, проверяема за полиномиальное время (на самом деле даже за линейное: для проверки нужно просто подставить значения переменных в КНФ и убедиться, что все элементарные дизъюнкции истинны), а потому эта задача принадлежит NP. Значит, задача ВЫП является NP-полной, что и требовалось доказать.