Классы NP, coNP, Σ₁, Π₁ — различия между версиями
Iloskutov (обсуждение | вклад) (→Примеры языков из NP: переформатировал примеры) |
Iloskutov (обсуждение | вклад) (→Примеры языков из coNP: переоформил примеры, доказал первый) |
||
| Строка 105: | Строка 105: | ||
== Примеры языков из coNP == | == Примеры языков из coNP == | ||
| − | + | === Дополнение к задаче о сумме подмножеств === | |
| − | + | Языком этой задачи являются такие множества целых чисел, что сумма любого их непустого подмножества ненулевая. Этот язык является дополнением языка таких кортежей целых чисел, что какое-то их непустое подмножество имеет сумму ноль, разрешаемого за полиномиальное время следующей программой: | |
| + | <tex>r(S)\colon</tex> | ||
| + | <tex>Z \gets? \{ 0, 1 \}^{|S|}</tex> | ||
| + | '''if''' <tex>Z = 0^{|S|}</tex> '''or''' <tex>\sum_{i=0}^{|S|} S[i] \cdot Z[i] \ne 0</tex> | ||
| + | '''return''' ''false'' | ||
| + | '''else''' | ||
| + | '''return''' ''true'' | ||
| + | |||
| + | === TAUT === | ||
| + | Требуется определить, является ли заданная булева формула тавтологией. К этой задаче тривиально сводится дополнение к <tex>\mathrm{SAT}</tex>: если отрицание формулы невыполнимо, то она является тавтологией, и наоборот. | ||
== Связь P и NP == | == Связь P и NP == | ||
Версия 20:44, 24 марта 2016
Содержание
Определения, связь Σ₁ и NP
| Определение: |
| . |
То есть — это множество языков, разрешимых недетерминированной программой за полиномиальное время.
| Определение: |
| . |
То есть — это множество языков, дополнение к которым лежит в .
| Определение: |
| . |
Нестрого говоря, — это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) можно предъявить сертификат полиномиальной длины, подтверждающий принадлежность слова языку и проверяемый верификатором.
| Определение: |
| . |
То есть — это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) нельзя предъявить сертификат длины, ограниченной неким полиномом, опровергающий принадлежность слова языку и проверяемый верификатором. Легко видеть, что — множество языков, дополнения к которым лежат в .
| Теорема: |
. |
| Доказательство: |
|
.
q(x):
y =
return R(x,y)
.
|
Примечание: определение часто называют также «определением на языке сертификатов», а , соответственно, «определением на языке сертификатов».
Свойства
| Теорема: |
Пусть . Тогда:
|
| Доказательство: |
|
Пусть разрешает , а разрешает . 1. Построим программу , разрешающую : r(x): return p(x) and q(x) 2. Построим программу , разрешающую : r(x): return p(x) or q(x) 3. Построим программу , разрешающую : r(x): n = x mid =? {1 .. n} return p(x[1 .. mid]) and q(x[mid+1 .. n]) 4. Построим программу , разрешающую :
r(x): n = x prev = 1 do cur =? {prev .. n} if not p(x[prev .. cur]) return false prev = cur + 1 while cur != n return true
|
Примеры языков из NP
Проблема раскраски вершин графа в цветов
Разрешается следующей недетерминированной программой за полиномиальное относительно числа вершин время:
n = c for in if c[u] == c[v] return false return true
Проблема нахождения гамильтонова цикла
n = p for i = 1 to n if v[i] not in p return false p[n + 1] = p[1] for i = 1 to n 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 выполнимость.