Komplexitätstheorie Asymptotische Notationen • es gibt Probleme, die nicht berechenbar sind (z.B. Menge aller Funktionen N → N und die Menge aller Sprachen sind überabzählbar) • mit asymptotischen Notationen wird das wesentliche Wachstumsverhalten einer Funktion gekennzeichnet • andere Probleme sind im P r i n z i p berechenbar, möglicherweise aber nicht in der Praxis, da sie zuviel Rechenzeit und zuviel Speicherplatz brauchen • Komplexitätstheorie macht Aussagen über die Ressourcen, die für ein bestimmtes Problem und bestimmte Eingabedaten benötigt werden worst case analysis (Ressourcenbedarf im ungünstigen Fall) average case analysis (Ressourcenbedarf im Mittel bei gegebener Verteilung der Eingabewerte) lower bounds (untere Schranke für Ressourcenbedarf) upper bounds (obere Schranke für Ressourcenbedarf) • O-Notation Eine Funktion g: N → R liegt in der Klasse O(f) einer Funktion f: N → R, wenn es eine positive reelle Zahl c und eine natürliche Zahl n0 gibt, sodass für alle n ≥ n0 die Ungleichung g(n) ≤ c*f(n) gilt, d.h. g wächst asymptotisch höchstens so rasch wie f. Beispiel: n*log n = O(n2) (beachte Schreibweise) • Ω-Notation Eine Funktion g: N → R liegt in der Klasse Ω(f) einer Funktion f: N → R, wenn es eine positive reelle Zahl c und eine natürliche Zahl n0 gibt, sodass für alle n ≥ n0 die Ungleichung g(n) ≥ c*f(n) gilt, d.h. g wächst asymptotisch mindestens so rasch wie f. Beispiel: 2n = Ω(n4) • Θ-Notation Eine Funktion g: N → R liegt in der Klasse Θ(f) einer Funktion f: N → R, wenn es zwei positive reelle Zahlen c1 und c2 und eine natürliche Zahl n0 gibt, sodass für alle n ≥ n0 die Ungleichung c1*f(n) ≤ g(n) ≤ c2*f(n) gilt, d.h. g wächst asymptotisch genau wie f. Beispiel: 3n4 +27n3 -5 = O(n4) aber auch 3n4 +27n3 -5 = Ω(n4) also 3n4 +27n3 -5 = Θ(n4) 1 2 Wachstumsklassen Wachstumsklassen • Äquivalenzrelation: asymptotische Äquivalenz Funktionen f und g heissen asymptotisch äquivalent, wenn f in der Klasse Θ(g) liegt asymptotische Äquivalenz führt Wachstumsklassen von Funktionen ein • logarithmische Wachstumsklasse Logarithmische Wachstumsklasse ist die Menge der Funktionen Θ(log n). sublineares Wachstum • polynomiale Wachstumsklasse Polynomiale Wachstumsklasse vom Grad p ist die Funktionenmenge Θ(np). Hat die Funktion f polynomiales Wachstum, d.h. liegt sie in der Menge Θ(P(n)), wobei P ein Polynom vom Grad p ist, dann liegt f in der polynomialen Wachstumsklasse Θ(np ). • wichtige n=1 n=2 n=3 • n*log n Viele Algorithmen liegen in der Wachstumsklasse Θ(n*log n). polynomiale Wachstumsklassen: linear quadratisch kubisch • exponentielle Wachstumsklasse Exponentielle Wachstumsklasse ist die Menge der Funktionen Θ(an) mit a>1. "exponentielle Explosion" 3 4 Beispiele Komplexitätsklassen P und NP • Insertionsort (Sortieren durch Einfügen) average case Θ(n2) • Wortproblem Gehört ein Wort zu einer Sprache? Wieviele Schritte braucht eine Turingmaschine, um diese Frage zu beantworten? worst case • Quicksort average case worst case Θ(n2) • Komplexitätsklasse P Die polynomiale Komplexitätsklasse P ist die Menge aller semientscheidbaren Sprachen L über einem endlichen Alphabet A, die von einer deterministischen Turingmaschine in polynomialer Zeit erkannt werden. D.h. es gibt eine deterministische Turingmaschine und ein Polynom P. Schreibt man ein Wort w ∈ A* auf das Eingabeband der Turingmaschine, dann hält diese genau dann nach höchstens P(|w|) Schritten an, wenn w ∈ L ⊆ A*. Θ(n*log n) Θ(n2) • Komplexitätsklasse NP Die nichtdeterministische polynomiale Komplexitätsklasse NP ist die Menge aller semientscheidbaren Sprachen L über einem endlichen Alphabet A, die von einer nichtdeterministischen Turingmaschine in polynomialer Zeit erkannt werden. D.h. es gibt eine nichtdeterministische Turingmaschine und ein Polynom P. Schreibt man ein Wort w ∈ A* auf das Eingabeband der Turingmaschine, dann hält diese genau dann nach höchstens P(|w|) Schritten an, wenn w ∈ L ⊆ A*. • P ⊆ NP 5 6 Simulationstheorem Polynomiale Reduktion • Simulationstheorem Sei P ein Polynom und L eine Sprache, deren Wörter w von einer nichtdeterministischen Turingmaschine in höchstens P(|w|) Schritten erkannt werden. Dann gibt es eine deterministische Turingmaschine, die die Wörter w der Sprache in höchstens cP(|w|) erkennt. • polynomiale Reduktion A1, A2 endliche Alphabete L1 ⊆ A1*, L2 ⊆ A2* Sprachen vom Typ 0 L1 ≤ L2: L 1 ist polynomial reduzierbar auf L2 , wenn es eine in polynomialer Zeit berechenbare Funktion f: A1 → A 2 gibt, sodass w ∈ L1⇔ f(w) ∈ L2 • Simulation von nichtdeterministischen Turingmaschinen Nichtdeterministische Turingmaschinen müssen auf deterministischen Computern simuliert werden, d.h. alle verschiedenen Alternativen müssen nacheinander ausprobiert werden. Konsequenz: NP Probleme führen im allgemeinen zu exponentiellen Laufzeiten • Falls L1 ≤ L 2 , dann kann man das Spracherkennungsproblem w ∈ L1 auf das Spracherkennungsproblem f(w) ∈ L2 zurückführen – plus die Transformation f. 7 8 NP-Vollständigkeit NP-Vollständigkeit • NP-Vollständigkeit Eine semientscheidbare Sprache L heisst NPvollständig, wenn L in NP liegt und jede andere Sprache L' in NP auf L polynomial reduziert werden kann. • Codierung Um festzustellen, ob irgendein Problem in die Klassen P, NP oder NP-vollständig fällt, codiert man es als Spracherkennungproblem. • Rückführung Spracherkennungsproblem für eine NP-vollständige Sprache L ist so komplex, dass das Spracherkennungsproblem einer beliebigen NP Sprache auf das von L zurückgeführt werden kann – plus den Aufwand für die Transformation f. • Folgende Probleme sind NP-vollständig Erfüllbarkeit aussagenlogischer Formeln (Cook's Theorem) Travelling Salesman (Hamiltonscher Weg) Rucksack (Knapsack) Problem Scheduling Problem Registerbelegung Leiterplattenentwurf minimaler Verschnitt ... • Für alle diese Probleme gibt es jedoch praktikable Lösungen, wenn die Zahlen klein sind Symmetrien oder andere Beschränkungen auftauchen Näherungen genügen 9 P=NP? • P ⊆ NP • Frage P=NP oder P≠NP? Ein nichtdeterministische Turingmaschine kann durch eine deterministische simuliert werden und führt dann zu exponentieller Laufzeit. Gibt es bessere Simulationsmethoden, die nur polynomiale Laufzeiten haben? Vermutlich nicht, aber der Beweis fehlt bisher. Quantencomputer? 11 10