Informatik II NP–Vollständigkeit NP–Vollständigkeit NP–Vollständigkeit

Werbung
Informatik II
N P–Vollständigkeit
Rainer Schrader
Zentrum für Angewandte Informatik Köln
11. Januar 2006
1 / 61
2 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• Wie bei den berechenbaren Funktionen wollen wir die Struktur von N P
Gliederung
•
•
•
•
näher zu untersuchen.
polynomielle Reduktionen
• bisher wissen wir lediglich, dass P ⊆ N P.
N P-Vollständigkeit von SAT
weitere N P-vollständige Probleme
• es ist nicht klar (und bis heute unbewiesen), ob P ( N P oder nicht
polynomielle Lösbarkeit von 2-SAT
doch P = N P.
• wir versuchen den Reduzierbarkeitsbegriff sinnvoll zu übertragen
3 / 61
4 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wie „” ist auch „p ” transitiv, denn:
• Seien L und L0 zwei Sprachen
• „” ist transitiv
• L heißt polynomiell reduzierbar auf L0 , falls gilt:
• das Produkt von zwei Polynomen ist ein Polynom
• L ist reduzierbar auf L0 mittels einer Funktion f
• d.h. x ∈ L ⇐⇒ f (x ) ∈ L0
• L und L0 heißen polynomiell äquivalent falls L p L0 und L0 p L
• f ist in polynomieller Zeit berechenbar
• Notation: L ≡p L0
• Notation: L0 p L
• L heißt N P-schwer , falls für alle L0 ∈ N P gilt: L0 p L.
• L heißt N P-vollständig , falls L N P-schwer ist und L ∈ N P.
5 / 61
6 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Lemma
Lemma
Sei L N P-vollständig.
Sei L N P-vollständig.
(i) L ∈ P ⇐⇒ P = N P
0
(i) L ∈ P ⇐⇒ P = N P
(ii) L ∈ N P und L p L =⇒ L ist N P-vollständig
(ii) L0 ∈ N P und L p L0 =⇒ L0 ist N P-vollständig
(iii) L und L0 N P-vollständig =⇒ L ≡p L0 .
(iii) L und L0 N P-vollständig =⇒ L ≡p L0 .
Beweis von (i):
Beweis von (ii) und (iii):
•
•
•
•
0
0
0
insbesondere ist f polynomiell deterministisch berechenbar
• (ii) sei L00 ∈ N P
• es ist L00 p L p L0
• somit ist auch L0 N P-vollständig.
zu gegebenem x berechne f (x ) und teste in polynomieller Zeit, ob
f (x ) ∈ L.
• (iii) folgt aus der Definition
sei L ∈ P und L ∈ N P
dann ist L0 polynomiell reduzierbar auf L vermittels einer Funktion f
• damit ergibt sich ein polynomieller Test, ob x ∈ L0
• die Umkehrung gilt offensichtlich
7 / 61
2
8 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• mit den N P-vollständigen Problemen haben wir den harten Kern der
Probleme in N P ausgezeichnet, denn
Gliederung
• sie sind alle „gleich schwierig”
•
•
•
•
• und ist eines „einfach”, so sind alle Problem in N P „einfach”
• wir wissen aber noch nicht, ob diese Teilmenge nichtleer ist
polynomielle Reduktionen
N P-Vollständigkeit von SAT
weitere N P-vollständige Probleme
polynomielle Lösbarkeit von 2-SAT
9 / 61
10 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Das Erfüllbarkeitsproblem (satisfiability problem) ist das Entscheidungsproblem der folgenden Sprache:
• Sei B eine Boolesche Funktion in konjunktiver Normalform
• d.h.
B=
r
^
SAT = {B : B ist eine erfüllbare KNF}.
Ki ,
i =1
wobei Ki = yi1 ∨ · · · ∨ yis mit yij ∈ {x1 . . . xn , x 1 , . . . , x n }
Satz (Cook)
• sei code(B) eine Kodierung von B, etwa:
SAT ist N P-vollständig.
code(xi ) = bin(i )
Beweis:
code(x i ) = 02bin(i )
• (i) SAT ist in N P:
code(y1 ∨ . . . ∨ yS ) = code(y1 )22code(y2 )22 . . . 22code(yS )
code(
t
^
• rate eine Belegung der Variablen
• prüfe nach, ob B mit dieser Belegung den Wert 1 hat
Ki ) = code(K1 )222code(K2 )222 . . . 222code(Kt )
i =1
• nach einem früheren Korollar ist damit SAT ∈ N P
• wir kümmern uns im folgenden nicht um die Kodierung
(ii) SAT ist N P-schwer, d.h. für jedes L ∈ N P gilt: L p SAT :
11 / 61
12 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• (ii) SAT ist N P-schwer, d.h. für jedes L ∈ N P gilt L p SAT :
• wir wissen über L nur, dass es eine NDTM M gibt, die L akzeptiert
• wir versuchen, die Arbeitsweise von M als KNF zu formulieren
• wir müssen dazu zu jedem L eine polynomiell berechenbare Funktion f
konstruieren, so dass
•
•
•
•
x ∈ L ⇔ f (x ) ∈ SAT
• d.h. zu gegebenen x müssen wir eine KNF BL (x ) konstruieren, so dass
x ∈ L ⇔ BL (x )
sei dazu p(n) die Laufzeitschranke für M
sei x ein Input mit |x | = n
sei T = p(n)
sei K = (w1 qw2 ) eine Konfiguration auf einem kürzesten
akzeptierenden Pfad
• da zu Beginn der Kopf über Feld 1 steht und M höchstens T
• dies aber für jedes L und ohne L näher zu kennen
Kopfbewegungen ausführt, gilt
|w1 w2 | ≤ 2T + 1
13 / 61
14 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• sei t mit 1 ≤ t ≤ T ein Zeitpunkt der Berechnung
• zu jedem t definieren wir die folgenden Variablen:
• jeder Konfiguration K können wir eine Belegung der Variablen zuordnen
Vt = {di ,a,t , hi ,t , sz ,t }
• umgekehrt entspricht nicht jede Belegung der Variablen einer
Konfiguration
di ,a,t
für −T ≤ i ≤ T + 1 und a ∈ A = {0, 1, 2, #}
di ,a,t = 1 ⇐⇒ in Schritt t steht in Zelle i der Wert a
• wir versuchen im folgenden, Bedingungen an eine Belegung zu
formulieren, so dass:
• sie einer Konfiguration entspricht, wenn sie die Bedingungen erfüllt
hi ,t
für −T ≤ i ≤ T + 1
hi ,t = 1 ⇐⇒ in Schritt t steht der Kopf über Zelle i
sz ,t
z ∈Z
sz ,t = 1 ⇐⇒ in Schritt t ist M im Zustand z ∈ Z
• die Bedingungen als KNF ausgedrückt werden können
15 / 61
16 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beobachtung:
• sei
u(y1 , . . . , ym ) = (y1 ∨ · · · ∨ ym ) ∧
• offensichtlich muss zu jedem Zeitpunkt t mit 1 ≤ t ≤ T gelten:
^
(yi ∨ yj )
i 6=j
• M ist in einem eindeutigen Zustand
• die erste Klammer ist dann 1, wenn mindestens eine Variable 1 ist
• der Kopf steht an genau einer Position
• die zweite Ausdruck dann 1, wenn höchstens eine Variable 1 ist
• in jeder Zelle steht ein eindeutiges Symbol
• damit ist u = 1, wenn für genau ein yi 1 ist
• die Länge von u ist O(m 2 )
• dazu müssen wir eine KNF formulieren, die genau dann 1 ist, wenn
genau eine Variable den Wert 1 hat
17 / 61
18 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beobachtung:
• zum Zeitpunkt 1 gilt:
• für festes t = 1, . . . , T sei Config(Vt ) eine Boolesche Funktion,
• Config(Vt ) soll an genau den Stellen 1 sein, die Konfigurationen
•
•
•
•
entsprechen
M im Zustand q0
der Kopf steht über Zelle 1
x1 , . . . , xn steht in den Zellen 1 . . . n
alle anderen Zellen enthalten Blanks
• Config(Vt ) kann durch eine KNF der Länge O(T 2 ) dargestellt werden:
• sei
Config(Vt ) = u(s1,t , . . . , s|Z |,t ) ∧ u(h−T ,t , . . . , hT +1,t )
^
∧
u(di ,0,t , di ,1,t , di ,2,t , di ,#,t )
Start(V1 ) = s0,1 ∧ h1,1 ∧
n
^
i =1
di ,xi ,1 ∧
−T
^
i =0
di ,#,1 ∧
T^
+1
di ,#,1
i =n+1
−T ≤i ≤T +1
• Länge(Start)=O(T )
• Länge: O(|Z |2 )+O(T 2 )+O(T ) = O(T 2 )
• damit haben wir zu jedem Zeitpunkt t genau einen Zustand, eine
Kopfposition und einen Inhalt pro Zelle.
19 / 61
20 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wenn zum Zeitpunkt t der Kopf nicht über Zelle i steht, so bleibt der
Inhalt von Zelle i beim Übergang in den Zeitpunkt t + 1 erhalten.
• wir wollen jetzt die Übergangsrelation δ modellieren
Nochange(Vt , Vt +1 ) =
• wir tun dies in zwei Schritten:
T^
+1
^
(di ,a,t ∨ hi ,t ∨ di ,a,t +1 )
i =−T a∈A
• wenn zum Zeitpunkt t der Kopf nicht über Zelle i steht, so bleibt der
Inhalt von Zelle i beim Übergang in den Zeitpunkt t + 1 erhalten
eine Klausel in Nochange ist wahr
⇐⇒ (hi ,t = 1) oder (hi ,t = 0 und (di ,a,t = 1 ⇒ di ,a,t +1 = 1))
⇐⇒ Kopf steht über Zelle i oder Inhalt von Zelle i bleibt unverändert
• die Länge von Nochange ist O(T ).
21 / 61
22 / 61
N P–Vollständigkeit
N P–Vollständigkeit
8
+1
< T^
•
•
sei δ ⊆ (Z , A) × (Z , A, {N , L, R}) die Übergangsrelation
•
•
setze k = 0 (für N), k = 1 (für R) oder k = −1 (für L)
∧[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ sz 0 ,t +1 ]
setze:
∧[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ di ,a0 ,t +1 ]
Delta(Vt , Vt +1 )
δ führt den Zustand (z , a) in mehrere mögliche Nachfolgezustände
(z 0 , a 0 , {N , R, L}) über
Delta(Vt , Vt +1 )
=
^
(z ,a),(z 0 ,a 0 ,k )∈δ
8
+1
< T^
:
(z ,a),(z 0 ,a 0 ,k )∈δ
[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ hi +k ,t +1 ]
•
i =−T
∧[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ sz 0 ,t +1 ]
∧[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ di ,a0 ,t +1 ]
=
^
:
[h i ,t ∨ s z ,t ∨ d i ,a,t ∨ hi +k ,t +1 ]
i =−T
o
Delta = 1, wenn für jeden Übergang von (z , a) zu einem Nachfolgezustand
(z 0 , a 0 , k ) die Klammer {. . .} = 1 ist.
{ } = 1 ⇐⇒(hi ,t = sz ,t = di ,a,t = 1 ⇒ hi +k ,t +1 = sz 0 ,t +1 = di ,a0 ,t +1 = 1)
o
⇐⇒( zum Zeitpunkt t befindet sich die Maschine im
Zustand z , der Kopf steht über i , i enthält a
=⇒ zum Zeitpunkt t + 1 befindet sich die Maschine im
Zustand z 0 , der Kopf steht über i + k , in Zelle i steht a 0 )
•
23 / 61
die Länge von Delta ist O(T )
24 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• Delta ist noch nicht in konjunktiver Normalform
• damit können wir eine KNF in den Variablenmengen V1 , . . . , VT
angeben, die
• kann aber durch Umformung in eine solche überführt werden (; Delta’)
• für Belegungen genau dann den Wert 1 annimmt, wenn diese
Belegung Konfiguration K1 , . . . , KT der Maschine M mit Input x
entsprechen
• und sich M zum Zeitpunkt T im akzeptierenden Zustand za
befindet.
• auch nach dieser Umformung gilt Länge(Delta’) = O(T )
• wir können M so umbauen, dass
• M nach Erreichen eines akzeptierenden Zustands za in diesem
Zustand verbleibt
•
• und die bis zu T fehlenden Schritte durchläuft
BL (V1 . . . VT )
=
Start (V1 ) ∧ sza ,T ∧
T
^
Config(Vt )
i =1
• mit dieser Modifikation gilt sza ,T = 1
∧
T^
−1
(Nochange(Vt , Vt +1 ) ∧ Delta 0 (Vt , Vt +1 ))
t =1
25 / 61
26 / 61
N P–Vollständigkeit
BL (V1 . . . VT )
=
Start (V1 ) ∧
T
^
N P–Vollständigkeit
Anwendungen des SAT-Problems
Config(Vt )
•
•
•
•
i =1
∧
T^
−1
(Nochange(Vt , Vt +1 ) ∧ Delta 0 (Vt , Vt +1 ))
t =1
• eine Überprüfung der Länge von BL ergibt den Wert O(T )
3
das SAT-Problem mutet sehr theoretisch an
es hat jedoch viele, auch praktische Anwendungen
ein praktisches Beispiel:
ein Autohersteller überprüft, ob eine Kombination von
Ausstattungsmerkmalen geliefert werden kann.
somit x ∈ L ⇐⇒ M akzeptiert x
⇐⇒ es existiert eine akzeptierende Rechnung K1 , . . . , KT
mit K1 = (z0 , x )
⇐⇒ es existiert eine Belegung V1 . . . VT
mit f (x ) = BL (V1 . . . VT ) = 1
• also: x ∈ L ⇔ f (x ) erfüllbar und die Länge von f ist O(T 3 ).
27 / 61
28 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• die Aussage des Satzes von Cook lässt sich noch etwas verschärfen
• sei B eine Boolesche Formel in konjunktiver Normalform
• B heißt 3-KNF , falls in jeder Klausel höchstens drei Literale
Gliederung
vorkommen.
•
•
•
•
polynomielle Reduktionen
• Beispiel:
B = (x1 ∨ x2 ∨ x3 ) ∧ (x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 )
N P-Vollständigkeit von SAT
weitere N P-vollständige Probleme
• sei
polynomielle Lösbarkeit von 2-SAT
3-SAT = {B : B ist eine erfüllbare 3-KNF}.
Satz
3-SAT ist N P-vollständig.
29 / 61
30 / 61
N P–Vollständigkeit
N P–Vollständigkeit
•
•
•
Satz
3-SAT ist N P-vollständig.
Beweis:
•
•
•
sei K eine Klausel der Länge s ≥ 4
K kann durch eine Boolesche Formel K 0 ersetzt werden, so dass
• K 0 ist eine 3-KNF
• K 0 hat s − 3 neue Variablen
• K 0 besteht aus s − 2 Klauseln
sei K = y1 ∨ · · · ∨ ys eine Klausel mit yi ∈ {x1 . . . xn , x 1 , . . . , x n } und s ≥ 4.
sei z eine neue Variable
betrachte die Boolesche Funktion
• K hat eine erfüllende Belegung ⇐⇒ K 0 hat eine erfüllende Belegung
K1 = (y1 ∨ · · · ∨ ys−2 ∨ z ) ∧ (ys−1 ∨ ys ∨ z )
•
per Induktion folgt:
offensichtlich gilt:
• K1 ist in konjunktiver Normalform
• K hat eine erfüllende Belegung ⇐⇒ K1 hat eine erfüllende Belegung
•
•
wir führen diese Reduktion für jede Klausel mit mehr als drei Variablen durch
•
dies liefert eine polynomiell berechenbare Abbildung f mit
dadurch entsteht eine polynomiell beschränkte Menge von Klauseln und
polynomiell viele neue Variablen
B ∈ SAT ⇐⇒ f (B) ∈ 3-SAT
• K1 enthält nur Klauseln der Länge s − 1
2
31 / 61
32 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wir wollen abschließend zeigen, dass 3-SAT im folgenden Sinne
minimal ist:
• eine Boolesche Formeln in KNF, die höchstens zwei Literale pro Klausel
Gliederung
•
•
•
•
hat, heißt 2-KNF
• sei 2-SAT die Menge aller erfüllbaren Formeln in 2-KNF:
polynomielle Reduktionen
N P-Vollständigkeit von SAT
2-SAT = {B : B ist eine erfüllbare 2-KNF}.
weitere N P-vollständige Probleme
polynomielle Lösbarkeit von 2-SAT
Satz
2-SAT ist in P.
33 / 61
34 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beweisidee:
Beweis:
•
•
•
•
• sei K = (a ∨ b) eine Klausel der 2-KNF
• um K zu erfüllen, muss offensichtlich gelten:
• ist a falsch, so muss b wahr sein, und umgekehrt
• ist b falsch, so muss a wahr sein
• dies liefert ein System von notwendigen Bedingungen
sei f eine Boolesche Formel in 2-KNF
wir konstruieren einen gerichteten Graphen G = (V , A) zu B wie folgt:
V besteht aus allen Variablen und ihren Komplementen
es existiert eine gerichtete Kante (a, b) ∈ A, falls B eine Klausel (a ∨ b)
oder (b ∨ a) enthält
• die Kanten entsprechen damit den logischen Implikationen a ⇒ b
• weiter enthält G per Konstruktion mit jeder Kante (a, b) auch die Kante
(b, a)
• wir zeigen, dass diese Bedingungen auch hinreichend sind, wenn sie
• wir behaupten:
widerspruchsfrei sind
B ist genau dann erfüllbar, wenn in G keine zwei Literale x und x
existieren, für die es einen gerichteten Weg von x nach x und einen
gerichteten Weg von x nach x gibt.
35 / 61
36 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wir behaupten:
• habe umgekehrt G keine solchen Wege
• wähle einen Knoten x , für den kein gerichteter Weg nach x führt
• setze ihn und alle Knoten, die von ihm aus über gerichtete Wege
B ist erfüllbar ⇐⇒ es existiert kein gerichteter Kreis, der eine Variable
und ihr Komplement enthält
erreichbar sind, auf wahr und die Komplemente auf falsch
• seien dazu x und x zwei solche Knoten, die durch gerichtete Pfade
• dies sind alle Knoten, von denen aus x erreichbar ist
• sei B 0 die KNF, die wir aus B erhalten, in dem wir alle auf falsch
verbunden sind
• angenommen B ist erfüllbar
• o.B.d.A. sei x wahr (andernfalls argumentiere mit x )
• da x wahr und x falsch, gibt es auf dem Weg von x nach x zwei
gesetzten Literale und alle Klauseln entfernen, die ein wahres Literal
enthalten
• sei G 0 der Graph, den wir aus G erhalten, indem wir alle gesetzten
Knoten entfernen und alle Kanten löschen, von denen mindestens ein
Endpunkt entfernt worden ist
benachbarte Knoten a und b, so dass a wahr und b falsch ist.
• da (a, b) eine Kante ist, folgt dass die Klausel a ∨ b nicht erfüllt ist. • G 0 hat wiederum keine zwei komplentären Variablen, die durch zwei
Wege in beiden Richtungen verbunden sind
• dann ist G 0 der Graph, der zu B 0 konstruiert werden würde
• per Induktion ist B 0 erfüllbar und damit auch B.
37 / 61
38 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• Beispiel: B = (x1 ∨ x2 ) ∧ (x1 ∨ x3 ) ∧ (x1 ∨ x2 ) ∧ (x2 ∨ x3 )
• der zu B gehörige Graph G ist:
x3
•
•
•
•
x
1
x
3
x1
x
2
•
mit Hilfe von 3-SAT wollen wir eine graphentheoretische Fragestellung als
N P-vollständig nachweisen
•
sei G = (V , E ) ein Graph
•
eine Teilmenge U ⊆ V von Knoten heißt unabhängig oder stabil , falls keine
zwei Knoten aus U durch eine Kante in E verbunden sind
•
sei UM = {(G, k ) : G enthält eine stabile Menge der Größe mindestens k }
x2
G hat keinen Kreis, der ein Literal und sein Komplement enthält
setze x1 auf wahr
dann sind x2 wahr und x1 , x2 falsch
das Löschen führt zu einer leeren 2-KNF und einem leeren Graphen
39 / 61
40 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beispiel:
Satz
• Sei
UM ist N P-vollständig.
B = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 )
• der zu B gehörige Graph G ist:
Beweis:
•
•
•
•
wir reduzieren 3-SAT auf UM
x
x
3
x
1
x
1
3
sei B eine Boolesche Formel in 3-KNF mit Klauseln C1 , C2 , . . . , Cm .
zu B konstruieren wir einen Graphen G = (V , E ) wie folgt:
für jede Klausel Ci enthält G ein Dreieck, wobei die Knoten dieses
Dreiecks mit den Literalen in Ci bezeichnet werden
x
x
2
x
x
2
2
1
• zwei Knoten werden durch eine Kante verbunden, wenn sie
komplementären Literale entsprechen
x
3
• sei k = m (Anzahl der Klauseln)
• höchstens ein Knoten eines Dreiecks liegt in einer unabhängigen Menge
• daher ist die Kardinalität einer unabhängigen Menge in G höchstens m.
41 / 61
N P–Vollständigkeit
42 / 61
N P–Vollständigkeit
• wir behaupten: G enthält eine unabhängige Menge der Größe m genau
• sei G = (V , E ) ein Graph
• eine Teilmenge C ⊆ V von Knoten heißt Clique , falls je zwei Knoten
dann, wenn B erfüllbar ist
aus C durch eine Kante in E verbunden sind.
• sei dazu U eine unabhängige Menge der Größe m
• U enthält genau einen Knoten von jedem Dreieck und keine zwei
• sei CLIQUE = {(G, k ) : G enthält eine Clique der Größe mindestens k }
• offensichtlich entspricht jede Clique in einem Graphen G = (V , E ) einer
Knoten, die komplementären Literalen entsprechen
unabhängigen Menge im komplementären Graphen G 0 = (V , E 0 ),
wobei e ∈ E 0 ⇔ e ∈
/ E.
• setzen wir die Literale, die den Knoten in U entsprechen, auf „wahr”, so
erhalten wir eine Belegung, die B erfüllt
•
•
•
•
ist umgekehrt x eine Wahrheitsbelegung, die B erfüllt
dann hat mindestens eine Variable in jedem Dreieck den Wert „wahr”
und keine zwei komplementären Literale sind „wahr”
ist U eine Teilmenge von Knoten, die in jedem Dreieck genau eine
wahre Variable hat, so ist U unabhängig.
43 / 61
44 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• sei G = (V , E ) ein Graph
• ein Hamilton-Kreis in G ist eine „Rundreise“ durch alle Knoten,
• d.h. er entspricht einer Permutation vi1 , . . . , vin , so dass
(vi1 , vi2 ), . . . , (vin −1 , vin ), (vin , vi1 ) ∈ E
• offensichtlich hat nicht jeder Graph einen Hamilton-Kreis, wie die
Bäume zeigen
• sei HC = {G : G enthält einen Hamilton-Kreis}
• mit etwas Aufwand lässt sich (etwa durch Reduktion von 3-SAT) zeigen:
• Damit folgt:
Satz
Korollar
CLIQUE ist N P-vollständig.
HC ist N P-vollständig.
2
2
46 / 61
45 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wir erlauben zusätzlich Gewichte auf den Kanten
• dann können wir nach einem Hamilton-Kreis fragen,
• dessen Gesamtlänge als Summe der Gewichte der benutzten Kanten
Korollar
TSP ist N P-vollständig.
Beweis:
minimal ist
•
•
•
•
• dies ist das Travelling Salesman Problem
• sei TSP
= {(G, k ) : G enthält eine Hamilton-Tour der Länge höchstens k }
raten einer geeigneten Tour zeigt, dass TSP in N P liegt
wir reduzieren HC auf TSP
sei G = (V , E ) ein Graph mit |V | = n
bilde den Graphen G 0 = (V , E 0 ) durch Hinzufügen aller fehlenden
Kanten
• setze ce = 1 für alle e ∈ E und ce = t ≥ 2 für alle Kanten e ∈ E 0 \ E
• dann hat G genau dann einen Hamilton-Kreis, wenn G 0 eine Tour der
Korollar
TSP ist N P-vollständig.
Länge kleiner gleich n hat
47 / 61
2
48 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• bisher haben wir überwiegend graphentheoretische Probleme
Satz
betrachtet
PARTITION ist N P-vollständig.
• wir untersuchen jetzt ein durch Zahlen definiertes Problem:
Beweis:
• PARTITION: Gegeben a1 , . . . , an ∈PN und ein R ∈ N, gibt es eine
Teilmenge I ⊆ {1, . . . , n}, so dass
i ∈I
•
•
•
•
ai = R?
Satz
wir reduzieren 3-SAT auf PARTITION
V
sei f (x ) = m
i =1 Ci mit Ci = zi1 ∨ zi2 ∨ zi3 , wobei zij ∈ {x1 , x 1 , . . . , xn , x n }
wir konstruieren dazu eine Eingabe von PARTITION wie folgt:
Sei R die Dezimalzahl, die aus m Vieren gefolgt von n Einsen besteht:
PARTITION ist N P-vollständig.
R = 44
. . . 4} 11
. . . 1}
| {z
| {z
m
n
• diese Zahl ist sehr groß, aber in polynomieller Zeit konstruierbar.
50 / 61
49 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beispiel: sei
• zur Darstellung von R verwenden wir 2n + 2m Objekte der Größe
ai , bi , cj , dj für 1 ≤ i ≤ n, 1 ≤ i ≤ m
f = (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 )
• jede dieser Zahlen hat wiederum m + n Dezimalstellen
• die Größe ai bezieht sich auf die Variable xi
• im ersten Teil steht an Position j (1 ≤ j ≤ m), wie oft xi in der Klausel Cj
es ist m = n = 3 und
vorkommt
a1
1
0
1
1
0
0
• der zweite Teil ist der i-te Einheitsvektor ei im Rn
• bi ist analog aufgebaut und bezieht sich auf xi
• weiter ist:
ci
=
(ei , 0) ∈ Rm × Rn
di
=
(2ei , 0) ∈ Rm × Rn
a2
0
1
1
0
1
0
a3
1
1
1
0
0
1
b1
0
1
0
1
0
0
b2
1
0
0
0
1
0
b3
0
0
0
0
0
1
c1
1
0
0
0
0
0
c2
0
1
0
0
0
0
c3
0
0
1
0
0
0
d1
2
0
0
0
0
0
d2
0
2
0
0
0
0
d3
0
0
2
0
0
0
R
4
4
4
1
1
1
zu zeigen: f erfüllbar ⇐⇒ R kombinierbar aus a, b, c, d
51 / 61
52 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• angenommen wir können entscheiden, ob sich R aus den Zahlen
ai , bi , cj , dj zusammensetzen lässt.
• im zweiten Block enthält R nur Einsen
• es gibt genau zwei Objekte, die an der i-ten Position eine Eins haben
• um R kombinieren zu können, müssen wir uns also zwischen ai und bi
Bemerkung:
• die Zahl R ist in der Größenordnung von 10n+m , d.h. exponentiell in der
Anzahl der Variablen und Klauseln
(d.h. zwischen xi und x i ) entscheiden.
• die Anzahl der Bits ist aber polynomiell in n und m
• um den ersten Block von R zu konstruieren, müssen wir erreichen, dass
• wir werden später sehen, dass es einen Algorithmus zur Lösung des
an jeder Position j die Summe der ausgewählten a’s und b’s
mindestens Eins ergibt
Partitions-Problems mit einer Laufzeit von O(nR) gibt
• dann und nur dann können wir diese Position durch die cj bzw. dj zu
• daher muss R auch so groß gewählt werden (oder P = N P).
Vier ergänzen
• somit liefert uns jede Lösung für PARTITION eine erfüllende
Wahrheitsbelegung für f
• umgekehrt wählen wir zu einer erfüllenden Belegung die
entsprechenden a’s und b’s und füllen auf.
53 / 61
54 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wir wollen abschließend zeigen, dass 3-SAT im folgenden Sinne
minimal ist:
• eine Boolesche Formeln in KNF, die höchstens zwei Literale pro Klausel
Gliederung
•
•
•
•
hat, heißt 2-KNF
• sei 2-SAT die Menge aller erfüllbaren Formeln in 2-KNF:
polynomielle Reduktionen
N P-Vollständigkeit von SAT
2-SAT = {B : B ist eine erfüllbare 2-KNF}.
weitere N P-vollständige Probleme
polynomielle Lösbarkeit von 2-SAT
Satz
2-SAT ist in P.
55 / 61
56 / 61
N P–Vollständigkeit
N P–Vollständigkeit
Beweisidee:
Beweis:
•
•
•
•
• sei K = (a ∨ b) eine Klausel der 2-KNF
• um K zu erfüllen, muss offensichtlich gelten:
• ist a falsch, so muss b wahr sein, und umgekehrt
• ist b falsch, so muss a wahr sein
• dies liefert ein System von notwendigen Bedingungen
sei f eine Boolesche Formel in 2-KNF
wir konstruieren einen gerichteten Graphen G = (V , A) zu B wie folgt:
V besteht aus allen Variablen und ihren Komplementen
es existiert eine gerichtete Kante (a, b) ∈ A, falls B eine Klausel (a ∨ b)
oder (b ∨ a) enthält
• die Kanten entsprechen damit den logischen Implikationen a ⇒ b
• weiter enthält G per Konstruktion mit jeder Kante (a, b) auch die Kante
(b, a)
• wir zeigen, dass diese Bedingungen auch hinreichend sind, wenn sie
• wir behaupten:
widerspruchsfrei sind
B ist genau dann erfüllbar, wenn in G keine zwei Literale x und x
existieren, für die es einen gerichteten Weg von x nach x und einen
gerichteten Weg von x nach x gibt.
58 / 61
57 / 61
N P–Vollständigkeit
N P–Vollständigkeit
• wir behaupten:
• habe umgekehrt G keine solchen Wege
• wähle einen Knoten x , für den kein gerichteter Weg nach x führt
• setze ihn und alle Knoten, die von ihm aus über gerichtete Wege
B ist erfüllbar ⇐⇒ es existiert kein gerichteter Kreis, der eine Variable
und ihr Komplement enthält
erreichbar sind, auf wahr und die Komplemente auf falsch
• seien dazu x und x zwei solche Knoten, die durch gerichtete Pfade
• dies sind alle Knoten, von denen aus x erreichbar ist
• sei B 0 die KNF, die wir aus B erhalten, in dem wir alle auf falsch
verbunden sind
• angenommen B ist erfüllbar
• o.B.d.A. sei x wahr (andernfalls argumentiere mit x )
• da x wahr und x falsch, gibt es auf dem Weg von x nach x zwei
gesetzten Literale und alle Klauseln entfernen, die ein wahres Literal
enthalten
• sei G 0 der Graph, den wir aus G erhalten, indem wir alle gesetzten
Knoten entfernen und alle Kanten löschen, von denen mindestens ein
Endpunkt entfernt worden ist
benachbarte Knoten a und b, so dass a wahr und b falsch ist.
• da (a, b) eine Kante ist, folgt dass die Klausel a ∨ b nicht erfüllt ist. • G 0 hat wiederum keine zwei komplentären Variablen, die durch zwei
Wege in beiden Richtungen verbunden sind
• dann ist G 0 der Graph, der zu B 0 konstruiert werden würde
• per Induktion ist B 0 erfüllbar und damit auch B.
59 / 61
60 / 61
N P–Vollständigkeit
• Beispiel: B = (x1 ∨ x2 ) ∧ (x1 ∨ x3 ) ∧ (x1 ∨ x2 ) ∧ (x2 ∨ x3 )
• der zu B gehörige Graph G ist:
x3
•
•
•
•
x
1
x
3
x1
x
2
x2
G hat keinen Kreis, der ein Literal und sein Komplement enthält
setze x1 auf wahr
dann sind x2 wahr und x1 , x2 falsch
das Löschen führt zu einer leeren 2-KNF und einem leeren Graphen
61 / 61
Herunterladen