Theoretische Informatik – Mitschrift 10. Komplexitätstheorie Klassifikation algorithmischer Probleme (formalisiert als Sprachen) nach ihrem Bedarf an Berechnungsressourcen (= Rechenzeit, Speicherplatz – als Funktion der Eingabelänge). Ziele: ● ● Entwicklung effizienter Verfahren Nachweis von oberen und unteren Schranken für die Komplexität von Problemen Beispiel: CYK-Algorithmus: O(n3) ist obere Schranke für die Zeitkomplexität des Wortproblems für kontextfreie Sprachen. DFA: O(n) obere Schranke bei regulären Sprachen Nachweis unterer Schranken schwierig, weil Aussage für alle Algorithmen, die das Problem lösen, gelten muss. Beispiel: Vergleichsbasiertes Sortieren: Ω(n log n) 10.1 Die O-Notation Vergleich von Funktionen bezüglich ihres Wachstums Definition 10.1: Sei f , g : ℕℕ. O g :={ f ∣∃c0∃n 0≥0 ∀ n≥n0 : f n≤c⋅g n} Sprechweise: f ist von der Ordnung g, falls f ∈O g . g :={ f ∣∃c0 ∃n 0≥0 ∀ n≥n0 f n≥c⋅g n} 1 g :={ f ∣∃c0 ∃n0 ≥0 ∀ n≥n0 g n≤ f n≤c⋅g n} c Schreibweise: O g n statt O g O f =O g , falls O f ⊆O g O f O g , falls O f ⊂O g Regeln: f 1∈O g 1 , f 2 ∈O g 2 ⇒ f 1 f 2 ∈O max {g 1 , g 2 } argumentweise f 1∗ f 2 ∈O g 1∗g 2 Satz 10.1: k Eine Polynomfunktion p n=∑ ai nk vom Grad k hat die Ordnung O n k . i=0 Beweis (Induktion über k): k =0: p n=a 0 ⇒ p∈O 1 k k k 1 : p n=a ∑ a i n k ⇒ Ordnung O max {nk 1 , n k }=O n k1 q.e.d. k1 n k1 O n k1 i=0 k IV: O n Wichtige Beispiele: O1⊂O log n⊂O n⊂On log n⊂On 2 ⊂...⊂O n k ...⊂O2 n k≥3 10.2 Komplexität von Algorithmen hier nur: Zeitkomplexität Algorithmen als Turingprogramme für Mehrband-Turingmaschine TMk(Σ) Zeit = Anzahl Schritte der Turingmaschine Platz = Anzahl besuchte Felder der Turingmaschine Definition 10.2: Sei ∈TM k Mehrband-Turingmaschine. Definiere time : * ℕ∪{∞} durch: { l ├ q ,...} mit q , ... hat keine Folgekonfiguration falls bei Eingabe von w stoppt Anfangskonfiguration min {l∣ time w:= x 0 w bei Eingabe w ∞ sonst Bemerkung: ● Mehrband-Turingmaschine mit Rechenzeitbeschränkung f(n) kann durch eine EinbandTuringmaschine mit Beschränkung f(n)2 simuliert werden ● alternative Berechnungsmodelle möglich → Abschätzung der Rechenzeit der Anweisungen → verschiedene Kostenmaße ■ uniformes Kostenmaß Kosten pro atomarer Anweisung ≡1 nur realistisch bei Beschränkung der Speicherplatznforderung pro Datum Beispiel: P=in X 1 ; var X 2 ; X 2 :=2 ; loop X 1 X 2 := X 2∗X 2 ; X 1 :=X 2 ; out X 1 n P berechnet n 2 2 uniformes Kostenmaß: O n, aber wir benötigen 2n Bits zur Darstellung des Ergebnisses ⇒alternativ: logarithmisches Kostenmaß Berücksichtigung der Länge der Dualdarstellung der Variablenwerte im obigen Beispiel: O 2n . 10.3 Die Klassen P und NP Definition 10.3: Sei f : ℕℕ. TIME f n :={L⊆ *∣∃ ∈DTM : L= L und ∀ w∈ * : time w≤ f ∣w∣} P= ∪ p Polynom TIME p n enthält die von deterministischen Turingmaschinen in Polynomzeit erkennbaren Sprachen. Für P kann man Einband-Turingmaschine betrachten, weil Polynome unter Quadrieren abgeschlossen sind. P umfasst die Probleme/Sprachen, für die effiziente Algorithmen existieren. Algorithmen mit exponentieller Komplexität O 2 n , O nlog n sind nicht effizient. P⊆Klasse der Sprachen, deren charakteristische Funktion LOOP -berechenbar ist. Beispiel: MST : Bestimmung eines einen beliebigen Graphen aufspannenden Baumes mit minimalem Gewicht. Graph G=V , E , w mit Knotenmenge V (vertices), Kantenmenge E⊆V ×V (edges) und Gewichtsfunktion w : E ℕ Beispiel: 1● 7 ●2 2 6 6● 1 5 3 4 5● 8 2 ●4 ●3 V ={1 , 2 , ... ,6} E={6,1 , 1,2 ,...} 6,1 7 w : 1,2 6 3,21 ... { Aufspannender Baum von G: T ⊆E , so dass gilt: ● (V, T) ist zusammenhängender, azyklischer Teilgraph von G minimal aufspannender Baum (MST – minimal spanning tree): ∑ w e ist minimal unter allen aufspannenden Bäumen T e∈T Kruskal-Algorithmus: ● Verwalte die Menge S von disjunkten Teilbäumen von G, die alle Knoten zusammen genommen umfassen. Zu Beginn sei S = V. Solange S mehr als einen Baum enthält, wiederhole: ○ Wähle eine Kante minimalen Gewichts, die zwei Bäume t1 und t2 aus S verbindet ○ Lösche t1 und t2 aus S und füge den Baum, der aus t1 und t2 und der Kante besteht, zu S hinzu. MST ∈ P : Algorithmus Kruskal ∣V∣=n ,∣E∣=e , Aufwand: O e log en Definition 10.4: Sei f : ℕℕ . NTIME f n={L⊆ *∣∃TM k : L=L und ∀ w ∈ * : time w≤ f ∣w∣} NP :=∪Polynome p NTIME p n "die von nichtdeterministischer Turingmaschine in Polynomialzeit entscheidbaren Sprachen" Offenes Problem (seit 1970 bekannt): P=NP oder P ⊂NP ? Beispiel: TSP-Problem: Traveling Salesman Problem Gegeben: G = (V, E, w) wie beim MST-Problem. Gesucht wird ein Kreis in G, der alle Knoten umfasst und dessen Kantengewicht minimal ist. Jeder Knoten soll exakt einmal besucht werden. → Hamiltonscher Kreis ● 1 ● 4 3 ● 6 ● 5 2 ● ● 7 8 Obige Formulierung: Optimierungsproblem → Entscheidungsproblem (ja/nein-Problem) Füge Obergrenze k für Kantengewicht des Kreises hinzu und frage: Gibt es einen Kreis mit Kantengewicht ≤ k? Für das TSP ist kein Algorithmus bekannt, der wesentlich besser ist als der folgende: 1. Zähle systematisch alle Folgen v1 v2 ... vn von Knoten in G auf, die jeden Knoten genau einmal enthalten n n ⇒O n ! Es gilt n !~ 2 n e c⋅n Dies übersteigt für jede Konstante c schließlich 2 . 2. Teste, ob es sich bei einer Knotenfolge v1 v2 ... vn um einen Kreis handelt und das Knotengewicht unterhalb der Obergrenze liegt ⇒O n Eine nichtdeterministische Turingmaschine kann Folgen v1 ... vn erraten und dann in Polynomzeit feststellen, ob es sich um eine Lösung handelt. ⇒TSP ∈ NP Charakteristisch für NP-Probleme: ● exponentiell großer Suchbaum für Lösungen → nichtdeterministische Auswahl ● polynomieller Aufwand für die Feststellung, ob eine Lösung gefunden wurde → Cook 1971, Karp 1972: Strukturtheorie für P-NP-Probleme: „NP-Vollständigkeit“ Bis auf wenige Ausnahmen sind NP-Probleme, für die kein polynomieller Algorithmus bekannt ist (→ Kandidaten für NP \ P), so miteinander verknüpft, dass ● entweder alle Probleme polynomielle Algorithmen besitzen (→ P = NP) ● oder keines (→ P ≠ NP) 10.4 NP-Vollständigkeit Definition 10.5: Sei A , B⊆ *. A heißt auf B polynomiell reduzierbar, in Zeichen A≤p B , falls es eine totale und in Polynomzeit berechenbare Funktion f : * * gibt, so dass ∀ w∈ * : w ∈A⇔ f w∈B. Lemma: ● ● ● A≤p B∧B ∈P ⇒ A∈P A≤p B∧B∈ NP ⇒ A∈ NP ≤p ist transitiv. Beweis: → Übung Definition 10.6: Sei A⊆ *. (i) A heißt NP-hart, falls für alle L∈NP gilt: L≤p A. (ii) A heißt NP-vollständig, falls A∈NP und A NP-hart. Satz 10.2: Sei A NP-vollständig. Dann gilt: A∈P ⇔ P=NP . Satz 10.3 (Cook): Das Erfüllbarkeitsproblem der Aussagenlogik SAT ={code F ∣F ist erfüllbare Formel der Aussagenlogik } ist NP-vollständig. Beispiel: Aussagenlogische Variablen: A , B , C ,... ¬ A∧ B∨C Junktoren: ∧,∨, ¬ Die Belegung { A false , Btrue , C ...} erfüllt die Formel. } Beweisidee: SAT ∈ NP ist einfach zu zeigen: Rate Belegung der aussagenlogischen Variablen } exponentiell viele und teste, ob Belegung die Formel wahr macht } einfach Hauptteil des Beweises von Satz 10.3: Nachweis der NP -Härte Zeige für jedes L∈ NP : L≤p SAT Konstruiere eine aussagenlogische Formel F , so dass gilt: w ∈L⇔ F erfüllbar ⇒1. NP -vollständiges Problem Nachweis der Existenz weiterer NP-vollständiger Probleme erfolgt mittels Reduktion und ist daher einfacher. Satz 10.4: SAT ≤ p 3SAT 3SAT: Aussagenlogische Formel in konjunktiver Normalform F =a 11∨...∨a 1 i ∧...∧ a k1∨...∨a k i , wobei jedes a i j aussagenlogische Variable X i j oder negierte aussagenlogische Variable ¬ X i j ( a i j ist Literal) mit i j≤3 für alle 1≤ j≤k ⇒3SAT : Ist F erfüllbar? 1 k Beweis: Zeige, wie beliebige Formel der Aussagenlogik mit polynomiellen Aufwand in erfüllbarkeitsäquivalente 3-SAT-Formel F' transformiert werden kann: Erfüllbarkeitsäquivalenz: F erfüllbar ⇔ F ' erfüllbar schwächer als logische Äquivalenz 1. Schritt Bringe alle Negationszeichen mit De Morgan zu den Variablen ¬ F ∨G~¬F ∧¬G∣¬ F ∧G~¬ F ∨¬G Beispiel: F =¬¬ X 1∨¬ X 3∨ X 2 ⇒ X 1∨¬ X 3 ∧¬ X 2 ⇒ Baumdarstellung y0 ∧ Blätter = Literale, innere Knoten = ∨/∧-Verknüpfungen y1 ∨ ¬X 2 X1 ¬X3 2. Schritt Ordne inneren Baumknoten neue Variablen aus {y0, y1, ...} zu, beginnend mit der Wurzel 3. Schritt Erzeuge zu jedem Teilbaum op y i die Formel y i ⇔v op z v z im Beispiel: y 0 ⇔ y1∧¬ x 2 y1 ⇔ x 1∨¬ x 3 Bilde neue Formel F ≡ y 0∧ y 0 ⇔...∧ y1 ⇔...... y k ⇔... im Beispiel: y 0∧ y 0 ⇔ y 1∧¬x 2 ∧ y 1 ⇔ x 1∨¬x 3 Es gilt: F erfüllbar ⇔ F ist erfüllbar. 4. Schritt Transformiere y ⇔ u op z in KNF y u op z ∧u op z y ¬ y∨u op z ∧¬u op z ∨ y im Beispiel: y 0 ⇔ y1∧¬ x 2 ⇔¬ y 0∨ y1∧¬ x 2 ∧¬ y 1∧¬ x 2 ∨ y 0