Algorithmen und Komplexität, Teil II: Berechenbarkeit und Komplexität

Ähnliche Dokumente
Berechenbarkeit und Komplexität

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

Clevere Algorithmen programmieren

Angewandte Mathematik am Rechner 1

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Berechnungsmodelle. Mathias Hecht. April 29, 2010

Theorie der Informatik

Unentscheidbarkeitssätze der Logik

Kapitel 3: Berechnungstheorie Gliederung

Handout zu Gödel: Die Unvollständigkeitssätze

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

Logik und Beweisbarkeit

Hilberts zweites Problem: Die Widerspruchsfreiheit der arithmetischen Axiome

LOGIK IM INTERDISZIPLINÄREN SPANNUNGSFELD

Theoretische Informatik Kap 2: Berechnungstheorie

Algorithmen & Komplexität

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

Berechenbarkeit und Komplexität Vorlesung 10

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

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

Logik und Beweisbarkeit

Grundlagen der Theoretischen Informatik

Registermaschine (RAM), Church-Turing-These. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Der erste Gödelsche Unvollständigkeitssatz

Logik und Beweisbarkeit

Martin Goldstern Der logische Denker Kurt Gödel und sein Unvollständigkeitssatz. 6.

Grundlagen der Programmierung (Vorlesung 24)

Turing-Maschinen: Ein abstrakes Maschinenmodell

Chaitins Interpretation von Zufall, Komplexität und Unvollständigkeit durch Ω

Seminararbeit zum Thema Was ist ein Algorithmus?

Unentscheidbare Probleme: Diagonalisierung

Typen von Programmiersprachen

Achim Feldmeier, 23. Juni : Penrose nimmt dieses Argument auf in Shadows of the Mind.

Turingmaschinen. und eine kleine Einführung in Bereiche der theoretischen Informatik

Formale Logik. PD Dr. Markus Junker Abteilung für Mathematische Logik Universität Freiburg. Wintersemester 16/17 Sitzung vom 25.

Berechenbarkeitstheorie 19. Vorlesung

Mächtigkeit von WHILE-Programmen

Einige Ideen und Probleme der theoretischen Informatik

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

Entscheidungsprobleme

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

Algorithmen & Komplexität

Unentscheidbare Probleme: Existenz, Diagonalsprache, Halteproblem

LOOP-Programme: Syntaktische Komponenten

Registermaschine (RAM), Church-Turing-These

Grundlagen der Theoretischen Informatik: Übung 10

Einführung in die Berechenbarkeitstheorie

Kapitel 3: Berechnungstheorie Gliederung

Kapitel 1.5 und 1.6. Ein adäquater Kalkül der Aussagenlogik

Informatik I Komplexität von Algorithmen

1 Algorithmische Grundlagen

Axiome der Mengenlehre nach von Neumann, Bernays, Gödel (NBG)

2.5 Halteproblem und Unentscheidbarkeit

Zufall oder Absicht?

Ein formales Berechnungsmodell: Turingmaschinen. Turingmaschinen 26 / 62

Theoretische Informatik 1

Warum wir noch Mathematiker brauchen

Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

Theoretische Grundlagen der Informatik

Kapitel 5. Entscheidbarkeit und Berechenbarkeit. 5.1 Entscheidbarkeit

2.7 Der Shannon-Fano-Elias Code

ALP I Turing-Maschine

Einführung in die Informatik Turing Machines

Entscheidungsprobleme

Einführung in die mathematische Logik

Einführung in die Informatik Turing Machines

Gödels Unvollständigkeits-Theorem

Theoretische Informatik 1

Turingmaschinen. Sabine Kuske: Turingmaschinen; 23.Juni 2008

Berechenbarkeit und Komplexität: Probleme, Sprachen, Maschinen

Mächtigkeit von WHILE-Programmen

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

8. Der Äquivalenzsatz

VL-06: Unentscheidbarkeit II. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Einführung in die Theoretische Informatik

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

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

MATHEMATIQ. Der Newsletter der MathSIG (Interessensgruppe innerhalb der Mensa Österreich) Ausgabe 4.

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

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

Berechenbarkeit und Komplexität: Simulationen zwischen TM und RAM und die Church-Turing-These

