Класс NP
В теории сложности Класс NP - класс языков (задач), ответ на которые можно проверить за полиномиальное время Для того, чтобы формализовать определение класса NP введем несколько определений.
NTIME
Классом NTIME(f) по аналогии с DTIME называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и время ее работы не превосходит , где длина входа.
НМТ , где длина .
NSPACE
Классом NSPACE(f) по аналогии с DSPACE называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и память, используемая ею на любом входе, не больше , где длина входа.
НМТ , где длина .
Класс
Классом
называется класс языков(задач) L, таких что для каждого из них существует полиномиальный верификатор сертификата(утверждения) R, а также полином p, такие что слово l принадлежит языку L тогда и только тогда, когда существует сертификат(утверждение) y, длина которого не превосходит заданного полинома p, и сертификат удовлетворяет верификатору.
Теорема о равенстве и
Формулировка
Доказательство
Построим доказательство равенство из доказательств двух взаимных включений.
Построим программу, работающую за полином(из свойств машины Тьюринга, возможно построить аналогичную машину Тьюринга, работающюю за полиномиальное время, возможно большее), которая будет проверять решение задачи, входящей в класс
. Таким образом покажем вхождение класса в NP.
m(x)
{
y := guess(); return R(x,y);
}
Вхождение доказано.
Пусть
. Тогда существует НМТ m, распознающая L. Построим сертификат y как последовательность недетерминированных выборов машины m, приводящих к допуску слова. Верификатором сертификата R выберем структуру, симулирующую НМТ, возвращающую 0 при ошибке выполнения или завершении работы в недопускающем состоянии, и 1, если работа НМТ завершилась корректно в допускающем состоянии. Таким образом, , что и требовалось доказать.Теорема доказана
Примеры задач класса NP
- Задача о нахождении независимого множества заданного размера в графе. IND
- Задача о нахождении клики заданного размера в графе. CLICKUE
- Задача о нахождении вершинного покрытия заданного размера в графе. COVER
- Задача о удовлетворении булевой формулы, заданной в КНФ. SAT