200 likes | 355 Views
NP- полнота. Основные NP- полные задачи. Задача «Независимое множество». Условие. Задан граф G= ( V , E ) и целое число k . Вопрос. Существует ли независимое множество на k вершинах?
E N D
NP-полнота Основные NP-полные задачи
Задача «Независимое множество» • Условие.Задан граф G=(V,E) и целое число k. • Вопрос.Существует ли независимое множество на k вершинах? • Независимым множеством называется такое подмножество вершин V′ V, что любые две его вершины не соединены ребром в G.
Независимое множество Теорема 3.1 (Karp 1972) Задача «Независимое множество» является NP-полной.
Идея доказательства • «Выполнимость» → «Независимое множество» • «Выполнимость»: • множество переменных X, • набордизъюнкций Z ={Z1,…,Zm} c Zi={λi1,…, λiki} (i = 1,…,m), где λij− литералы на X. • Построим граф G, такой что G имеет независимое множество размера m тогда и только тогда, когда существует набор значений истинности, при котором выполнены все mдизъюнкций.
Сведение • Zi: клика на kiвершинах (вершина соответствует литералу в дизъюнкции) • Вершины разных клик связаны между собой ребром, если они соответствуют литералу и его отрицанию.
Доказательство • Пусть в Gесть независимое множество размера m. • Тогда, оно содержит по одному элементу в каждой клике и не содержит двух вершин, соответствующих литералу и его отрицанию. • То есть, эти вершины определяют по литералу в каждой дизъюнкции. • Положим каждому такому литералу значение trueи дополним до набора значений истинности, который выполняет все дизъюнкции.
Доказательство • Пусть существует набор значений истинности, при котором выполнены все mдизъюнкций. • Выберем в каждой дизъюнкции один литерал со значением true. • Множество соответствующих вершин определяет искомое независимое множество.
Задача «Вершинное покрытие» • Условие.Задан граф G и целое число k. • Вопрос.Существует ли вершинное покрытие мощности k? • Вершинное покрытие это множество вершин V′ V такое, что каждое ребро имеет граничную точку в V′.
Задача «Клика» • Условие.Задан граф G и целое число k. • Вопрос.Существует ли клика мощности k? • Кликой называется такое подмножество вершин V′ V, что любые две его вершины соединены ребром в G.
Вершинное покрытие и клика Теорема 3.2 (Karp 1972) Задача «Вершинное покрытие» и задача «Клика» являются NP-полными.
Задача «Гамильтонов цикл» • Условие.Задан граф G. • Вопрос.Существует ли в G гамильтонов цикл?
Гамильтонов цикл Теорема 3.3 (Karp 1972) Задача «Гамильтонов цикл» является NP-полной.
Идея доказательства • «Вершинное покрытие» → «Гамильтонов цикл» • «Вершинное покрытие»:G = (V,E),k ≥ 0, целое. • Построим граф G′ = (V′,E′), такой что G′ имеет гамильтонов цикл тогда и только тогда, когда в G есть вершинное покрытиеH, состоящее из не более чем kэлементов. • Пусть |E| = m.
Построение графа G′ • |V′| = 12m+k • Каждому ребру (vi, vj) в исходном графе соответствует 12 вершин uij1, uij2, uij3, uij4, uij5, uij6, uji1, uji2, uji3, uji4, uji5, uji6. • kдополнительных вершин a1, a2,…, ak.
Компонента (vi, vj) uij1 uji1 uij2 uji2 uij3 uji3 uij4 uji4 uij5 uji5 uij6 uji6 vi ∊H, vj ∉H vi ∉H, vj ∊H vi ∊H, vj ∊H
Компонентаvi • Пусть rстепень вершины vi. Упорядочим произвольным образом ребра, инцидентные vi: (vi, vj1), (vi, vj2),…, (vi, vjr). • Все компоненты, соответствующие ребрам, инцидентным vi, соединяются вместе следующими ребрами:
Компонента вершины uijr1 uij11 uij21 uij31 uij16 uijr6 uij26 uij36
Дополнительные вершины в G′ • Дополнительная вершина al соединенас первой и последней вершиной компоненты vi. Пусть r степень вершины vi.
Компонента вершины uijr1 uij11 uij21 uij31 uij16 uijr6 uij26 uij36