Angewandte Mathematik am Rechner 1 SOMMERSEMESTER Kapitel 4. Algebra. Michael Wand Institut für Informatik.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Berechenbarkeit und Komplexität Vorlesung 11

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Theoretische Informatik

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

Teil III. Komplexitätstheorie

3. RAM als Rechnermodell

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Die Church-Turing-These

Grundlagen der Theoretischen Informatik

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

1.5 Turing-Berechenbarkeit

Transkript:

Algorithmen und Komplexität, Teil II: Berechenbarkeit und Komplexität Ralph Keusch 21. November 2017

Berechenbarkeitstheorie

RAM-Maschine 1: M 1 1 2: M 0 1 3: M 0 M 0 M 1 4: M 2 M 2 M 1 5: GOTO 3 IF M 2 > 0. M 2 : M 1 : M 0 : M 1 : M 2 :.. 1 243 3 10. Programmzähler: 5 Die Random Access Machine (RAM) mit einem Programm der Länge 5, ausgeführt auf Eingabe M 1 = 3 und M 2 = 15.

Programme Definition: Ein Programm ist eine endliche Folge von zulässigen Befehlen. Details und formale Definition: Skript, Kapitel 1.1.1 Ein Programm muss nicht zwingend endliche Laufzeit haben!

Programme Definition: Ein Programm ist eine endliche Folge von zulässigen Befehlen. Details und formale Definition: Skript, Kapitel 1.1.1 Ein Programm muss nicht zwingend endliche Laufzeit haben! Zweck von Programmen: In der Komplexitätstheorie wollen wir Programme mit endlicher Laufzeit benützen, um Funktionen zu berechnen.

Funktionen auf Z Funktionen f : {0, 1} {0, 1} reichen aus, um Funktionen f : Z Z zu berechnen.

Funktionen auf Z Funktionen f : {0, 1} {0, 1} reichen aus, um Funktionen f : Z Z zu berechnen. Es ist leicht, eine Bijektion zwischen {0, 1} und Z zu finden:

Funktionen auf Z Funktionen f : {0, 1} {0, 1} reichen aus, um Funktionen f : Z Z zu berechnen. Es ist leicht, eine Bijektion zwischen {0, 1} und Z zu finden: x... 4 3 2 1 0 1 2 3 4... b(x)... 000 01 00 0 λ 1 10 11 100...

Funktionen auf Z Funktionen f : {0, 1} {0, 1} reichen aus, um Funktionen f : Z Z zu berechnen. Es ist leicht, eine Bijektion zwischen {0, 1} und Z zu finden: x... 4 3 2 1 0 1 2 3 4... b(x)... 000 01 00 0 λ 1 10 11 100... Die Beschränkung der Bildmenge ist ebenfalls unwesentlich. Für eine gegebene Funktion f : Z Z setzen wir { f i (x) 1 wenn b(f (x)) exakt i Bits lang ist 0 sonst f i (x) := Bit i von b(f (x))

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}.

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}. 1. Schreibe b 1 (x) Z als Eingabe in M 0.

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}. 1. Schreibe b 1 (x) Z als Eingabe in M 0. 2. Lasse das Programm A auf dieser Eingabe laufen, bis es hält.

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}. 1. Schreibe b 1 (x) Z als Eingabe in M 0. 2. Lasse das Programm A auf dieser Eingabe laufen, bis es hält. 3. Betrachte die Zahl, die dann in M 0 steht:

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}. 1. Schreibe b 1 (x) Z als Eingabe in M 0. 2. Lasse das Programm A auf dieser Eingabe laufen, bis es hält. 3. Betrachte die Zahl, die dann in M 0 steht: M 0 > 0: interpretieren wir als 1

Programme berechnen Funktionen Wir wollen Programme benützen, um Funktionen zu berechnen. Sei A ein Programm, das immer endliche Laufzeit hat, und sei x {0, 1}. 1. Schreibe b 1 (x) Z als Eingabe in M 0. 2. Lasse das Programm A auf dieser Eingabe laufen, bis es hält. 3. Betrachte die Zahl, die dann in M 0 steht: M 0 > 0: interpretieren wir als 1 M 0 0: interpretieren wir als 0 Wir stellen fest: Unser Programm A berechnet eine Funktion A : {0, 1} {0, 1}.

