Изменения

Перейти к: навигация, поиск

NP-полнота задачи о независимом множестве

Нет изменений в размере, 00:06, 31 января 2017
м
ё
<math>3SAT \le_{k} IND</math>
Пусть задана булева формула в <math>3SAT</math>, в которой <math>k</math> скобок. Построим для нее неё соответствующий граф. Для каждой скобки нарисуем три вершины, соединим их попарно ребрами рёбрами и подпишем их именами соответствующих литералов. Так же соединим ребрами рёбрами пары вершин вида <math>x,\neg x</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>. Тогда в каждой скобке, будет хотя бы один литерал, имеющий значение “истина”, значит вся формула будет принимать значение “истина”. Построение по формуле соответствующего графа можно сделать за полиномиальное время.
===Задача о независимом множестве принадлежит классу NP===
В качестве сертификата возьмем набор из <math>k</math> вершин. За время <math>O(k^2)</math> можно проверить, является ли данное множество вершин независимым.

Навигация