Next: 6. Примеры NP-полных задач
Up: Сложность вычислительных задач
Previous: 4.2. Класс
Contents: Содержание
5. Набросок доказательства теоремы
Кука-Левина
1) Это утверждение почти очевидно. Советник сообщает Исполнителю
значения переменных, входящих в формулу, при которых она истинна.
Исполнитель справится с проверкой истинности полученного высказывания
за полиномиальное время.
2) Пусть функция из
, которую нужно свести к , имеет вид
.
Рассмотрим машину Тьюринга, вычисляющую
за полиномиальное время. Нам нужно записать в виде
логической формулы условие того, что при некотором (и заданном
входе ), машина выдает результат 1.
Для этого представим весь процесс вычисления, длящегося время
и использующего память
,
таблицей вычисления размера , показанной на
рисунке 1.
Рис. 1.
 |
Строка с номером таблицы задает состояние МТ после тактов
работы.
Символы , записанные в таблице,
принадлежат алфавиту
.
Символ определяет пару
(символ, записанный в -й ячейке после тактов работы;
состояние управляющего устройства после тактов работы, если головка
находится над -й ячейкой, в противном случае второй элемент
пары - ).
Для простоты также считаем, что если
вычисление заканчивается при
некотором входе за тактов, то строки c номерами, большими
, повторяют строку с номером .
Состояние каждой
клетки таблицы можно закодировать конечным (не зависящим от ) числом
булевых переменных. Имеются локальные правила согласования,
т. е. состояние каждой клетки в строке ниже нулевой
однозначно определяется состояниями клеток в предыдущей строке, лежащих
непосредственно над данной ( ), левее данной ( )
и правее данной ( ).
Каждое такое
условие можно записать в виде логической формулы от переменных,
кодирующих состояния клеток, причем размер этой формулы от также не
зависит.
Еще нам нужно записать условие успешности вычисления (результат
равен 1). Для этого заметим, что
без ограничения общности можно
считать, что состояния клеток таблицы кодируются так, что одна из
кодирующих переменных равна 1 только в том случае, когда в ячейке
записана 1. Тогда значение этой переменной для кода и
будет результатом вычисления.
Определим формулу как
конъюнкцию всех формул, в которые подставлены значения переменных,
кодирующих вход , дополненный символами
до длины
.
Значения, соответствующие и , - константы, поэтому
переменные, от которых зависит эта формула, отвечают и кодам
внутренних ячеек таблицы. Так что можно считать, что формула
зависит
от и еще от каких-то переменных, которые мы обозначим .
Итак, мы сопоставили слову формулу
, которая
по построению обладает следующим свойством.
Если выполняется , то найдется такой набор значений ,
при котором
истинна (эти значения описывают
работу МТ на входе ). А если не выполняется, то
всегда ложна (поскольку по сути утверждает, что
вычисление на входе дает ответ "да").
Таким образом, при такая формула иногда (при некоторых
значениях ) истинна, при - всегда ложна.
Next: 6. Примеры NP-полных задач
Up: Сложность вычислительных задач
Previous: 4.2. Класс
Contents: Содержание
Написать комментарий
|