Класс NP
В теории сложности Класс
— класс языков (задач), ответ на которые можно проверить за полиномиальное время.Определение
Определение класса NP через класс NTIME и класс NSPACE.
Класс
Альтернативным определением класса
является определение на языке сертификатов.Будем говорить, что
является сертификатом принадлежности языку , если существует полиномиальное отношение (верификатор) , такое что тогда и только тогда, когда принадлежит .Классом
называется класс языков (задач) , таких что для каждого из них существует полиномиальный верификатор , а также полином , такие что слово принадлежит языку тогда и только тогда, когда существует сертификат , длина которого не превосходит заданного полинома , и сертификат удовлетворяет верификатору .
Теорема о равенстве и
Формулировка
Доказательство
Построим доказательство равенство из доказательств двух взаимных включений.
Построим программу, работающую за полином (из свойств машины Тьюринга, возможно построить аналогичную машину Тьюринга, работающюю за полиномиальное время, возможно большее), которая будет проверять решение задачи, входящей в класс
. Таким образом покажем вхождение класса в .Вхождение доказано.
Пусть
. Тогда существует НМТ m, распознающая L. Построим сертификат y как последовательность недетерминированных выборов машины m, приводящих к допуску слова. Верификатором сертификата R выберем структуру, симулирующую НМТ, возвращающую 0 при ошибке выполнения или завершении работы в недопускающем состоянии, и 1, если работа НМТ завершилась корректно в допускающем состоянии. Таким образом, , что и требовалось доказать.Теорема доказана.
Примеры задач класса NP
- Задача BH1N.
- Задача о вершинном покрытии, клике и независимом множестве.
- Задача о удовлетворении булевой формулы, заданной в КНФ. SAT