Теорема Кука
Определение
Проблема — проблема выполнимости булевых формул.
Докажем, что эта проблема -полна.
Формулировка
Теорема Кука гласит, что
Доказательство
, если
Прежде всего докажем, что
Так как , то достаточно показать, что
В качестве сертификата берём набор нулей и единиц в количестве штук, соответствующих значениям аргументов функции . Длина этого сертификата явно будет меньше или равна, чем полином от длины строки, кодирующей формулу .
Верификатор просто подставит эти значения в формулу и выдаст значение формулы на данном входе. Таким образом, если формула действительно удовлетворима, то для неё найдётся такой сертификат, на котором она, и, соответственно, верификатор, выдадут единицу.
Если же у нас существует такой сертификат , на котором верификатор выдаёт единицу, то, значит, и формула является удовлетворимой.
Теперь докажем, что Для этого сведём проблему , которая, как нам известно, -полна, к проблеме Тогда получится, что любая проблема из может быть сведена по Карпу к проблеме , и, соответственно, к
По условию проблемы , у нас есть недетерминированная машина Тьюринга , причём можно считать, что её лента односторонняя и что машина не пишет на ленту пробелы, входное слово и время , заданное в унарной системе счисления. В любой момент времени мгновенное описание (МО) есть строка , где — строка, состоящая из такого количества пробелов, чтобы длина всего МО была