NP- полнота
-
Upload
fredricka-elijah -
Category
Documents
-
view
51 -
download
1
description
Transcript of NP- полнота
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 вершинах (вершина соответствует литералу в дизъюнкции)
• Вершины разных клик связаны между собой ребром, если они соответствуют литералу и его отрицанию.
XxxxljkivvGE
kjmivGV
klijklij
iij
:&&&:,:
1 ,1::
Пример
32143233123211 ,, ,, ,, ,,, ,4 xxxZxxZxxZxxxZm
1x1x
3x
3x
3x
2x
1x
2x
2x
3x
Доказательство
• Пусть в 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
uij2
uij3
uij4
uij5
uij6
uji1
uji2
uji3
uji4
uji5
uji6
vi ∊ H,vj ∉ H
vi ∉ H,vj ∊ H
vi ∊ H,vj ∊ H
Компонента vi
• Пусть r степень вершины vi. Упорядочим произвольным образом ребра, инцидентные vi: (vi, vj1
), (vi, vj2),…, (vi, vjr
).
• Все компоненты, соответствующие ребрам, инцидентным vi, соединяются вместе следующими ребрами:
. 11:, 16 1
rsuu
ss ijij
Компонента вершины
uij11
uij16
uij21
uij26
uijr1
uijr6
uij31
uij36
Дополнительные вершины в G′
• Дополнительная вершина al соединена с первой и последней вершиной компоненты vi. Пусть r степень вершины vi.
.,1:,
,,1:,
6
11
Vvklua
Vvklua
iijl
iijl
r
Компонента вершины
uij11
uij16
uij21
uij26
uijr1
uijr6
uij31
uij36