Andere Rechenmodelle? Offensichtlich ist unsere Definition von berechenbar abhängig von der RAM-Maschine. Ist das eine Einschränkung?

Andere Rechenmodelle? Offensichtlich ist unsere Definition von berechenbar abhängig von der RAM-Maschine. Ist das eine Einschränkung? es gibt weniger mächtige Rechenmodelle

Andere Rechenmodelle? Offensichtlich ist unsere Definition von berechenbar abhängig von der RAM-Maschine. Ist das eine Einschränkung? es gibt weniger mächtige Rechenmodelle es gibt aber auch mächtigere Rechenmodelle

Andere Rechenmodelle? Offensichtlich ist unsere Definition von berechenbar abhängig von der RAM-Maschine. Ist das eine Einschränkung? es gibt weniger mächtige Rechenmodelle es gibt aber auch mächtigere Rechenmodelle die meisten anderen Modelle wie z.b. Turing-Maschinen sind gleich mächtig wie die RAM-Maschine!

Andere Rechenmodelle? Offensichtlich ist unsere Definition von berechenbar abhängig von der RAM-Maschine. Ist das eine Einschränkung? es gibt weniger mächtige Rechenmodelle es gibt aber auch mächtigere Rechenmodelle die meisten anderen Modelle wie z.b. Turing-Maschinen sind gleich mächtig wie die RAM-Maschine! Church-Turing-These: Die Klasse der RAM-berechenbaren Funktionen stimmt mit der Klasse der intuitiv berechenbaren Funktionen überein. (nicht beweisbar!) lesenswert: History of the Church-Turing thesis auf englischer Wikipedia

Codieren in {0, 1} Wir haben die Begriffe Sprache, Funktion, Berechenbarkeit über {0, 1} eingeführt.

Codieren in {0, 1} Wir haben die Begriffe Sprache, Funktion, Berechenbarkeit über {0, 1} eingeführt. Ist dies hinreichend flexibel?

Codieren in {0, 1} Wir haben die Begriffe Sprache, Funktion, Berechenbarkeit über {0, 1} eingeführt. Ist dies hinreichend flexibel? Bereits gesehen: {0, 1} ist bijektiv zu Z.

Codieren in {0, 1} Wir haben die Begriffe Sprache, Funktion, Berechenbarkeit über {0, 1} eingeführt. Ist dies hinreichend flexibel? Bereits gesehen: {0, 1} ist bijektiv zu Z. Wir wollen auch Paare (x, y) als Elemente von {0, 1} codieren können, oder auch ganze Programme.

Codierung von Paaren Seien x, y {0, 1}. Wir möchten das Paar (x, y) als Element von {0, 1} auffassen. Wie geht das?

Codierung von Paaren Seien x, y {0, 1}. Wir möchten das Paar (x, y) als Element von {0, 1} auffassen. Wie geht das? Idee: verdopple jedes Bit b von x und y dies ergibt x und y füge x und y mit Trennsymbol 10 zusammen

Codierung von Paaren Seien x, y {0, 1}. Wir möchten das Paar (x, y) als Element von {0, 1} auffassen. Wie geht das? Idee: verdopple jedes Bit b von x und y dies ergibt x und y füge x und y mit Trennsymbol 10 zusammen Beispiel: Sei x = 100 und y = 11. Dann codieren wir das Paar (x, y) als 110000101111.

Codierung von Programmen Serie 1, Aufgabe 2: 1 : M 2 1 2 : M 1 M M0 3 : M 1 M 1 + M 1 4 : M M0 M 1 5 : M 0 M M0 M 2 6 : GOTO 2 IF M 0 > 0

Codierung von Programmen Serie 1, Aufgabe 2: 1 : M 2 1 2 : M 1 M M0 3 : M 1 M 1 + M 1 4 : M M0 M 1 5 : M 0 M M0 M 2 6 : GOTO 2 IF M 0 > 0 Beobachtung: Wir können jedes Symbol als Bitstring codieren (z.b. ASCII). Dies ergibt einen endlichen Bitstring, somit können wir das Programm als Element von {0, 1} codieren.

Hilbertsche Probleme (1900) 23 damals ungelöste Probleme aus der Mathematik

