Komplexitätstheorie Kap. 3: Berechnungstheorie Gliederung der Vorlesung 1. Analyse von Algorithmen 1.1 Motivation 1.2 Laufzeit von Algorithmen 1.3 Asymptotische Notationen 2. Entwurf von Algorithmen 2.1 Divide & Conquer 2.2 Dynamisches Programmieren 2.3 Probabilistische Algorithmen 3. Berechnungstheorie 3.1 Turing-Maschinen (TM) 3.2 RAM 3.3 Churchsche These 3.4 Unentscheidbarkeit 4. Grundlegende Ergebnisse aus der Komplexitätstheorie 4.1 Komplexitätsmaße/-klassen 4.2 Speed-up und Bandkompression 4.3 Hierarchiesätze 4.4 Nichtdeterministische TM 5. P = NP? Problem 5.1 Alternative Definition der Klasse NP 5.2 NP-vollständige Probleme 6. NP-vollständig – Was nun? 6.1 Heuristiken 6.2 Approximationsalgorithmen 1 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit zentrale Begriffe • Entscheidbarkeit einer Menge • Lösbarkeit eines Entscheidungsproblems 2 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit es sei E ⊆ N Die Menge E heißt entscheidbar, falls es eine sprachentscheidende Turing-Maschine M mit L(M) = E gibt. mit anderen Worten: • • • für alle x ∈ N gilt: M stoppt bei Eingabe von x nach endlichen vielen Rechenschritten für alle x ∈ E gilt: M stoppt bei Eingabe von x im akzeptierenden Zustand qa für alle x ∉ E gilt: M stoppt bei Eingabe von x im verwerfenden Zustand qr 3 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Beobachtung Es gibt eine Menge E ⊆ N für die gilt: E ist nicht entscheidbar. ... Diagonalisierung aber, eigentlich interessieren wir uns für Entscheidungsprobleme und nicht irgendwelche Teilmengen von N 4 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit 3-Färbbarkeit • Gegeben: eine ungerichteter Graph G = (V,E) • Frage: Gibt es eine Färbung der Knoten in V, so daß keine zwei benachbarten Knoten in G dieselbe Farbe haben? gesucht: ein Algorithmus der folgendes leistet • • • als Eingabe werden beliebige ungerichteter Graphen G = (V,E) akzeptiert als Ausgabe wird nach endlich vielen Rechenschritten entweder eine „0“ oder eine „1“ produziert falls die Ausgabe eine „1“ ist, so ist G 3-färbbar; falls die Ausgabe eine „0“ ist, so ist G nicht 3-färbbar 5 ... jeder Graph G = (V,E) bildet eine Instanz des 3-Färbarkeits-Problems Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Primzahl • Gegeben: eine natürliche Zahl k • Frage: Ist k eine Primzahl? gesucht: ein Algorithmus der folgendes leistet • • • als Eingabe werden beliebige natürliche Zahlen k akzeptiert als Ausgabe wird nach endlich vielen Rechenschritten entweder eine „0“ oder eine „1“ produziert falls die Ausgabe eine „1“ ist, so ist k eine Primzahl; falls die Ausgabe eine „0“ ist, so ist G keine Primzahl 6 ... jeder natürliche Zahl k bildet eine Instanz des Primzahl-Problems Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Äquivalenz von C++-Funktionen • Gegeben: Zwei Definitionen von Funktionen f1 und f2 in C++. • Frage: Leisten die Funktionen f1 und f2 dasselbe? ... das ist eine Aufgabe, die für Menschen nicht ganz ohne ist 7 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit eine Instanz des Äquivalenz-Problems für C++-Funktionen Das Collatz-Problem int f1(int n) { while( n!= 1 ) { if ( n%2 == 0 ) n = n/2; else n = 3n+1; } return(n); } Frage: int f2(int n) { return(1); } Gilt für alle n ≥ 1: f1(n) = f2(n)? ... bisher ist unklar, wie diese Frage zu beantworten ist 8 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Äquivalenz von C++-Funktionen • Gegeben: zwei Definitionen von C++-Funktionen f1 und f2 • Frage: Leisten die Funktionen f1 und f2 dasselbe? gesucht: ein Algorithmus der folgendes leistet • • • als Eingabe werden beliebige C++-Funktionen f1 und f2 akzeptiert als Ausgabe wird nach endlich vielen Rechenschritten entweder eine „0“ oder eine „1“ produziert falls die Ausgabe eine „1“ ist, so sind f1 und f2 äquivalent; falls die Ausgabe eine „0“ ist, so sind f1 und f2 nicht äquivalent ... jedes Paar (f1,f2) von C++-Funktionen bildet eine Instanz des Äquivalenz-Problems für C++-Funktionen 9 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit es sei ein Π Entscheidungsproblem ... ein Lösungsalgorithmus für Π ist ein Algorithmus, der folgendes leistet: • • • als Eingabe werden beliebige Instanzen I von Π akzeptiert als Ausgaben wird nach endlich vielen Rechenschritten eine „0“ oder eine „1“ produziert falls die Ausgabe eine „1“ ist, so ist für I die jeweilige Frage mit „ja“ zu beantworten ist; falls die Ausgabe eine „0„ ist, so ist für I die jeweilige Frage mit „nein“ zu beantworten ... das Entscheidungsproblem Π ist lösbar (unlösbar), falls es einen (keinen) Lösungsalgorithmus für Π gibt 10 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit es sei ein Π Entscheidungsproblem ... ein geeignetes, berechenbares Codierungs-Schema vorausgesetzt, kann jede Instanz I als natürliche Zahl codiert werden ... es sei E(Π), die Menge aller natürlichen Zahlen k, für die gilt: • k ist Codierung einer Instanz des Entscheidungsproblems Π, für die die jeweilige Frage mit „ja“ zu beantworten ist ... dann gilt Π ist lösbar gdw. E(Π) ist entscheidbar. 11 Komplexitätstheorie Kap. 3: Berechnungstheorie Einschub: Codierungs-Schema Instanzen von beliebigen Entscheidungsproblemen Π kann man als natürliche Zahlen codieren Randbedingungen • • • Berechenbarkeit Eindeutigkeit Umkehrbarkeit 12 Komplexitätstheorie Kap. 3: Berechnungstheorie Einschub: Codierungs-Schema Beispiel: ungerichtete Graphen 1) als endliche Folge von Zeichen: B A C [A;B;C;D],[A;B],[B;C],[B;D],[C;D] D 2) als endliche Folge von natürlichen Zahlen: c([),c(A), ..., c(;),c(D),c(]) = 0,0, ...,3,3,1 c(A) = 0 c(B) = 1 c(C) = 2 c(D) = 3 c([) = 0 c(]) = 1 c(,) = 2 c(;) = 3 13 Komplexitätstheorie Kap. 3: Berechnungstheorie Einschub: Codierungs-Schema x y cod(x,y) 0 0 0 0 1 1 1 0 2 0 2 3 1 1 4 2 0 5 0 3 6 1 2 7 2 1 8 ... ... ... Codierung cp(x,y) = x + (x+y)*(x+y+1)/2 • • • Berechenbarkeit Eindeutigkeit Umkehrbarkeit Decodierung (/* z = cp(x,y) */) d1(z) = z – u(z)*u(z+1)/2 d2(z) = u(z) – d1(z) mit: u(z) = max { k | k*(k+1)/2 ≤ z } 14 Komplexitätstheorie Kap. 3: Berechnungstheorie Einschub: Codierungs-Schema Codierung beliebig langer Folgen natürlicher Zahlen sei F = a1, a2,..., an-1, an die betrachtete Folge Fall 1: n = 0 Æ cod (F) = 0 Fall 2: n > 0 Æ cod (F) = cp(n,cp(a1,cp(a2, ..., cp(an-1,an)...) 15 Komplexitätstheorie Kap. 3: Berechnungstheorie Einschub: Codierungs-Schema Beispiel: ungerichtete Graphen 1) als endliche Folge von Zeichen: B A C [A;B;C;D],[A;B],[B;C],[B;D],[C;D] D 2) als endliche Folge von natürlichen Zahlen: c([),c(A), ..., c(;),c(D),c(]) = 0,0, ...,3,3,1 c(A) = 0 c(B) = 1 c(C) = 2 c(D) = 3 c([) = 0 c(]) = 1 c(,) = 2 c(;) = 3 3) als natürliche Zahl: cp(33,cp(0,cp(0,...,cp(3,cp(3,1)...) 16 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit es gibt interessante, unlösbare Entscheidungsprobleme Vollständigkeit • Gegeben: eine Turing-Maschine M • Frage: Stoppt M auf jeder Eingabe? Mit anderen Worten: Ist die von M berechnete einstellige Funktion fM: N Æ N vollständig definiert? Programm Äquivalenz • Gegeben: zwei Turing-Maschinen M und M‘ • Frage: Berechnen M und M‘ dieselbe Funktion? Mit anderen Worten: Gilt für alle x ∈ N: fM(x) = f M‘(x)? ... 17 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit UNLÖSBAR Vollständigkeit • Gegeben: eine Turing-Maschine M • Frage: Stoppt M auf jeder Eingabe? Mit anderen Worten: Ist die von M berechnete einstellige Funktion fM: N Æ N vollständig definiert? Beweismethode: Diagonalisierung Bez: E = { e | e ist Gödelnummer einer TM, die eine vollständig definierte einstellige Funktion berechnet } Bez: zu jedem e sei fe die von der TM mit der Gödelnummer e berechnete einstellige Funktion 18 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Annahme: die Menge E ist entscheidbar Æ dann gibt es eine sprachakzeptierende TM M für E Æ mit Hilfe von M kann man eine TM M‘ konstruieren, die folgende vollständig definierte einstellige Funktion g: N Æ N berechnet: • • g(x) = y + 1, falls x Gödelnummer einer TM mit x ∈ E und fx(x) = y g(x) = 0, falls x Gödelnummer einer TM mit x ∉ E Æ es sei z die Gödelnummer der TM M‘; dann gilt für die von M‘ berechnete vollständig definierte einstellige Funktion fz an der Stelle z: • • fz(z) = y für ein y ∈ N (/* da fz vollständig definiert */) fz(z) = y + 1 (/* da z ∈ E und damit fz(z) = g(z) = y + 1 */) a 19 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit UNLÖSBAR Programm Äquivalenz • Gegeben: zwei Turing-Maschinen M und M‘ • Frage: Berechnen M und M‘ dieselbe Funktion? Mit anderen Worten: Gilt für alle x ∈ N: fM(x) = f M‘(x)? Bez: E = { cp(i,j) | i und j sind Gödelnummer von TM, so daß für alle x N gilt: fi(x) = fj(x) } Bez: E‘ = { e | e ist Gödelnummer einer TM, die eine vollständig definierte einstellige Funktion berechnet } Beweismethode: Reduktion Idee: wenn E entscheidbar, so ist auch E‘ entscheidbar 20 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Æ es seien M eine TM und e die Gödelnummer von M Æ dann kann man mit Hilfe von M eine TM M‘ konstruieren, so daß für die von M‘ berechnete einstellige Funktion fM‘ gilt: • • fM‘(x) = 1, falls fM(x) definiert ist fM‘(x) = undefiniert, sonst falls fM vollständig definiert ist, so ist auch fM‘ vollständig definiert und es gilt fM‘(x) = 1 für alle x ∈ N Æ wähle i und k, so daß i Gödelnummer von M‘ und k Gödelnummer einer TM M‘‘ mit fM‘‘(x) = 1 für alle x ∈ N Æ offenbar gilt: cp(i,k) ∈ E gdw. e ∈ E‘ 21 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit sprachentscheidende TM für E‘ • • • • • schreibe die Gödelnummer e aufs Band starte eine TM M1, die aus e die Gödelnummer i von M‘ berechnet schreibe hinter das i die Gödelnummer k aufs Band starte eine TM M2, die cp(i,k) berechnet starte die sprachentscheidende TM M3 für die Menge E Hinweis: M1 und M2 kann man angeben; M3 existiert nur nach Annahme (/* wir zeigen eine Implikation */) 22 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Allgemeines Halte-Problem • Gegeben: eine Turing-Maschine M und eine Zahl x • Frage: Stoppt M auf der Eingabe x? Mit anderen Worten: Ist die von M berechnete einstellige Funktion an der Stelle x definiert? Diagonales Halte-Problem • Gegeben: eine Turing-Maschine M und ihre Gödelnummer e • Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die von M berechnete einstellige Funktion an der Stelle e definiert? ... aus der Unlösbarkeit des diagonalen Halteproblems folgt sofort die Unlösbarkeit des allgemeinen Halteproblems 23 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit UNLÖSBAR Diagonales Halte-Problem • Gegeben: eine Turing-Maschine M und ihre Gödelnummer e • Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die von M berechnete einstellige Funktion an der Stelle e definiert? Beweismethode: Diagonalisierung Bez: E = { e | e ist Gödelnummer einer TM, so daß für die berechnete Funktion fe gilt: fe(e) ist definiert } 24 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Annahme: die Menge E ist entscheidbar Æ dann gibt es eine sprachakzeptierende TM M für E Æ mit Hilfe von M kann man eine TM M‘ konstruieren, die folgende vollständig definierte einstellige Funktion g: N Æ N berechnet: • • g(x) = undefiniert, falls x Gödelnummer einer TM mit x ∈ E g(x) = 0, falls x Gödelnummer einer TM mit x ∉ E Æ es sei z die Gödelnummer der TM M‘; dann gilt für die von M‘ berechnete einstellige Funktion fM‘ an der Stelle z: Fall 1: fM‘(z) = 0 also gilt z ∈ E und damit g(z) = undefiniert Fall 2: fM‘(z) = undefiniert also z ∉ E und damit g(z) = 0 a (/* zu g(z) = f (z) */) M‘ a (/* zu g(z) = f (z) */) M‘ 25 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit UNLÖSBAR Allgemeines Halte-Problem • Gegeben: eine Turing-Maschine M und eine Zahl x • Frage: Stoppt M auf der Eingabe x? Mit anderen Worten: Ist die von M berechnete einstellige Funktion an der Stelle x definiert? UNLÖSBAR Diagonales Halte-Problem • Gegeben: eine Turing-Maschine M und ihre Gödelnummer e • Frage: Stoppt M auf der Eingabe e? Mit andere Worten: Ist die von M berechnete einstellige Funktion an der Stelle e definiert? 26 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit ... „Schwierigkeiten“ beim Nachweis der Unentscheidbarkeit/Unlösbarkeit es gibt Mengen A ⊆ B ⊆ N mit folgenden Eigenschaften: • • A ist entscheidbar, B ist unentscheidbar A ist unentscheidbar, B ist entscheidbar ... trotzdem möchte man bereits vorhandenes Wissen über die (Un)Entscheidbarkeit von Mengen natürlicher Zahlen bzw. (Un)Lösbarkeit von Entscheidungsproblem möglichst gewinnbringend einsetzen ... 27 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Es seien Mengen A,B ⊆ N gegeben. Die Menge A ist auf die Menge B reduzierbar, falls eine TM M gibt, so daß für alle x ∈ N gilt: • fM(x) ist definiert • x ∈ A gdw. fM(x) ∈ B Bezeichnung: A ≤T B fM N A B fM N 28 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Beispiele • • • A = { x | x gerade }; B = { y | y ungerade } A = { x | letzte Ziffer von x ist eine 1}; B = { 1,2 } A = { e | e ist Gödelnummer einer Turing-Maschine, für die gilt: fe(e) ist definiert } B = { e‘ | e‘ ist Gödelnummer einer Turing-Maschine, so daß gilt: fe‘(0) = 100 }; • ... 29 Komplexitätstheorie Kap. 3: Berechnungstheorie Unentscheidbarkeit Es seien A, B ⊆ Ngegeben. Dann gilt: 1. Wenn A ≤T B und B entscheidbar ist, so ist auch A entscheidbar. 2. Wenn A ≤T B und A unentscheidbar ist, so ist auch B unentscheidbar. 3. Wenn A und B entscheidbar (und nicht trivial), so gilt A ≤T B. Nachweis von 1: Komposition Nachweis von 2: folgt unmittelbar aus 1 Nachweis von 3: „many-to-one“ Reduktion 30