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