
- •С.Н.Дроздов
- •Введение
- •1. Методы решения комбинаторных задач
- •1.1. Понятие об оценке эффективности алгоритмов и программ
- •1.2. Понятие комбинаторной задачи
- •1.3. Примеры комбинаторных задач
- •1.4. Организация исчерпывающего перебора
- •1.5. Сокращение перебора
- •1.6. Метод ветвей и границ
- •1.7. Метод динамического программирования
- •1.8. Метод a-b-отсечений для позиционных игр с полной информацией
- •1.9. Приближенные и эвристические методы решения задач комбинаторной оптимизации
- •2. Элементы теории сложности вычислений
- •2.1. Основные понятия и проблемы теории сложности вычислений
- •2.2. Полиномиальная сводимость задач
- •2.3. Недетерминированные машины Тьюринга и np-задачи
- •2.5. Теорема Кука
- •2.6. Примеры np-полных задач
- •2.6. Псевдополиномиальные задачи
- •2.7. Практическое значение результатов теории сложности вычислений
- •Литература
- •Дроздов Сергей Николаевич
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 Î Zимеет ответ «Да». И наоборот, если существует принимающее вычисление, то его ход можно закодировать набором переменныхQik, Hij, Aijr, которые по построению будут выполнять КНФG(Q, H, A). Тем самым мы доказали эквивалентность задачиzи задачи о выполнимости КНФG(Q, H, A). Таким образом, задачаZбыла сведена к задачи о выполнимости (сокращенно – задаче ВЫП). Было ли это сведение полиномиальным по времени относительноl? Да, ибо все сведение задачи заключалось просто в выписывании логических выражений, длина и количество которых ограничены полиномом отl.
Поскольку Z– произвольная задача изNP, то доказана полиномиальная сводимость любойNP-задачи к задаче ВЫП. В то же время задача ВЫП, очевидно, проверяема за полиномиальное время (на самом деле даже за линейное: для проверки нужно просто подставить значения переменных в КНФ и убедиться, что все элементарные дизъюнкции истинны), а потому эта задача принадлежитNP. Значит, задача ВЫП являетсяNP-полной, что и требовалось доказать.