Классы NP, coNP, Σ₁, Π₁ — различия между версиями
Iloskutov (обсуждение | вклад) (→Связь P и NP: заменил интервики про гамильтонов цикл) |
Iloskutov (обсуждение | вклад) (→Свойства: ехало полиномиальное время через полиномиальное время, видит полиномиальное время: в полиномиальное время полиномиальное) |
||
| Строка 43: | Строка 43: | ||
Пусть <tex>p</tex> разрешает <tex>L_1</tex>, а <tex>q</tex> разрешает <tex>L_2</tex>. | Пусть <tex>p</tex> разрешает <tex>L_1</tex>, а <tex>q</tex> разрешает <tex>L_2</tex>. | ||
| − | :1. Построим программу <tex>r</tex>, разрешающую <tex>L_1\cap L_2</tex>: | + | :1. Построим программу <tex>r</tex>, разрешающую <tex>L_1\cap L_2</tex> за полиномиальное время: |
<tex>r(x)\colon</tex> | <tex>r(x)\colon</tex> | ||
'''return''' <tex>p(x)</tex> '''and''' <tex>q(x)</tex> | '''return''' <tex>p(x)</tex> '''and''' <tex>q(x)</tex> | ||
| − | :2. Построим программу <tex>r</tex>, разрешающую <tex>L_1\cup L_2</tex>: | + | :2. Построим программу <tex>r</tex>, разрешающую <tex>L_1\cup L_2</tex> за полиномиальное время: |
<tex>r(x)\colon</tex> | <tex>r(x)\colon</tex> | ||
'''return''' <tex>p(x)</tex> '''or''' <tex>q(x)</tex> | '''return''' <tex>p(x)</tex> '''or''' <tex>q(x)</tex> | ||
| − | :3. Построим программу <tex>r</tex>, разрешающую <tex>L_1L_2</tex>: | + | :3. Построим программу <tex>r</tex>, разрешающую <tex>L_1L_2</tex> за полиномиальное время: |
<tex>r(x)\colon</tex> | <tex>r(x)\colon</tex> | ||
<tex>n = |x|</tex> | <tex>n = |x|</tex> | ||
<tex>mid \gets?\ \{1 \mathinner{\ldotp\ldotp} n\}</tex> | <tex>mid \gets?\ \{1 \mathinner{\ldotp\ldotp} n\}</tex> | ||
'''return''' <tex>p(x[1 \mathinner{\ldotp\ldotp} mid])</tex> '''and''' <tex>q(x[mid+1 \mathinner{\ldotp\ldotp} n])</tex> | '''return''' <tex>p(x[1 \mathinner{\ldotp\ldotp} mid])</tex> '''and''' <tex>q(x[mid+1 \mathinner{\ldotp\ldotp} n])</tex> | ||
| − | :4. Построим программу <tex>r</tex>, разрешающую <tex>L_1^*</tex>: | + | :4. Построим программу <tex>r</tex>, разрешающую <tex>L_1^*</tex> за полиномиальное время: |
<tex>r(x)\colon</tex> | <tex>r(x)\colon</tex> | ||
<tex>n = |x|</tex> | <tex>n = |x|</tex> | ||
Версия 00:21, 8 апреля 2016
Содержание
Определения, связь Σ₁ и NP
| Определение: |
| . |
То есть — это множество языков, разрешимых недетерминированной программой за полиномиальное время.
| Определение: |
| . |
То есть — это множество языков, дополнение к которым лежит в .
| Определение: |
| . |
Нестрого говоря, — это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) можно предъявить сертификат полиномиальной длины, подтверждающий принадлежность слова языку и проверяемый верификатором.
| Определение: |
| . |
То есть — это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) нельзя предъявить сертификат длины, ограниченной неким полиномом, опровергающий принадлежность слова языку и проверяемый верификатором. Легко видеть, что — множество языков, дополнения к которым лежат в .
| Теорема: |
. |
| Доказательство: |
|
.
return
.
|
Примечание: определение часто называют также «определением на языке сертификатов», а , соответственно, «определением на языке сертификатов».
Свойства
| Теорема: |
Пусть . Тогда:
|
| Доказательство: |
|
Пусть разрешает , а разрешает .
return and
return or
return and
do if not return false while return true
|
Примеры языков из NP
Язык палиндромов
Этот язык разрешается автоматом с магазинной памятью, то есть принадлежит , а следовательно, и .
Язык задачи о раскраске вершин графа в цветов
Переформулируем задачу в терминах принадлежности языку: пусть вершины можно раскрасить в цветов .
Этот язык разрешается следующей недетерминированной программой за полиномиальное относительно числа вершин и рёбер время:
for in if == return false return true
Язык гамильтоновых графов
Рассмотрим следующий язык: содержит гамильтонов цикл. Он разрешается следующей программой, работающей за полиномиальное относительно числа вершин время:
for in if return false for to if return false return true
Два последних языка также являются -полными. По теореме Ладнера, если , то существует язык из , не являющийся -полным.
Примеры языков из coNP
Язык графов, не являющихся гамильтоновыми
Этот язык принадлежит , так как является дополнением к языку гамильтоновых графов, принадлежащему , как показано выше.
TAUT
Язык булевых формул, являющихся тавтологиями. К этому языку тривиально сводится дополнение к : если отрицание формулы невыполнимо, то она является тавтологией, и наоборот.
Связь P и NP
Очевидно, что , так как детерминированные программы можно рассматривать как недетерминированные, в которых не используется недетерминированный выбор. Вопрос о равенстве данных классов до сих пор остается открытым. Были осуществлены различные подходы к разрешению этой задачи: попытка найти редкий -полный язык; было доказано, что доказательство должно быть нерелятивизующимся. Кроме того, были предприняты различные попытки найти полиномиальные решения для задач из :
Некоторые задачи из очень похожи на задачи из , при этом различие между задачами кажется совершенно незначительным:
| Принадлежит | -полная |
|---|---|
| Поиск самых коротких простых путей | Поиск самых длинных простых путей[3] |
| Эйлеров цикл | Гамильтонов цикл |
| 2-CNF выполнимость | 3-CNF выполнимость |