Примеры NP-полных языков. Теорема Кука — различия между версиями
Строка 259: | Строка 259: | ||
== Другие примеры NP-полных языков == | == Другие примеры NP-полных языков == | ||
=== NP-полнота CNFSAT === | === NP-полнота CNFSAT === | ||
− | <tex> \mathrm{CNFSAT} </tex>{{---}} язык булевых формул, заданных в [[КНФ]], таких что для них существует подстановка, при которой формула истинна. | + | <tex> \mathrm{CNFSAT} </tex> {{---}} язык булевых формул, заданных в [[КНФ]], таких что для них существует подстановка, при которой формула истинна. |
<tex> \mathrm{CNFSAT} = \lbrace \varphi(x_1 \ldots x_n) \bigm| \varphi </tex> задано в КНФ и <tex> \exists x_1 \ldots x_n : \varphi(x_1 \ldots x_n) = 1 \rbrace </tex> | <tex> \mathrm{CNFSAT} = \lbrace \varphi(x_1 \ldots x_n) \bigm| \varphi </tex> задано в КНФ и <tex> \exists x_1 \ldots x_n : \varphi(x_1 \ldots x_n) = 1 \rbrace </tex> | ||
Строка 280: | Строка 280: | ||
}} | }} | ||
=== NP-полнота 3-SAT === | === NP-полнота 3-SAT === | ||
− | <tex> \mathrm{3SAT} </tex>{{---}} язык булевых формул, заданных в [[КНФ]], таких что каждый дизъюнкт состоит ровно из 3 переменных и для этой булевой формулы существует подстановка, при которой она истинна. | + | <tex> \mathrm{3SAT} </tex> {{---}} язык булевых формул, заданных в [[КНФ]], таких что каждый дизъюнкт состоит ровно из 3 переменных и для этой булевой формулы существует подстановка, при которой она истинна. |
<tex> \mathrm{3SAT} = \lbrace \varphi(x_1 \ldots x_n) \bigm| \varphi </tex> задано в 3КНФ и <tex> \exists x_1 \ldots x_n : \varphi(x_1 \ldots x_n) = 1 \rbrace </tex> | <tex> \mathrm{3SAT} = \lbrace \varphi(x_1 \ldots x_n) \bigm| \varphi </tex> задано в 3КНФ и <tex> \exists x_1 \ldots x_n : \varphi(x_1 \ldots x_n) = 1 \rbrace </tex> | ||
Строка 295: | Строка 295: | ||
}} | }} | ||
=== NP-полнота поиска максимального независимого множества === | === NP-полнота поиска максимального независимого множества === | ||
− | <tex> \mathrm{IND} </tex>{{---}} язык неориентированных графов, таких что в графе есть независимое множество | + | <tex> \mathrm{IND} </tex> {{---}} язык неориентированных графов, таких что в графе есть независимое множество мощности <tex> k </tex>. |
<tex> \mathrm{IND} = \lbrace \langle G, k \rangle \bigm| \exists H \subset V(G) </tex>, такое что <tex> H </tex> независимо в <tex> G \rbrace </tex> | <tex> \mathrm{IND} = \lbrace \langle G, k \rangle \bigm| \exists H \subset V(G) </tex>, такое что <tex> H </tex> независимо в <tex> G \rbrace </tex> | ||
Строка 314: | Строка 314: | ||
}} | }} | ||
=== NP-полнота поиска минимального вершинного покрытия в графе === | === NP-полнота поиска минимального вершинного покрытия в графе === | ||
− | + | ||
− | == | + | <tex> \mathrm{VCOVER} </tex> {{---}} язык неориентированных графов, таких что в графе есть вершинное покрытие мощности <tex> k </tex>. |
− | = | + | |
+ | <tex> \mathrm{VCOVER} = \lbrace \langle G, k \rangle \bigm| \exists H \subset V(G) : \forall vu \in E(G), (v \in H) \lor (u \in H) \rbrace </tex> | ||
+ | {{Лемма | ||
+ | |statement = <tex> G </tex> {{---}} неориентированный граф. <tex> H \subset G </tex> является независимым множеством в <tex> G \Rightarrow G \setminus H </tex> является вершинным покрытием в <tex> G </tex>. | ||
+ | |proof= | ||
+ | * <tex> \Rightarrow </tex> | ||
+ | Пусть <tex> H </tex> {{---}} независимое множество. Заметим, что по определению независимого множества <tex> \forall vu \in E(G) : (v \notin H) \lor (u \notin H) </tex>, из чего следует, что <tex> (v \in (G \setminus H)) \lor (u \in (G \setminus H)) </tex>, это значит, что <tex> G \setminus H </tex> {{---}} вершинное покрытие. | ||
+ | * <tex> \Leftarrow </tex> | ||
+ | Пусть <tex> H </tex> {{---}} вершинное покрытие. Заметим, что <tex> \forall vu \in E(G) : (v \in H) \lor (u \in H) </tex>, из чего следует, что <tex> (v \notin (G \setminus H)) \lor (u \notin (G \setminus H)) </tex>, это значит, что <tex> G \setminus H </tex> {{---}} независимое множество. | ||
+ | }} | ||
+ | |||
+ | {{Теорема | ||
+ | |statement= <tex> \mathrm{VCOVER} \in \mathrm{NPC} </tex> | ||
+ | |proof= | ||
+ | #<tex> \mathrm{VCOVER} \in \mathrm{NP} </tex> <br> Можно написать недетерминированную программу <tex>p</tex>, которая распознает язык <tex> \mathrm{VCOVER} </tex>. Она будет недетерминированно выбирать множество вершин мощности <tex> k </tex>, проверять, является ли это множество вершинным покрытием, это можно сделать за полином, и выдавать ответ. | ||
+ | # <tex> \mathrm{VCOVER} \in \mathrm{NPH} </tex> <br>Сведем задачу <tex> \mathrm{IND} </tex> к задаче <tex> \mathrm{VCOVER} </tex>. Построим функцию <tex> f(x) </tex>, которая будет строить паре <tex> \langle G, k \rangle </tex>, пару <tex> \langle H, l \rangle </tex>, такую что <tex> x \in \mathrm{IND} \Leftrightarrow f(x) \in \mathrm{VCOVER} </tex>, причем <tex> |f(x)| \le p(|x|) </tex> для некоторого полинома <tex> p </tex>. <br> <tex> f(\langle G, k \rangle) = \langle G, |V(G)| - k \rangle </tex> <br> Из доказанной выше леммы, следует, что <tex> \langle G, k \rangle \in \mathrm{IND} \Leftrightarrow \langle G, |V(G)| - k \rangle \in \mathrm{VCOVER} </tex> | ||
+ | }} | ||
+ | |||
== Ссылки == | == Ссылки == |
Версия 14:30, 18 июня 2012
Эта статья находится в разработке!
Содержание
Введение
В этой статье мы рассмотрим класс
-полных языков — . является одним из важнейших классов в теории сложности, так как если найдется язык из этого класса, который также входит в класс , тогда окажется, что .Мы рассмотрим некоторые языки и докажем их сведений по Карпу будем сводить уже известные языки из к новым языкам, тем самым доказывая их -трудность, а потом и -полноту. Доказательство -полноты будет состоять из двух пунктов: доказательство -трудности и принадлежности языка классу .
-полноту. Начнем мы с языка , так как к нему несложно сводятся все языки из . Потом с помощьюNP-полнота
— язык троек , таких что недетерминированная машина Тьюринга на входной строке возращает за время .
— недетерминированная машина Тьюринга,
Теорема: |
Доказательство: |
|
NP-полнота
— язык булевых формул из переменных, для которых существует подстановка, при которой формула истинна.
Теорема (Кук): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Доказательство: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Другие примеры NP-полных языков
NP-полнота CNFSAT
КНФ, таких что для них существует подстановка, при которой формула истинна.
— язык булевых формул, заданных взадано в КНФ и
Теорема: |
Доказательство: |
|
NP-полнота 3-SAT
КНФ, таких что каждый дизъюнкт состоит ровно из 3 переменных и для этой булевой формулы существует подстановка, при которой она истинна.
— язык булевых формул, заданных взадано в 3КНФ и
Теорема: |
Доказательство: |
|
NP-полнота поиска максимального независимого множества
— язык неориентированных графов, таких что в графе есть независимое множество мощности .
, такое что независимо в
Теорема: |
Доказательство: |
|
NP-полнота поиска минимального вершинного покрытия в графе
— язык неориентированных графов, таких что в графе есть вершинное покрытие мощности .
Лемма: |
— неориентированный граф. является независимым множеством в является вершинным покрытием в . |
Доказательство: |
Пусть — независимое множество. Заметим, что по определению независимого множества , из чего следует, что , это значит, что — вершинное покрытие. |
Теорема: |
Доказательство: |
|