Классы NP, coNP, Σ₁, Π₁ — различия между версиями
Строка 60: | Строка 60: | ||
}} | }} | ||
− | == Примеры NP | + | == Примеры языков из NP == |
− | * Язык раскрасок графа в <tex>k</tex> цветов | + | * Язык раскрасок графа в <tex>k</tex> цветов. |
− | * Задача о клике | + | * Задача о клике. |
− | * [http://arxiv.org/abs/cs.CC/0210020 Тетрис] | + | * [http://arxiv.org/abs/cs.CC/0210020 Тетрис]. |
Все эти языки также являются [[Примеры_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>-полным. | ||
Версия 11:59, 9 июня 2012
Определение
Определение: |
. |
То есть
— это множество языков, разрешимых недетерминированной программой за полиномиальное время.Определение: |
. |
Нестрого говоря,
— это множество языков, для которых существует работающая за полиномиальное время детерминированная программа-верификатор , а для каждого слова из языка (и только для слова из языка) можно предъявить сертификат полиномиальной длины, подтверждающий принадлежность слова языку и проверяемый верификатором.Теорема: |
. |
Доказательство: |
Пусть . Тогда существуют и полином из определения . Построим недетерминированную программу , разрешающую . q(x):
y ←
return R(x,y)
Если , то программа сможет «угадать» подходящий сертификат. Если , то подходящего сертификата не существует по определению. Таким образом, разрешает , следовательно .
|
Примечание: определение
часто называют также «определением NP на языке сертификатов».Свойства
Теорема: |
Пусть . Тогда:
|
Доказательство: |
Пусть разрешает , а разрешает .1. Построим программу , разрешающую :r(x): return p(x) && q(x) 2. Построим программу , разрешающую : r(x):
return p(x)
q(x)
3. Построим программу , разрешающую :r(x): n ←x mid ←? {1..n} return p(x[1..mid]) && q(x[mid+1..n]) 4. Построим программу , разрешающую :r(x): n ←x prev ← 1 do cur ←? {prev..n} if (!p(x[prev..cur])) return false prev ← cur+1 while (cur != n) return true |
Примеры языков из NP
- Язык раскрасок графа в цветов.
- Задача о клике.
- Тетрис.
Все эти языки также являются . По -полнымитеореме Ладнера существует язык из , не являющийся -полным.
Связь P и NP
Очевидно, что редкий ; было доказано, что -полный языкдоказательство должно быть нерелятивизующимся; различные попытки найти полиномиальные решения для задач из :
, так как детерминированные программы можно рассматривать как недетерминированные, в которых не используется недетерминированный выбор. Вопрос о равенстве данных классов до сих пор остается открытым. Были осуществлены различные подходы к разрешению этой задачи: попытка найтиНекоторые задачи из
очень похожи на задачи из . В каждой из приведенных ниже пар задач первая разрешима за полиномиальное время, а вторая является -полной. При этом различие между задачами кажется совершенно незначительным.- Поиск самых коротких и самых длинных простых путей;
- Эйлеров и гамильтонов циклы;
- 2-CNF и 3-CNF выполнимость.