Примеры NP-полных языков. Теорема Кука — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «{{В разработке}} == Введение == В этой статье мы рассмотрим класс NP-полных языков {{---}} NPC. NPC я...»)
 
Строка 11: Строка 11:
  
 
== NP-полнота <tex> BH_{1N} </tex> ==
 
== NP-полнота <tex> BH_{1N} </tex> ==
BH_{1N} {{---}} язык троек <tex> \langle m, x, 1^t \rangle </tex>, таких что недетерминированная машина Тьюринга <tex> m </tex> на входной строке <tex> x </tex> возращает 1 за время <tex> T(m, x) \le t </tex>.
+
<tex> BH_{1N} </tex> {{---}} язык троек <tex> \langle m, x, 1^t \rangle </tex>, таких что недетерминированная машина Тьюринга <tex> m </tex> на входной строке <tex> x </tex> возращает 1 за время <tex> T(m, x) \le t </tex>.
  
<tex> BH_{1N} = \lbrace \langle m, x, 1^t \rangle \rbrace </tex>
+
<tex> BH_{1N} = \lbrace \langle m, x, 1^t \rangle | m </tex> {{---}} недерминированная машина Тьюринга, <tex> m(x) = 1, T(m,x) \le t \rbrace </tex>
 
{{Теорема
 
{{Теорема
 
|statement=<tex> BH_{1N} \in NPC </tex>
 
|statement=<tex> BH_{1N} \in NPC </tex>
Строка 19: Строка 19:
 
# <tex> BH_{1N} \in NPH </tex>
 
# <tex> BH_{1N} \in NPH </tex>
 
# <tex> BH_{1N} \in NP </tex>
 
# <tex> BH_{1N} \in NP </tex>
 +
}}
 +
 +
== NP-полнота <tex> SAT </tex> ==
 +
<tex> SAT </tex> {{---}} язык булевых формул, для которых существует подстановка, при которой формула истинна.
 +
 +
<tex> SAT = \lbrace \varphi\ |\ \exists x : \varphi(x) = 1 \rbrace </tex>
 +
{{Теорема
 +
|author=Кук
 +
|statement=<tex> SAT \in NPC </tex>
 +
|proof=
 +
# <tex> SAT \in NPH </tex>
 +
# <tex> SAT \in NP </tex> <br>Можно написать недетерминированную программу, которая распознает язык SAT. Она будет недетерминированно выбирать подстановку, проверять истинна ли формула при такой подстановке и выдавать ответ.
 
}}
 
}}

Версия 13:20, 15 апреля 2012

Эта статья находится в разработке!

Введение

В этой статье мы рассмотрим класс NP-полных языков — NPC. NPC является одним из важнейших классов в теории сложности, так как если найдется язык из этого класса, который также входит в класс P, тогда окажется, что P = NP.

Мы рассмотрим некоторые языки и докажем их NP-полноту. Начнем мы с языка [math] BH_{1N} [/math], так как к нему несложно сводятся все языки из NP. Потом с помощью сведений по Карпу будем сводить уже известные языки из NPC к новым языкам, тем самым доказывая их NP-трудность, а потом и NP-полноту. Доказательство NP-полноты будет состоять из двух пунктов: доказательство NP-трудности и принадлежности языка классу NP.

NP-полнота [math] BH_{1N} [/math]

[math] BH_{1N} [/math] — язык троек [math] \langle m, x, 1^t \rangle [/math], таких что недетерминированная машина Тьюринга [math] m [/math] на входной строке [math] x [/math] возращает 1 за время [math] T(m, x) \le t [/math].

[math] BH_{1N} = \lbrace \langle m, x, 1^t \rangle | m [/math] — недерминированная машина Тьюринга, [math] m(x) = 1, T(m,x) \le t \rbrace [/math]

Теорема:
[math] BH_{1N} \in NPC [/math]
Доказательство:
[math]\triangleright[/math]
  1. [math] BH_{1N} \in NPH [/math]
  2. [math] BH_{1N} \in NP [/math]
[math]\triangleleft[/math]

NP-полнота [math] SAT [/math]

[math] SAT [/math] — язык булевых формул, для которых существует подстановка, при которой формула истинна.

[math] SAT = \lbrace \varphi\ |\ \exists x : \varphi(x) = 1 \rbrace [/math]

Теорема (Кук):
[math] SAT \in NPC [/math]
Доказательство:
[math]\triangleright[/math]
  1. [math] SAT \in NPH [/math]
  2. [math] SAT \in NP [/math]
    Можно написать недетерминированную программу, которая распознает язык SAT. Она будет недетерминированно выбирать подстановку, проверять истинна ли формула при такой подстановке и выдавать ответ.
[math]\triangleleft[/math]