Berechenbarkeits- und Komplexitätstheorie

Ähnliche Dokumente
Berechenbarkeits- und Komplexitätstheorie

Syntax von LOOP-Programmen

(Prüfungs-)Aufgaben zur Berechenbarkeits- und Komplexitätstheorie

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

Theorie der Informatik

LOOP-Programme: Syntaktische Komponenten

LOOP-Programme: Syntaktische Komponenten

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Einführung in die Theoretische Informatik

2.5 Halteproblem und Unentscheidbarkeit

Primitiv rekursive und µ-rekursive Funktionen

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Der erste Gödelsche Unvollständigkeitssatz

Einführung in die Theoretische Informatik

Berechenbarkeit und Komplexität

Berechenbarkeit. Script, Kapitel 2

Einführung in Berechenbarkeit, Komplexität und Formale Sprachen

Einführung in die Theoretische Informatik

Unentscheidbarkeit. 1. Wann sind Sprachen unentscheidbar? 1, A 0, A } = {

Mitschrift BFS WS 13/14

Entscheidungsprobleme

Turing-Maschinen: Ein abstrakes Maschinenmodell

GTI. Hannes Diener. 18. Juni. ENC B-0123,

Theorie der Informatik

Sprachen und Grammatiken

Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt. I. Einleitung Berechnungsmodelle LOOP, WHILE, GOTO, rekursive Funktionen

Theoretische Informatik Mitschrift

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Primitiv rekursive und µ-rekursive Funktionen

Unentscheidbarkeitssätze der Logik

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Einführung in Berechenbarkeit, Komplexität und Formale Sprachen

Aufgabentypen: Spickerblatt: kontextfrei (Typ 2): zusätzlich: u ist eine!"# v 1

Carlos Camino Einführung in die Theoretische Informatik SS 2015

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

6.4 Entscheidbarkeit. nein sein müssen, ist klar. THEO 6.4 Entscheidbarkeit 205/307 c Ernst W. Mayr

Entscheidungsprobleme

Das Halteproblem für Turingmaschinen

Mächtigkeit von WHILE-Programmen

abgeschlossen unter,,,, R,

Definition 98 Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für alle q Q gilt:

Informatik III - WS07/08

Typen von Programmiersprachen

Wir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen?

Klausur: Berechenbarkeit und Komplexität (Niedermeier/Chen/Froese/Sorge, Sommersemester 2016)

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

Primitive Rekursion. Basisfunktionen: Konstante Funktion: const 3 3 (1,1, pr 1,3(g,h) (1,1)) Projektion: proj 3 (1,1, pr. Komposition: comp 3,2

Grundlagen der Theoretischen Informatik

Wir haben eine Beziehung zwischen entscheidbar und rekursiv aufzählbar hergeleitet.

Theoretische Informatik

Ausgewählte unentscheidbare Sprachen

Theorie der Informatik Einleitung. Theorie der Informatik Basisfunktionen und Einsetzung Primitive Rekursion. 14.

Primitiv rekursive Funktionen

Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen. Wintersemester 2012/13

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

Berechenbarkeit und Komplexität

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice

Informatik-Grundlagen

Theorie der Informatik

Unentscheidbarkeit. Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen

Einführung in die Berechenbarkeitstheorie

Lösungen zur Vorlesung Berechenbarkeit und Komplexität

Einführung in die Theoretische Informatik Tutorium IX

Berechenbarkeit und Komplexität Vorlesung 10

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

1 falls n ein Anfangsabschnitt der Dezimalbruchentwicklung von π ist, f(n) = 0 sonst

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 12

Mächtigkeit von WHILE-Programmen

Einige Grundlagen der Komplexitätstheorie

Relativierte Berechnungen und die arithmetische Hierachie

1.5 Turing-Berechenbarkeit

Alternative Berechnungsmodelle

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

Reduktionen. Formalisierung von Sprache A ist nicht schwerer als Sprache B.

1.5 Turing-Berechenbarkeit

1.3 Primitiv rekursive und µ-rekursive Funktionen

Grundkurs Theoretische Informatik

Theoretische Grundlagen der Informatik

Berechenbarkeit und Komplexität Vorlesung 11

Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen. Wintersemester 2011/12

Willkommen zur Vorlesung Komplexitätstheorie

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Grundlagen der Theoretischen Informatik

Theoretische Grundlagen der Informatik

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP Programme

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Logik und Beweisbarkeit

a) Berechenbare Funktionen bisher: Funktionen auf natürlichen Zahlen. Ausnahme Turing-Berechenbarkeit: auch schon definiert für Funktionen f: * *.

Theoretische Informatik SS 03 Übung 4

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Theoretische Grundlagen der Informatik

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P

Transkript:

Berechenbarkeits- und Komplexitätstheorie Verschiedene Berechenbarkeitsbegriffe, Entscheidbarkeit von Sprachen, Wachstumsordnungen und Komplexitätsklassen

Inhaltsübersicht und Literatur Verschiedene Berechenbarkeitsbegriffe: intuitive Berechenbarkeit Turing-Berechenbarkeit LOOP-, GOTO- und WHILE-Programme primitiv rekursive und µ-rekursive Funktionen Entscheidbarkeit von Sprachen Das Halteproblem für Turingmaschinen Der Gödel'sche Unvollständigkeitssatz Wachstumsordnungen und Komplexitätsklassen Das P-NP-Problem, NP-Vollständigkeit Literatur: Uwe Schöning: Theoretische Informatik - kurzgefaßt, 4. Auflage, Spektrum Akademischer Verlag 2001 Hopcroft / Motwani / Ullman: Introduction to Automata Theory, Languages, and Computation, 2nd edition, Addison-Wesley 2001 Theoretische Informatik I Berechenbarkeit und Komplexität 2

Intuitive Berechenbarkeit Wir betrachten die Frage, ob Funktionen auf den natürlichen Zahlen berechenbar sind. Eine (evtl. partielle) Funktion f: N k ----> N heiße berechenbar, wenn es ein Rechenverfahren, also einen Algorithmus gibt (z.b. in Form eines Java- oder C-Programms), das f berechnet, d.h. bei Eingabe von (n 1, n 2,..., n k ) soll der Algorithmus nach endlich vielen Schritten die Ausgabe f(n 1, n 2,..., n k ) liefern, falls f an dieser Stelle definiert ist, nicht stoppen, falls f an der Stelle (n 1, n 2,..., n k ) nicht definiert ist. Theoretische Informatik I Berechenbarkeit und Komplexität 3

Beispiele f 1 (n) = 1 falls n ein Anfangsabschnitt der Dezimalbruchentwicklung von π ist 0 sonst f 2 (n) = f 3 (n) = 1 falls n irgendwo in der Dezimalbruchentwicklung von π vorkommt 0 sonst 1 falls in der Dezimalbruchentwicklung von π irgendwo mindestens n-mal hintereinander eine 7 vorkommt 0 sonst f 4 (n) = 1 falls das LBA-Problem eine positive Lösung hat 0 sonst Welche dieser Funktionen sind berechenbar? Theoretische Informatik I Berechenbarkeit und Komplexität 4

Turing-Berechenbarkeit Eine Funktion f: N k ----> N heißt Turing-berechenbar, falls es eine (deterministische) Turingmaschine M gibt, so daß für alle (n 1, n 2,..., n k ) gilt: f (n 1, n 2,..., n k ) = m genau dann wenn die Turingmaschine M bei der anfänglichen Bandbeschriftung bin(n 1 )#bin(n 2 )#... #bin(n k ) nach endlich vielen Schritten in einen Endzustand übergeht und auf dem Band dann bin(m) steht. Hierbei bezeichnet bin(n) die Binärdarstellung der Zahl n. Theoretische Informatik I Berechenbarkeit und Komplexität 5

LOOP-Programme (1) Syntaktische Komponenten von LOOP-Programmen: Variablen: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + - Schlüsselwörter: LOOP DO END Induktive Definition der Syntax von LOOP-Programmen: Jede Wertzuweisung der Form x i := x k + c bzw. x i := x k -c ist ein LOOP-Programm. Sind P 1 und P 2 LOOP-Programme, so auch P 1 ;P 2. Ist P ein LOOP-Programm und x i eine Variable, so ist auch LOOP x i DO P END ein LOOP-Programm. Theoretische Informatik I Berechenbarkeit und Komplexität 6

LOOP-Programme (2) Die Semantik von LOOP-Programmen für Funktionen f: N k ----> N ist wie folgt definiert: Die Startwerte n 1, n 2,..., n k haben den Wert 0. stehen in den Variablen x 1, x 2,..., x k, alle anderen Variablen Die Wertzuweisung x i := x k + c wird wie üblich interpretiert, bei der Wertzuweisung x i := x k - c wird die modifizierte Subtraktion verwendet, d.h. das Resultat wird auf 0 gesetzt, wenn c > x k ist. Das LOOP-Programm P 1 ;P 2 bedeutet, daß zunächst P 1 und dann P 2 ausgeführt wird. Das LOOP-Programm LOOP x i DO P END bedeutet, daß das Programm P so oft ausgeführt wird, wie der Wert der Variablen x i zu Beginn angibt. Das Ergebnis der Berechnung eines LOOP-Programms ist der Inhalt der Variablen x 0. Theoretische Informatik I Berechenbarkeit und Komplexität 7

LOOP-Berechenbarkeit Eine Funktion f: N k ----> N heißt LOOP-berechenbar, wenn es ein LOOP-Programm P gibt, das f in dem Sinne berechnet, daß P, gestartet mit den Werten n 1, n 2,..., n k in den Variablen x 1, x 2,..., x k (und 0 in den restlichen Variablen) stoppt mit dem Wert f(n 1, n 2,..., n k ) in der Variablen x 0. Frage: Ist jede (intuitiv) berechenbare Funktion LOOP-berechenbar? Theoretische Informatik I Berechenbarkeit und Komplexität 8

WHILE-Berechenbarkeit Ein WHILE-Programm ist ein Programm, dessen Syntax alle Konzepte von LOOP- Programmen enthält sowie zusätzlich: Ist P ein WHILE-Programm und x i eine Variable, so ist auch WHILE x i 0 DO P END ein WHILE-Programm. Eine Funktion f: N k ----> N heißt WHILE-berechenbar, wenn es ein WHILE-Programm P gibt, das f in dem Sinne berechnet, daß P, gestartet mit den Werten n 1, n 2,..., n k in den Variablen x 1, x 2,..., x k (und 0 in den restlichen Variablen) stoppt mit dem Wert f(n 1, n 2,..., n k ) in der Variablen x 0, falls f(n 1, n 2,..., n k ) definiert ist, und ansonsten nicht stoppt. Theoretische Informatik I Berechenbarkeit und Komplexität 9

GOTO-Berechenbarkeit GOTO-Programme bestehen aus Sequenzen von Anweisungen A i, die jeweils durch eine Marke M i eingeleitet werden: M 1 : A 1 ; M 2 : A 2 ;... ; M k : A k Als mögliche Anweisungen sind zugelassen: Wertzuweisungen: x i := x k + c bzw. x i := x k -c Unbedingter Sprung: GOTO M i Bedingter Sprung: IF x i = c THEN GOTO M k Stopanweisung: HALT Eine Funktion f: N k ----> N heißt GOTO-berechenbar, wenn es ein GOTO-Programm P gibt, das f in dem bekannten Sinn berechnet. Theoretische Informatik I Berechenbarkeit und Komplexität 10

Äquivalenz von GOTO- und WHILE-Berechenbarkeit Satz: Eine Funktion ist genau dann WHILE-berechenbar, wenn sie GOTO-berechenbar ist. Beweis: =>: fast trivial <=: nicht so offensichtlich, aber auch nicht schwierig (Der Beweis wird in der Vorlesung geführt.) Aus dem Beweis ergibt sich folgendes Korollar (Kleene'sche Normalform für WHILE-Programme) Jede WHILE-berechenbare Funktion kann durch ein WHILE-Programm mit nur einer WHILE-Schleife berechnet werden. Theoretische Informatik I Berechenbarkeit und Komplexität 11

Äquivalente Berechenbarkeitsbegriffe Satz: Für eine Funktion f: N k ----> N sind die folgenden Aussagen äquivalent: f ist Turing-berechenbar f ist GOTO-berechenbar f ist WHILE-berechenbar Beweis: WHILE-berechenbar => Turing-berechenbar: man gibt für jedes Konstrukt eines WHILE-Programmes eine geeignete Turing-Maschine explizit an. Turing-berechenbar => GOTO-berechenbar: Auch dieser Beweis ist konstruktiv, aber etwas aufwendiger. Siehe z.b. Schöning S. 102-104. Theoretische Informatik I Berechenbarkeit und Komplexität 12

Primitiv rekursive Funktionen (1) Die Klasse der primitiv rekursiven Funktionen (auf den natürlichen Zahlen) ist induktiv wie folgt definiert: 1. Alle konstanten Funktionen sind primitiv rekursiv. 2. Alle Projektionen sind primitiv rekursiv. 3. Die Nachfolgerfunktion auf den natürlichen Zahlen ist primitiv rekursiv. 4. Die Komposition primitiv rekursiver Funktionen ist primitiv rekursiv. 5. Jede Funktion, die durch sog. primitive Rekursion aus primitiv rekursiven Funktionen entsteht ist primitiv rekursiv. Primitive Rekursion führt die Definition von f(n+1,...) zurück auf f(n,...). Genauer: f erfüllt ein Gleichungssystem f(0,...) = g(...) f(n+1,...) = h (f(n,...),...) mit primitiv rekursiven Funktionen g und h. Theoretische Informatik I Berechenbarkeit und Komplexität 13

Primitiv rekursive Funktionen (2) Beispiel 1: Die Additionsfunktion add: N 2 ----> N ist primitiv rekursiv, denn sie kann folgendermaßen dargestellt werden: add (0,x) = x (identische Abbildung) add (n+1,x) = s (add (n,x)) (s = Nachfolgerfunktion) Beispiel 2: Die Multiplikationsfunktion mult: N 2 ----> N ist primitiv rekursiv, denn sie kann folgendermaßen dargestellt werden: mult (0,x) = 0 (konstante Abbildung) mult (n+1,x) = add (mult (n,x), x) Satz (ohne Beweis): Die Klasse der primitiv rekursiven Funktionen stimmt mit der Klasse der LOOPberechenbaren Funktionen überein. Theoretische Informatik I Berechenbarkeit und Komplexität 14

µ-rekursive Funktionen Sei f: N k+1 ----> N eine k+1-stellige Funktion. Die durch Anwendung des µ-operators auf f entstehende Funktion ist g: N k ----> N mit g (x 1, x 2,..., x k ) = min { n; f(n, x 1, x 2,..., x k ) = 0 und für alle m<n ist f(m, x 1, x 2,..., x k ) definiert} (Ist das Minimum nicht definiert, so ist g an dieser Stelle undefiniert.) Die Klasse der µ-rekursiven Funktionen ist die kleinste Klasse von Funktionen, die die Basisfunktionen (konstante Funktionen, Projektionen, Nachfolgerfunktion) enthält und abgeschlossen ist unter Komposition, primitiver Rekursion und Anwendung des µ-operators. Satz (ohne Beweis): Die Klasse der µ-rekursiven Funktionen stimmt mit der Klasse der WHILE- (GOTO-, Turing-) berechenbaren Funktionen überein. Theoretische Informatik I Berechenbarkeit und Komplexität 15

Die Ackermannfunktion Ackermann gab 1928 (!) eine Funktion an, die zwar (intuitiv) berechenbar ist, jedoch nicht LOOP-berechenbar (bzw. primitiv rekursiv). ack: N 2 ----> N ack (0,y) = y + 1 ack (x,0) = ack (x-1, 1) ack (x,y) = ack (x-1, ack (x, y-1)) Folgerungen: Es gibt totale, WHILE- (GOTO-, Turing-) berechenbare Funktionen, die nicht LOOP-berechenbar sind. Es gibt µ-rekursive Funktionen, die nicht primitiv rekursiv sind. Theoretische Informatik I Berechenbarkeit und Komplexität 16

(Semi-)Entscheidbarkeit von Sprachen Für ein Alphabet X und eine Menge A X * definieren wir die charakteristische Funktion χ A : X * ----> {0,1} von A durch: χ A (w) = 1 falls w A 0 falls w A Die "halbe" charakteristische Funktion von A, χ A ': X * ----> {0,1} sei definiert durch χ A ' (w) = 1 falls w A undefiniert falls w A Eine Sprache A X * heißt entscheidbar, falls die charakteristische Funktion χ A von A berechenbar ist. Eine Sprache A X * heißt semi-entscheidbar, falls die "halbe" charakteristische Funktion χ A ' von A berechenbar ist. Theoretische Informatik I Berechenbarkeit und Komplexität 17

Rekursive Aufzählbarkeit Eine Sprache A X * heißt rekursiv aufzählbar, falls A = ist, oder falls es eine totale und berechenbare Funktion f: N ----> X gibt, so dass A = {f(0), f(1), f(2),... } Bemerkungen: Jede rekursiv aufzählbare Sprache ist abzählbar. Jede Teilmenge einer abzählbaren Menge ist abzählbar. Nicht jede Teilmenge einer rekursiv aufzählbaren Menge ist rekursiv aufzählbar. Theoretische Informatik I Berechenbarkeit und Komplexität 18

Ein Äquivalenzsatz für Sprachen Satz (ohne Beweis): Für eine Sprache A X * sind die folgenden Aussagen äquivalent: A ist rekursiv aufzählbar A ist semi-entscheidbar A ist vom Typ 0 A ist Sprache einer Turingmaschine die Funktion χ A ' ist berechenbar Theoretische Informatik I Berechenbarkeit und Komplexität 19

Das Halteproblem für Turingmaschinen Durch geeignete Codierung der Übergangsfunktion läßt sich jede Turingmaschine T als Wort w T über {0,1} darstellen. Das Halteproblem für Turingmaschinen ist dann die Sprache H = { (w T,x); T angesetzt auf x hält an } (o.b.d.a.: x {0,1} * ) Satz: Das Halteproblem für Turingmaschinen ist nicht entscheidbar. Beweis: Angenommen, M sei eine Turingmaschine, die χ H berechnet. Wir betrachten die Turingmaschine M': (w T,x) ---> M ---> Ergebnis 1? nein ja stop unendliche Schleife M' angesetzt auf seine eigene Codierung (w M',w M' ) hält genau dann an, wenn sie nicht anhält: Widerspruch. Theoretische Informatik I Berechenbarkeit und Komplexität 20

Weitere nicht entscheidbare Probleme (1) Das Halteproblem für Turingmaschinen auf leerem Band ist nicht entscheidbar. Satz von Rice: Sei Tur die Klasse aller Turing-berechenbaren Funktionen und S Tur eine nicht-triviale Teilmenge. Dann ist die Sprache { w T ; die von T berechnete Funktion liegt in S } nicht entscheidbar. Beispiel: Es ist nicht möglich, einer Turingmaschine anzusehen, ob sie eine konstante Funktion berechnet. Theoretische Informatik I Berechenbarkeit und Komplexität 21

Weitere nicht entscheidbare Probleme (2) Unter dem Wortproblem für eine Grammatik G versteht man die Frage, ob ein Wort x zu L(G) gehört oder nicht. Das Leerheitsproblem für eine Grammatik G fragt ob L(G) = ist. Unter dem Schnittproblem versteht man die Frage, ob für zwei Grammatiken G 1 und G 2 die Menge L(G 1 ) L(G 2 ) leer ist oder nicht. Das Äquivalenzproblem fragt, ob L(G 1 ) = L(G 2 ) ist. Das Wortproblem für Typ-0 Sprachen ist nicht entscheidbar. Das Leerheitsproblem für kontextsensitive Sprachen ist nicht entscheidbar. Das Schnittproblem für deterministisch kontextfreie Sprachen ist nicht entscheidbar. Das Äquivalenzproblem für kontextfreie Sprachen ist nicht entscheidbar. Das Problem, für eine kontextfreie Grammatik festzustellen, ob sie mehrdeutig ist, ist nicht entscheidbar. Theoretische Informatik I Berechenbarkeit und Komplexität 22

Eine Beweismethode für (Nicht-)Entscheidbarkeit Seien A X * und B Y * Sprachen. Dann heißt A auf B reduzierbar geschrieben als A < B falls es eine totale, berechenbare Funktion f: X* Y* gibt, so dass für alle x X* gilt: x X f(x) Y Satz: Ist A < B und ist B entscheidbar (bzw. semi-entscheidbar), so ist auch A entscheidbar (bzw. semi-entscheidbar). Für den Nachweis der Unentscheidbarkeit einer Sprache B genügt es also, für eine Sprache A, deren Unentscheidbarkeit bekannt ist, A < B nachzuweisen. Theoretische Informatik I Berechenbarkeit und Komplexität 23

Arithmetische Formeln Ein arithmetischer Term ist induktiv wie folgt definiert: Jede natürliche Zahl ist ein Term. Jede Variable x i ist ein Term. Sind t 1 und t 2 Terme, so auch (t 1 + t 2 ) und (t 1 * t 2 ). Eine arithmetische Formel ist induktiv wie folgt definiert: Sind t 1 und t 2 Terme, so ist (t 1 = t 2 ) eine Formel. Sind F und G Formeln, dann sind auch F, (F G) und (F G) Formeln. Sind x eine Variable und F eine Formel, dann sind auch x F und x F Formeln. Eine arithmetische Formel heißt wahr, wenn sie für alle Belegungen der Variablen wahr ist, bzw. für x F, wenn es eine natürliche Zahl x gibt, für die die Formel wahr ist. Theoretische Informatik I Berechenbarkeit und Komplexität 24

Gödel'scher Unvollständigkeitssatz Satz: Die Menge der wahren arithmetischen Formeln ist nicht rekursiv aufzählbar. Egal, wie man den Begriff "Beweis" axiomatisiert, ist es sicher eine Minimalforderung zu verlangen, daß die Menge aller zulässigen Beweise entscheidbar (und somit auch rekursiv aufzählbar) ist. Aus dieser Forderung und obigem Satz folgt dann: Gödel'scher Unvollständigkeitssatz: Jedes Beweissystem für die Menge der wahren arithmetischen Formeln ist notwendigerweise unvollständig. (D.h. es bleiben immer wahre arithmetische Formeln übrig, die nicht beweisbar sind.) Theoretische Informatik I Berechenbarkeit und Komplexität 25

Wachstumsordnung von Funktionen Die O-Notation (Bachmann 1892) beschreibt das Wachstumsverhalten von Funktionen für n. Eine Funktion f(n) heißt von der (Wachstums-)Ordnung g(n) f(n) = O (g(n)) falls der Quotient f(n) / g(n) beschränkt ist, also Beispiele: f(n) < K g(n) für alle n, mit einer Konstanten K. Jedes Polynom P(n) vom Grad < k ist von der Ordnung n k. Die Exponentialfunktion f(n) = e n ist nicht von polynomialer Ordnung, d.h. für alle natürlichen Zahlen k ist e n /n k unbeschränkt. Theoretische Informatik I Berechenbarkeit und Komplexität 26

Größenordnungen einiger Funktionen n n log(n) n 2 e n 10 23 100 22.026 100 461 10.000 2,69 10 43 1000 6.908 1.000.000 10000 92.103 100.000.000 100000 1.151.293 10.000.000.000 Theoretische Informatik I Berechenbarkeit und Komplexität 27

Die Komplexitätsklasse P Sei f: N N eine Funktion. Die Klasse TIME (f (n)) besteht aus allen Sprachen A, für die es eine deterministische (Mehrband-) Turingmaschine M gibt mit A = L(M) und time M (x) < f ( x ). Hierbei bedeutet time M : X * ---> N die Anzahl der Rechenschritte von M bei Eingabe x. Die Komplexitätsklasse P ist wie folgt definiert: P = { A ; es gibt eine Turingmaschine M und ein Polynom p mit A = L(M) und time M (x) < p ( x ) } = TIME (p (n)) p Polynom Theoretische Informatik I Berechenbarkeit und Komplexität 28

Die Komplexitätsklasse NP Wir dehnen die obigen Definitionen nun auf nichtdeterministische Turingmaschinen M aus. Für ein x L(M) verstehen wir unter einer akzeptierenden Rechnung von M für x einen Arbeitsablauf der nichtdeterministischen Turingmaschine M bei Eingabe x, der zu einem Endzustand führt. Für eine nichtdeterministische Turingmaschine M sei min { Länge einer akzeptierenden Rechnung ntime M (x) = von M für x } falls x L(M) 0 sonst Sei f: N ---> N eine Funktion. Die Klasse NTIME (f (n)) besteht aus allen Sprachen A, für die es eine nichtdeterministische (Mehrband-) Turingmaschine M gibt mit A = L(M) und ntime M (x) < f ( x ). Ferner definieren wir: NP = NTIME (p (n)) p Polynom Theoretische Informatik I Berechenbarkeit und Komplexität 29

Das P-NP-Problem Das P-NP-Problem: Es ist unbekannt, ob P = NP oder P NP ist. Es gelten die folgenden Inklusionen: semi-entscheidbar entscheidbar LOOP-berechenbar NP P Theoretische Informatik I Berechenbarkeit und Komplexität 30

NP-Vollständigkeit Seien A X * und B Y * Sprachen. Dann heißt A auf B polynomial reduzierbar, geschrieben als A < p B, falls es eine totale, mit polynomialer Komplexität berechenbare Funktion f: X * ----> Y * gibt, so daß für alle x X * gilt: x A f(x) B. Satz: Ist A < p B und B P (bzw. B NP), so ist auch A P (bzw. A NP). Eine Sprache A heißt NP-hart, falls L < p A für alle L NP. Eine Sprache A heißt NP-vollständig, falls A NP-hart ist und A NP. Satz: Sei A NP-vollständig. Dann gilt: A P P = NP Theoretische Informatik I Berechenbarkeit und Komplexität 31

NP-vollständige Probleme (1) Es gibt eine ganze Reihe bekannter Probleme, von denen man weiß, daß sie NP-vollständig sind. Im folgenden werden einige davon definiert ohne ihre NP-Vollständigkeit zu zeigen. Erfüllbarkeitsproblem der Aussagenlogik: gegeben: eine Formel F der Aussagenlogik gefragt: ist F erfüllbar, d.h. gibt es eine Belegung der Variablen mit Konstanten {0,1}, so daß F den Wert 1 erhält? Traveling Salesman: gegeben: Eine n x n Matrix (M i,k ) von "Entfernungen" zwischen n "Städten" und eine Zahl m N. gefragt: Gibt es eine Permutation p (eine "Rundreise"), so daß n 1 M + Mpn p1 m? i= 1 pi (), pi ( + 1) ( ), ( ) Theoretische Informatik I Berechenbarkeit und Komplexität 32

NP-vollständige Probleme (2) Rucksack (oder SUBSET SUM): gegeben: Natürliche Zahlen a 1, a 2,..., a k N und b N. gefragt: Gibt es eine Teilmenge I von {1, 2,..., k} mit Σ a i = b? i I Partition: gegeben: Natürliche Zahlen a 1, a 2,..., a k N. gefragt: Gibt es eine Teilmenge J von {1, 2,..., k}, so daß Σ a i = Σ a i? i J i J Theoretische Informatik I Berechenbarkeit und Komplexität 33

NP-vollständige Probleme (3) Clique: gegeben: ein (ungerichteter) Graph G = (V, E) und ein k N. gefragt: gibt es eine "Clique" der Größe k, d.h. eine Teilmenge V' V mit k Elementen, so daß für alle u,v V' mit u v gilt: (u,v) E? Gerichteter Hamiltonkreis: gegeben: Ein gerichteter Graph (V, E). gefragt: Besitzt G einen Hamilton-Kreis? (Das heißt einen Weg durch den Graphen, der jeden Knoten genau einmal passiert und schließlich wieder am Ausgangsknoten ankommt.) Ungerichteter Hamiltonkreis: gegeben: Ein ungerichteter Graph (V, E). gefragt: Besitzt G einen Hamilton-Kreis? Theoretische Informatik I Berechenbarkeit und Komplexität 34

NP-harte Probleme Satz: Das Wortproblem für Typ-1-Sprachen ist NP-hart. Satz: Das Äquivalenzproblem für reguläre Grammatiken ist NP-hart. Theoretische Informatik I Berechenbarkeit und Komplexität 35