Класс NP — различия между версиями
м |
м |
||
Строка 1: | Строка 1: | ||
− | В теории сложности '''Класс | + | В теории сложности '''Класс''' <tex>NP</tex> - класс языков (задач), ответ на которые можно проверить за полиномиальное время |
− | + | ||
+ | ===Определение=== | ||
+ | Определение класса NP через [[Класс NTIME]]. | ||
+ | <tex>NP=\bigcup_{i=0}^{\infty} NTIME(in^i)=\bigcup_{i=0}^{\infty}\bigcup_{k=0}^{\infty} NTIME(in^k)</tex> | ||
===NTIME=== | ===NTIME=== | ||
− | Классом NTIME(f) по аналогии с [[Класс DTIME|DTIME]] называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и время ее работы не превосходит < | + | Классом NTIME(f) по аналогии с [[Класс DTIME|DTIME]] называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и время ее работы не превосходит <tex>f(n)</tex>, где <tex>n</tex> - длина входа. |
− | < | + | <tex>NTIME(f(n)) = \{ L | \exists НМТ m : L(m)=L, T(m,x) \le f(|x|) \}</tex>. |
===NSPACE=== | ===NSPACE=== | ||
Классом NSPACE(f) по аналогии с [[Класс DSPACE|DSPACE]] называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и память, используемая ею на любом входе, не больше <math>f(n)\,\!</math>, где <math>n\,\!</math> <math>-\,\!</math> длина входа. | Классом NSPACE(f) по аналогии с [[Класс DSPACE|DSPACE]] называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и память, используемая ею на любом входе, не больше <math>f(n)\,\!</math>, где <math>n\,\!</math> <math>-\,\!</math> длина входа. | ||
− | < | + | <tex>NSPACE(f(n)) = \{ L \mid \exists НМТ m : L(m)=L, \delta (m,x) \le f(|x|) \}</tex>. |
===Класс <tex>\Sigma_1</tex>=== | ===Класс <tex>\Sigma_1</tex>=== | ||
− | Классом <tex>\Sigma_1</tex> называется класс языков(задач) L, таких что для каждого из них существует полиномиальный верификатор сертификата(утверждения) R, а также полином p, такие что слово l принадлежит языку L тогда и только тогда, когда существует сертификат(утверждение) y, длина которого не превосходит заданного полинома p, и сертификат удовлетворяет верификатору. | + | Классом <tex>\Sigma_1</tex> называется класс языков (задач) L, таких что для каждого из них существует полиномиальный верификатор сертификата(утверждения) R, а также полином p, такие что слово l принадлежит языку L тогда и только тогда, когда существует сертификат(утверждение) y, длина которого не превосходит заданного полинома p, и сертификат удовлетворяет верификатору. |
<tex>\Sigma_1 = \{L|\exists R(x,y) \in Poly, p \in Poly | l \in L \Leftrightarrow \exists y, |y| \le p(x) | R(x,y)=1\}</tex> | <tex>\Sigma_1 = \{L|\exists R(x,y) \in Poly, p \in Poly | l \in L \Leftrightarrow \exists y, |y| \le p(x) | R(x,y)=1\}</tex> | ||
Строка 23: | Строка 26: | ||
Построим доказательство равенство из доказательств двух взаимных включений. | Построим доказательство равенство из доказательств двух взаимных включений. | ||
− | < | + | <tex>\Sigma_1 \subset NP</tex> |
− | |||
− | |||
− | + | Построим программу, работающую за полином (из свойств машины Тьюринга, возможно построить аналогичную машину Тьюринга, работающюю за полиномиальное время, возможно большее), которая будет проверять решение задачи, входящей в класс <tex>\Sigma_1</tex>. Таким образом покажем вхождение класса <tex>\Sigma_1 </tex> в NP. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | </ | ||
Вхождение доказано. | Вхождение доказано. | ||
− | < | + | <tex>NP \subset \Sigma_1</tex> |
Пусть <tex> L \in NP </tex>. Тогда существует НМТ m, распознающая L. Построим сертификат y как последовательность недетерминированных выборов машины m, приводящих к допуску слова. Верификатором сертификата R выберем структуру, симулирующую НМТ, возвращающую 0 при ошибке выполнения или завершении работы в недопускающем состоянии, и 1, если работа НМТ завершилась корректно в допускающем состоянии. Таким образом, <tex> L \in \Sigma_1 </tex>, что и требовалось доказать. | Пусть <tex> L \in NP </tex>. Тогда существует НМТ m, распознающая L. Построим сертификат y как последовательность недетерминированных выборов машины m, приводящих к допуску слова. Верификатором сертификата R выберем структуру, симулирующую НМТ, возвращающую 0 при ошибке выполнения или завершении работы в недопускающем состоянии, и 1, если работа НМТ завершилась корректно в допускающем состоянии. Таким образом, <tex> L \in \Sigma_1 </tex>, что и требовалось доказать. | ||
Строка 45: | Строка 40: | ||
==Примеры задач класса NP== | ==Примеры задач класса NP== | ||
* Задача о нахождении независимого множества заданного размера в графе. IND | * Задача о нахождении независимого множества заданного размера в графе. IND | ||
− | * Задача о нахождении клики заданного размера в графе. | + | * Задача о нахождении клики заданного размера в графе. CLIQUE |
* Задача о нахождении вершинного покрытия заданного размера в графе. COVER | * Задача о нахождении вершинного покрытия заданного размера в графе. COVER | ||
* Задача о удовлетворении булевой формулы, заданной в КНФ. SAT | * Задача о удовлетворении булевой формулы, заданной в КНФ. SAT |
Версия 17:12, 18 марта 2010
В теории сложности Класс
- класс языков (задач), ответ на которые можно проверить за полиномиальное времяСодержание
Определение
Определение класса NP через Класс NTIME.
NTIME
Классом NTIME(f) по аналогии с DTIME называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и время ее работы не превосходит , где - длина входа.
.
NSPACE
Классом NSPACE(f) по аналогии с DSPACE называется класс языков(задач), для которых существует недетерминированная машина Тьюринга, такая, что она всегда останавливается, и память, используемая ею на любом входе, не больше , где длина входа.
.
Класс
Классом
называется класс языков (задач) L, таких что для каждого из них существует полиномиальный верификатор сертификата(утверждения) R, а также полином p, такие что слово l принадлежит языку L тогда и только тогда, когда существует сертификат(утверждение) y, длина которого не превосходит заданного полинома p, и сертификат удовлетворяет верификатору.
Теорема о равенстве и
Формулировка
Доказательство
Построим доказательство равенство из доказательств двух взаимных включений.
Построим программу, работающую за полином (из свойств машины Тьюринга, возможно построить аналогичную машину Тьюринга, работающюю за полиномиальное время, возможно большее), которая будет проверять решение задачи, входящей в класс
. Таким образом покажем вхождение класса в NP.Вхождение доказано.
Пусть
. Тогда существует НМТ m, распознающая L. Построим сертификат y как последовательность недетерминированных выборов машины m, приводящих к допуску слова. Верификатором сертификата R выберем структуру, симулирующую НМТ, возвращающую 0 при ошибке выполнения или завершении работы в недопускающем состоянии, и 1, если работа НМТ завершилась корректно в допускающем состоянии. Таким образом, , что и требовалось доказать.Теорема доказана
Примеры задач класса NP
- Задача о нахождении независимого множества заданного размера в графе. IND
- Задача о нахождении клики заданного размера в графе. CLIQUE
- Задача о нахождении вершинного покрытия заданного размера в графе. COVER
- Задача о удовлетворении булевой формулы, заданной в КНФ. SAT