NP-полнота задачи о независимом множестве — различия между версиями
м (→Задача о независимом множестве является NP-трудной) |
м (→Задача о независимом множестве является NP-трудной) |
||
Строка 11: | Строка 11: | ||
Пусть задана булева формула в <math>3SAT</math>, в которой <math>k</math> скобок. Построим для нее соответствующий граф. Для каждой скобки нарисуем три вершины, соединим их попарно ребрами и подпишем их именами соответствующих переменных. При этом если переменная входит в формулу с отрицанием, отобразим это в графе. Так же соединим ребрами пары вершин вида <math>x,\neg x</math>. | Пусть задана булева формула в <math>3SAT</math>, в которой <math>k</math> скобок. Построим для нее соответствующий граф. Для каждой скобки нарисуем три вершины, соединим их попарно ребрами и подпишем их именами соответствующих переменных. При этом если переменная входит в формулу с отрицанием, отобразим это в графе. Так же соединим ребрами пары вершин вида <math>x,\neg x</math>. | ||
− | <math>(\ | + | <math>(\neg x\lor y\lor z)\land (x \lor y \lor \neg z) \to</math>[[Файл:IND_GRAPH.png]] |
− | Докажем, что формула выполнима тогда и только тогда, когда в соответствующем графе есть независимое множество из <math>k</math> вершин. Пусть формула выполнима, тогда в каждой скобке есть хотя бы одна переменная, принимающая значение “истина” (учитываем отрицание, если оно есть). Выберем соответствующую переменную в качестве вершины в графе. Полученное множество вершин является независимым, так как ребрами соединены только те вершины, которые соответствуют переменным из одной скобки(а мы выбирали только одну переменную из каждой скобки), а так же вершины вида <math>x,\neg x</math>, соответствующие переменные которых не могут одновременно принимать значение | + | Докажем, что формула выполнима тогда и только тогда, когда в соответствующем графе есть независимое множество из <math>k</math> вершин. Пусть формула выполнима, тогда в каждой скобке есть хотя бы одна переменная, принимающая значение “истина” (учитываем отрицание, если оно есть). Выберем соответствующую переменную в качестве вершины в графе. Полученное множество вершин является независимым, так как ребрами соединены только те вершины, которые соответствуют переменным из одной скобки(а мы выбирали только одну переменную из каждой скобки), а так же вершины вида <math>x,\neg x</math>, соответствующие переменные которых не могут одновременно принимать значение “истина”. Пусть теперь в графе есть независимое множество, размера <math>k</math>. Тогда в каждой тройке вершин, соответствующих некоторой скобке, выбрана ровно одна вершина. Установим значение соответствующей переменной “истина”(с учетом отрицания). Это можно сделать, так как нет ребер между вершинами вида <math>x,\neg x</math>. Тогда в каждой скобке, будет хотя бы одна переменная, имеющая значение “истина”, значит вся формула будет принимать значение “истина”. Построение по формуле соответствующего графа можно сделать за полиномиальное время. |
===Задача о независимом множестве принадлежит классу NP=== | ===Задача о независимом множестве принадлежит классу NP=== | ||
В качестве сертификата возьмем набор из <math>k</math> вершин. За время <math>O(k^2)</math> можно проверить, является ли данное множество вершин независимым. | В качестве сертификата возьмем набор из <math>k</math> вершин. За время <math>O(k^2)</math> можно проверить, является ли данное множество вершин независимым. |
Версия 16:15, 19 марта 2010
Содержание
Формулировка
Языком IND называют множество пар
, где - неориентированный граф, - натуральное число. Слово принадлежит языку IND, если ли граф содержит подграф размером , никакая пара вершин в котором не соединена ребром. Задача о независимом множестве является NP-полной.Доказательство NP-полноты
Для доказательства NP-полноты задачи о независимом множестве покажем, что она является NP-трудной и принадлежит классу NP.
Задача о независимом множестве является NP-трудной
Для доказательства этого сведем по Карпу задачу к нашей:
Пусть задана булева формула в
, в которой скобок. Построим для нее соответствующий граф. Для каждой скобки нарисуем три вершины, соединим их попарно ребрами и подпишем их именами соответствующих переменных. При этом если переменная входит в формулу с отрицанием, отобразим это в графе. Так же соединим ребрами пары вершин вида .Докажем, что формула выполнима тогда и только тогда, когда в соответствующем графе есть независимое множество из
вершин. Пусть формула выполнима, тогда в каждой скобке есть хотя бы одна переменная, принимающая значение “истина” (учитываем отрицание, если оно есть). Выберем соответствующую переменную в качестве вершины в графе. Полученное множество вершин является независимым, так как ребрами соединены только те вершины, которые соответствуют переменным из одной скобки(а мы выбирали только одну переменную из каждой скобки), а так же вершины вида , соответствующие переменные которых не могут одновременно принимать значение “истина”. Пусть теперь в графе есть независимое множество, размера . Тогда в каждой тройке вершин, соответствующих некоторой скобке, выбрана ровно одна вершина. Установим значение соответствующей переменной “истина”(с учетом отрицания). Это можно сделать, так как нет ребер между вершинами вида . Тогда в каждой скобке, будет хотя бы одна переменная, имеющая значение “истина”, значит вся формула будет принимать значение “истина”. Построение по формуле соответствующего графа можно сделать за полиномиальное время.Задача о независимом множестве принадлежит классу NP
В качестве сертификата возьмем набор из
вершин. За время можно проверить, является ли данное множество вершин независимым.