Классы NP, coNP, Σ₁, Π₁ — различия между версиями
Iloskutov (обсуждение | вклад) (→Проблема раскраски вершин графа в k цветов: переформулировал в терминах принадлежности языку, пофиксил время работы) |
Iloskutov (обсуждение | вклад) (→Примеры языков из NP: добавил ссылки на основные статьи для примеров, добавил больше теха в псевдокод) |
||
Строка 69: | Строка 69: | ||
== Примеры языков из NP == | == Примеры языков из NP == | ||
− | === | + | === Язык задачи о раскраске вершин графа в <tex>k</tex> цветов === |
+ | {{main|Раскраска графа}} | ||
Переформулируем задачу в терминах принадлежности языку: пусть <tex> L = \{ \langle G, k \rangle \mid </tex> вершины <tex>G</tex> можно раскрасить в <tex>k</tex> цветов <tex>\}</tex>. | Переформулируем задачу в терминах принадлежности языку: пусть <tex> L = \{ \langle G, k \rangle \mid </tex> вершины <tex>G</tex> можно раскрасить в <tex>k</tex> цветов <tex>\}</tex>. | ||
Строка 81: | Строка 82: | ||
'''return''' ''true'' | '''return''' ''true'' | ||
− | === | + | === Язык гамильтоновых графов === |
+ | {{main|Гамильтоновы графы}} | ||
<tex>r(G)\colon</tex> | <tex>r(G)\colon</tex> | ||
− | + | <tex>n = |V(G)|</tex> | |
− | + | <tex>p \gets?\ V(G) ^ n</tex> | |
− | '''for''' | + | '''for''' <tex>v</tex> '''in''' <tex>V(G)</tex> |
− | '''if''' v | + | '''if''' <tex>v \notin p</tex> |
'''return''' ''false'' | '''return''' ''false'' | ||
− | p[n + 1] = p[1] | + | <tex>p[n + 1] = p[1]</tex> |
− | '''for''' i = 1 '''to''' n | + | '''for''' <tex>i = 1</tex> '''to''' <tex>n</tex> |
'''if''' <tex>p[i]p[i + 1] \notin E(G)</tex> | '''if''' <tex>p[i]p[i + 1] \notin E(G)</tex> | ||
'''return''' ''false'' | '''return''' ''false'' |
Версия 21:08, 30 марта 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
Задача о клике
n = c for in for in if and and and return false return true
Все эти языки также являются . По -полнымитеореме Ладнера, если , то существует язык из , не являющийся -полным.
Примеры языков из coNP
Дополнение к задаче о сумме подмножеств
Языком этой задачи являются такие множества целых чисел, что сумма любого их непустого подмножества ненулевая. Этот язык является дополнением языка таких кортежей целых чисел, что какое-то их непустое подмножество имеет сумму ноль, разрешаемого за полиномиальное время следующей программой:
if or return false else return true
TAUT
Требуется определить, является ли заданная булева формула тавтологией. К этой задаче тривиально сводится дополнение к
: если отрицание формулы невыполнимо, то она является тавтологией, и наоборот.Связь P и NP
Очевидно, что редкий ; было доказано, что -полный языкдоказательство должно быть нерелятивизующимся; различные попытки найти полиномиальные решения для задач из :
, так как детерминированные программы можно рассматривать как недетерминированные, в которых не используется недетерминированный выбор. Вопрос о равенстве данных классов до сих пор остается открытым. Были осуществлены различные подходы к разрешению этой задачи: попытка найтиНекоторые задачи из
очень похожи на задачи из . В каждой из приведенных ниже пар задач первая разрешима за полиномиальное время, а вторая является -полной. При этом различие между задачами кажется совершенно незначительным.- Поиск самых коротких и самых длинных простых путей;
- Эйлеров и гамильтонов циклы;
- 2-CNF и 3-CNF выполнимость.