Классы NP, coNP, Σ₁, Π₁ — различия между версиями
Iloskutov (обсуждение | вклад) (Добавил определение co-NP, доказал первый пример, поправил псевдокод) |
Iloskutov (обсуждение | вклад) (→Примеры языков из NP: добавил (с доказательством) задачу о гамильтоновом цикле) |
||
Строка 76: | Строка 76: | ||
'''return''' ''false'' | '''return''' ''false'' | ||
'''return''' ''true'' | '''return''' ''true'' | ||
+ | * Проблема нахождения гамильтонова цикла: | ||
+ | r(G): | ||
+ | n = <tex>|V(G)|</tex> | ||
+ | p =<sup>?</sup> <tex>V(G) ^ n</tex> | ||
+ | '''for''' i = 1 '''to''' n | ||
+ | '''if''' v[i] '''not in''' p | ||
+ | '''return''' ''false'' | ||
+ | p[n + 1] = p[1] | ||
+ | '''for''' i = 1 '''to''' n | ||
+ | '''if''' p[i]p[i + 1] '''not in''' <tex>E(G)</tex> | ||
+ | '''return''' ''false'' | ||
+ | '''return''' ''true'' | ||
* Задача о клике. | * Задача о клике. | ||
− | * [ | + | * [[NP-полнота игры Тетрис|Тетрис]]. |
− | Все эти языки также являются [[Примеры_NP-полных_языков._Теорема_Кука|<tex>\mathrm{NP}</tex>-полными]]. По [[Теорема Ладнера|теореме Ладнера]] существует язык из <tex>\mathrm{NP}</tex>, не являющийся <tex>\mathrm{NP}</tex>-полным. | + | Все эти языки также являются [[Примеры_NP-полных_языков._Теорема_Кука|<tex>\mathrm{NP}</tex>-полными]]. По [[Теорема Ладнера|теореме Ладнера]], существует язык из <tex>\mathrm{NP}</tex>, не являющийся <tex>\mathrm{NP}</tex>-полным. |
== Примеры языков из co-NP == | == Примеры языков из co-NP == |
Версия 22:31, 16 марта 2016
Содержание
Определение
Определение: |
. |
То есть
— это множество языков, разрешимых недетерминированной программой за полиномиальное время.Определение: |
. |
То есть
— это множество языков, дополнение к которым лежит в NP.Определение: |
. |
Нестрого говоря,
— это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) можно предъявить сертификат полиномиальной длины, подтверждающий принадлежность слова языку и проверяемый верификатором.Теорема: |
. |
Доказательство: |
Пусть . Тогда существуют и полином из определения . Построим недетерминированную программу , разрешающую .q(x):
y =
return R(x,y)
Если , то программа сможет «угадать» подходящий сертификат. Если , то подходящего сертификата не существует по определению. Таким образом, разрешает , следовательно .
|
Примечание: определение
часто называют также «определением NP на языке сертификатов».Свойства
Теорема: |
Пусть . Тогда:
|
Доказательство: |
Пусть разрешает , а разрешает .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
- Проблема раскраски вершин графа в
Разрешается следующей программой: цветов.
r(G): n =c =? for uv in if c[u] == c[v] return false return true
- Проблема нахождения гамильтонова цикла:
r(G): 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 p[i]p[i + 1] not in return false return true
- Задача о клике.
- Тетрис.
Все эти языки также являются . По -полнымитеореме Ладнера, существует язык из , не являющийся -полным.
Примеры языков из co-NP
- Даны целых чисел. Верно ли, что любое их непустое подмножество имеет ненулевую сумму?
Связь P и NP
Очевидно, что редкий ; было доказано, что -полный языкдоказательство должно быть нерелятивизующимся; различные попытки найти полиномиальные решения для задач из :
, так как детерминированные программы можно рассматривать как недетерминированные, в которых не используется недетерминированный выбор. Вопрос о равенстве данных классов до сих пор остается открытым. Были осуществлены различные подходы к разрешению этой задачи: попытка найтиНекоторые задачи из
очень похожи на задачи из . В каждой из приведенных ниже пар задач первая разрешима за полиномиальное время, а вторая является -полной. При этом различие между задачами кажется совершенно незначительным.- Поиск самых коротких и самых длинных простых путей;
- Эйлеров и гамильтонов циклы;
- 2-CNF и 3-CNF выполнимость.