Hilbertsche Probleme (1900) 23 damals ungelöste Probleme aus der Mathematik Problem 8b: Zeige, dass jede gerade Zahl ausser 2 die Summe von zwei Primzahlen ist (Goldbach-Vermutung).

Hilbertsche Probleme (1900) 23 damals ungelöste Probleme aus der Mathematik Problem 8b: Zeige, dass jede gerade Zahl ausser 2 die Summe von zwei Primzahlen ist (Goldbach-Vermutung). Problem 2: Sind die arithmetischen Axiome widerspruchsfrei?

Hilbertsche Probleme (1900) 23 damals ungelöste Probleme aus der Mathematik Problem 8b: Zeige, dass jede gerade Zahl ausser 2 die Summe von zwei Primzahlen ist (Goldbach-Vermutung). Problem 2: Sind die arithmetischen Axiome widerspruchsfrei? Gödel (1930): dies kann nicht bewiesen werden!

Was heisst beweisen? Sei S eine Menge von mathematischen Aussagen, z.b. x > y, n ist eine Primzahl, Programm A hält auf Eingabe x

Was heisst beweisen? Sei S eine Menge von mathematischen Aussagen, z.b. x > y, n ist eine Primzahl, Programm A hält auf Eingabe x Wir verlangen, dass aus s S auch s S folgt.

Was heisst beweisen? Sei S eine Menge von mathematischen Aussagen, z.b. x > y, n ist eine Primzahl, Programm A hält auf Eingabe x Wir verlangen, dass aus s S auch s S folgt. Das Verifizieren eines Beweises soll mechanisch sein: Es soll ein Programm V geben, das Aussagen s S beweisen kann.

Was heisst beweisen? Sei S eine Menge von mathematischen Aussagen, z.b. x > y, n ist eine Primzahl, Programm A hält auf Eingabe x Wir verlangen, dass aus s S auch s S folgt. Das Verifizieren eines Beweises soll mechanisch sein: Es soll ein Programm V geben, das Aussagen s S beweisen kann. genauer: für gegebene s S und p {0, 1} ist V (s, p) = 1 genau dann wenn p ein gültiger Beweis für Aussage s ist.

Was heisst beweisen? Sei S eine Menge von mathematischen Aussagen, z.b. x > y, n ist eine Primzahl, Programm A hält auf Eingabe x Wir verlangen, dass aus s S auch s S folgt. Das Verifizieren eines Beweises soll mechanisch sein: Es soll ein Programm V geben, das Aussagen s S beweisen kann. genauer: für gegebene s S und p {0, 1} ist V (s, p) = 1 genau dann wenn p ein gültiger Beweis für Aussage s ist. Definition: V heisst widerspruchsfrei, falls es kein s S gibt, so dass V sowohl s als auch s beweisen kann.

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann.

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann.

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann. Beweisidee: per Widerspruch:

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann. Beweisidee: per Widerspruch: Könnten wir für alle Paare (A, x), so dass A(x) nicht hält, die Aussage A(x) hält nicht beweisen,

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann. Beweisidee: per Widerspruch: Könnten wir für alle Paare (A, x), so dass A(x) nicht hält, die Aussage A(x) hält nicht beweisen, so könnten wir daraus ein Programm schreiben, das entscheidet, ob A(x) hält oder nicht.

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann. Beweisidee: per Widerspruch: Könnten wir für alle Paare (A, x), so dass A(x) nicht hält, die Aussage A(x) hält nicht beweisen, so könnten wir daraus ein Programm schreiben, das entscheidet, ob A(x) hält oder nicht. Dann wäre aber die Haltefunktion berechenbar!

Gödelsche Unvollständigkeitssätze Theorem (1. UV-Satz) Sei V so dass, falls A(x) hält, V die Aussage A(x) hält immer beweisen kann. Dann gibt es eine Aussage s S, die korrekt ist, die V aber nicht beweisen kann. Beweisidee: per Widerspruch: Könnten wir für alle Paare (A, x), so dass A(x) nicht hält, die Aussage A(x) hält nicht beweisen, so könnten wir daraus ein Programm schreiben, das entscheidet, ob A(x) hält oder nicht. Dann wäre aber die Haltefunktion berechenbar! Theorem (2. UV-Satz) Kein widerspruchsfreies Programm V kann die eigene Widerspruchsfreiheit beweisen.