114
Berechenbarkeit Klaus Becker 2011

Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

Embed Size (px)

Citation preview

Page 1: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

Berechenbarkeit

Klaus Becker

2011

Page 2: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

2 Algorithmen

Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen

„Die mathematische Präzisierung des Algorithmusbegriffs und die

Erkenntnis der Grenzen der Algorithmisierbarkeit gehören zu

den größten intellektuellen Leistungen des zwanzigsten

Jahrhunderts.“ (Kirchler)

Page 3: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

3 Teil 1

Das Halteproblem

Page 4: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

4 Frustrierende Erlebnisse

Jeder kennt diese Situation: Man hat ein Programm entwickelt und will es testen. Aber, nichts tut sich, Python liefert kein Ergebnis.

Mein Rechner hat sich schon wieder aufgehängt!

Page 5: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

5 Endlosschleife

Aufgabe 1Findest du den Fehler? Korrigiere ihn und teste dann die Funktion noch einmal.

Aufgabe 2Es gibt typische Fehler, die eine Endlosschleife verursachen. Beschreibe den Fehler, der hier vorliegt.

Aufgabe 3Es ist nicht immer so einfach wie oben, Endlosschleifen direkt am Quelltext zu erkennen. Verdeutliche das mit selbst gewählten Beispielen.

Mein Rechner hat sich schon wieder aufgehängt!

def primzahl(n): if n == 1: prim = False else: i = 2 while i < n: if n % i == 0: prim = False return prim

Page 6: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

6 Das Halteproblem

Gibt es einen Algorithmus / ein Python-Programm (dargestellt als Python-Funktion), mit dessen Hilfe man Endlosschleifen bei beliebigen Python-Programmen feststellen kann?

falls das Python-Programm bei der Verarbeitung der Daten hält,sonst

True

False

Python-Programm +

Daten

analyseHaltend

analyseHaltend

False

"""def primzahl(n): if n == 1: prim = False else: i = 2 while i < n: if n % i == 0: prim = False return prim"""

daten

quelltext

71

Page 7: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

7 While-Analyse

Vereinfachung des Problems: Getestet werden soll zunächst, ob ein Python-Programm eine while-Anweisung enthält.

falls das Python-Programm eine While-Anweisung enthält,sonst

True

False

Python-Programm

analyseWhile

Page 8: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

8 While-Analyse

Zur Vereinfachung der Programmanalyse betrachten wir nur solche Programme, die sich ganz einfach in ihre Bestandteile (man sagt hier auch Token) zerlegen lassen. Mit Hilfe von Leerzeichen (und Zeilenumbrüchen) sollen hier jeweils alle Programmeinheiten getrennt sein. Man kann auf diese Vereinfachung verzichten, muss dann aber viel mehr Analysearbeit leisten.

analyseWhile

True

"""def primzahl ( n ) : if n == 1 : prim = False else : i = 2 while i < n : if n % i == 0 : prim = False return prim"""

daten

quelltext

71

Page 9: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

9 Aufgabe

Teste die Funktion analyseWhile mit verschiedenen Python-Quelltexten und kontrolliere die Ergebnisse.

def analyseWhile ( quelltext ) : tokenliste = quelltext . split ( ) gefunden = False for token in tokenliste : if token == 'while' : gefunden = True return gefunden

# Test

quelltext1 = """def primzahl ( n ) : if n == 1 : prim = False else: i = 2 while i < n : if n % i == 0 : prim = False return prim"""

print(analyseWhile(quelltext1))

Page 10: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

10 Aufgabe

Versuche, eine Funktion analyseRekursion zu entwickeln, die überprüft, ob der Funktionsname in der weiteren Funktionsdefinition noch einmal vorkommt.

Beachte: Mit diesem Test werden nur direkte rekursive Aufrufe einer Funktion erfasst. Denkbar sind auch rekursive Aufrufe über weitere, zwischengeschaltete Funktionen. Dieser Fall soll hier aber nicht weiter verfolgt werden.

falls eine Python-Funktionsdefinition den Funktionsnamen enthält,sonst

True

False

Python-Programm

analyseRekursion

Beurteile den eingeschlagenen Weg, die Existenz von Endlosschleifen über Eigenschaften des Quelltextes herauszufinden. Wie vielversprechend ist dieser Weg? Verdeutliche deine Argumentation auch mit Beispielen. (vgl. auch www.inf-schule.de: 1.21.1.2)

Page 11: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

11 Selbsthaltende Programme

Wir nennen eine Python-Funktion (mit einem Parameter) selbsthaltend, wenn die Funktion bei der Verarbeitung des eigenen Quelltextes hält.

def analyseWhile ( quelltext ) : tokenliste = quelltext . split ( ) gefunden = False for token in tokenliste : if token == 'while' : gefunden = True return gefunden

# Test

quelltextAnalyseWhile = """def analyseWhile ( quelltext ) : tokenliste = quelltext . split ( ) gefunden = False for token in tokenliste : if token == 'while' : gefunden = True return gefunden"""

print(analyseWhile(quelltextAnalyseWhile))

selbsthaltend

Page 12: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

12 Aufgabe

Welche der folgenden Funktionen ist nicht selbsthaltend? Begründe!

def f1 ( x ) : return True

def f2 ( x ) : return False

def f3 ( x ) : while True : pass return True

def f4 ( x ) : while True : pass return False

def f5 ( x ) : liste = x . split ( ) if liste [ 1 ] == "f4" : return False else: return True

def f1 ( x ) : return True

# Test

quelltext_f1 = """def f1 ( x ) : return True"""

print(f1(quelltext_f1))

Page 13: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

13 Das Selbsthalteproblem

Das Selbsthalteproblem besteht darin, eine Funktion (mit Funktionsdefinition) zu entwickeln, mit der man die Eigenschaft "selbsthaltend" testen kann.

falls das Python-Programm bei der Verarbeitung des eigenen Quelltextes hält,sonst

True

False

Python-Programm

analyseSelbsthaltend

analyseSelbsthaltend

False

"""def f3 ( x ) : while True : pass return True"""

quelltext

Page 14: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

14 Spekulation statt Konstruktion

Anstatt nach einer Funktionsdefinition für die Funktion analyseSeltsam zu suchen, schlagen wir einen anderen Weg ein und überlegen uns Konsequenzen, die sich ergeben würden, wenn wir die gesuchte Funktionsdefinition hätten.

def analyseSeltsam ( quelltext ) :

def analyseSelbsthaltend ( quelltext ) : ... return ...

if analyseSelbsthaltend ( quelltext ) == True : while True : pass else : return False

Was wäre, wenn es diese Funktionsdefinition gäbe?

Dann könnte man diese Funktionsdefinition erstellen!

Aufgabe:

Was leistet diese Funktion analyseSeltsam? Überlege dir hierzu, was die Funktion analyseSeltsam als Ergebnis zurückliefert, wenn man ihr die Quelltexte der Funktionen f1, ..., f5 (siehe letzter Abschnitt) zur Verarbeitung übergibt.

Page 15: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

15 Eine seltsame Analysefunktion

Das Verhalten der Funktion analyseSeltsam lässt sich so beschreiben:

falls das Python-Programm bei der Verarbeitung des eigenen Quelltextes nicht hält,sonst

hält und liefert False

hält nicht

Python-Programm

analyseSeltsam

Page 16: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

16 Jetzt wird es ganz seltsam!def analyseSeltsam ( quelltext ) : def analyseSelbsthaltend ( quelltext ) : ... return ... if analyseSelbsthaltend ( quelltext) == True : while True : pass else : return False

# Test

quelltextAnalyseSeltsam = """def analyseSeltsam ( quelltext ) :

def analyseSelbsthaltend ( quelltext ) : ... return ...

if analyseSelbsthaltend ( quelltext) == True : while True : pass else : return False"""print(analyseSeltsam(quelltextAnalyseSeltsam))

Was wäre, wenn es diese Funktionsdefinition gäbe?

analyseSeltsam verarbeitet hier den eigenen Quelltext!

Page 17: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

17 Verhalten von analyseSeltsam

Was ergibt sich, wenn die Funktion analyseSeltsam den eigenen Quelltext verarbeitet?

Quelltext vonanalyseSeltsam

falls das analyseSeltsam bei der Verarbeitung des eigenen Quelltextes nicht hält,sonst

hält und liefert False

hält nicht

analyseSeltsam

Fall 1: Angenommen, die Funktion analyseSeltsam ist selbsthaltend. Dann gerät analyseSeltsam bei der Verarbeitung des eigenen Quelltextes in eine Endlosschleife. Das würde aber bedeuten, dass die Funktion analyseSeltsam nicht selbsthaltend ist. Es ergibt sich ein Widerspruch.

Fall 2: Angenommen, die Funktion analyseSeltsam ist nicht selbsthaltend. Dann liefert analyseSeltsam bei der Verarbeitung des eigenen Quelltextes den Wert False. Das würde aber bedeuten, dass die Funktion analyseSeltsam selbsthaltend ist. Auch hier ergibt sich ein Widerspruch.

Page 18: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

18 Verhalten von analyseSeltsam

Fall 1: Angenommen, die Funktion analyseSeltsam ist selbsthaltend. Dann gerät analyseSeltsam bei der Verarbeitung des eigenen Quelltextes in eine Endlosschleife. Das würde aber bedeuten, dass die Funktion analyseSeltsam nicht selbsthaltend ist. Es ergibt sich ein Widerspruch.

Fall 2: Angenommen, die Funktion analyseSeltsam ist nicht selbsthaltend. Dann liefert analyseSeltsam bei der Verarbeitung des eigenen Quelltextes den Wert False. Das würde aber bedeuten, dass die Funktion analyseSeltsam selbsthaltend ist. Auch hier ergibt sich ein Widerspruch.

In beiden Fällen verwickelt man sich in einen Widerspruch. Irgendetwas kann hier also nicht stimmen. Da alle Schlüsse logisch korrekt sind, kann es nur an der Funktion analyseSelbsthaltend liegen. Wir sind bei unseren Überlegungen davon ausgegangen, dass es eine Funktionsdefinition für diese Funktion gibt. Es ergeben sich dann aber durch logisches Schließen Widersprüche. Da wir nicht an der Logik zweifeln, kann das nur heißen:

Es gibt keine Funktionsdefinition (in Python) zur Funktion analyseSelbsthaltend.

analyseSeltsam

Page 19: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

19 Lösung des Halteproblems

Gibt es ein Python-Programm (dargestellt als Python-Funktion), mit dessen Hilfe man Endlosschleifen bei beliebigen Python-Programmen feststellen kann?

falls das Python-Programm bei der Verarbeitung der Daten hält,sonst

True

False

Python-Programm +

Daten

analyseHaltend

def analyseSelbsthaltend ( quelltext ) :

def analyseHaltend ( quelltext , daten ) : ... return ...

return analyseHaltend ( quelltext , quelltext )

Was wäre, wenn es diese Funktionsdefinition gäbe?

Dann könnte man diese Funktionsdefinition erstellen!

Diese Funktionsdefinition kann es aber nicht geben!

Page 20: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

20 Unlösbarkeit des Halteproblems

Satz (über die Lösbarkeit des Halteproblems in Python):

Man kann in Python keine Funktion entwickeln, die bei Übergabe einer beliebigen Python-Funktionsdefinition und eines beliebigen Datentupels entscheidet, ob die betreffende Funktion bei der Verarbeitung der Daten hält oder nicht. Das Halteproblem für Python-Programme ist demnach nicht mit einer Python-Funktion entscheidbar.

falls das Python-Programm bei der Verarbeitung der Daten hält,sonst

True

False

Python-Programm +

Daten

analyseHaltend

existiert nicht!

Page 21: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

21 Teil 2

Exkurs - Lösbarkeit von Problemen

Page 22: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

22 Ein einfaches Problem

Kann man alle neun Punkte mit vier Strecken verbinden, ohne den Stift abzusetzen?

Page 23: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

23 Lösung des 9-Punkte-Problems

Kann man alle neun Punkte mit vier Strecken verbinden, ohne den Stift abzusetzen?

Die oben gezeigte Lösung des Neun-Punkte-Problems benutzt einen kleinen "Trick": Der Streckenzug verlässt das vorgegebene Punktegitter.

Ist das eigentlich erlaubt?

Das ist hier gar nicht so leicht zu beantworten. Bei der Formulierung des Problems wurde versäumt, die erlaubten Operationen zur Lösung des Problems zu präzisieren.

Page 24: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

24 Ein verschärftes Problem

Kann man das Neun-Punkte-Problem mit vier Strecken auch dann noch lösen, wenn alle Eckpunkte des Streckenzugs zum vorgegebenen Punktegitter gehören?

Page 25: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

25 Lösung des verschärften Problems

Um Aussagen über die (Un-) Lösbarkeit eines Problems zu ermöglichen, muss man in der Regel genaue Vereinbarungen über die erlaubten Operationen machen.

Wir haben gesehen, dass das Neun-Punkte-Problem lösbar ist, wenn man Streckenzüge zulässt, die das vorgegebene Punktegitter verlassen.

Wir verschärfen jetzt die Anforderungen an die erlaubten Operationen und betrachten im Folgenden ausschließlich Streckenzüge mit den folgenden Eigenschaften:

Der Streckenzug besteht aus aneinandergefügten Strecken, deren Anfangs- und Endpunkte jeweils Punkte des vorgegebenen Punktegitters sind. Mittelpunkte der Strecken können dabei ebenfalls Punkte des vorgegebenen Punktegitters sein. Wir nennen solche Streckenzüge "gitterbasiert".

Beispiele für gitterbasierte Streckenzüge: (ADG)(GHI)(IFC)(CE) und (AE)(EC)(CFI)(ID)

Page 26: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

26 Lösung des verschärften Problems

Das zu klärende Problem lautet jetzt: Gibt es einen gitterbasierten Streckenzug mit 4 Teilstrecken, der alle 9 Punkte des vorgegebenen Punktegitters umfasst?

Wir können jetzt wie folgt argumentieren: Wenn alle 9 Punkte in einem gitterbasierten Streckenzug vorkommen sollen, dann muss dieser Streckenzug aus 4 Teilstrecken bestehen, die alle jeweils 3 Punkte des Gitters erfassen (beachte, dass es 3 Nahtstellen geben muss und 4*3-3 = 9). Es gibt insgesamt 8 Strecken mit 3 Gitterpunkten: (ADG), (BEH), (CFI), (ABC), (DEF), (GHI), (AEI), (CEG). Jetzt kann man (mit etwas Fleiß) alle Fälle durchspielen. Dabei zeigt sich, dass man einen Streckenzug mit 3 aneinanderhängenden Strecken (mit jeweils 3 Gitterpunkten) nicht mit einer der vorgegebenen 8 Strecken fortsetzen kann.

Page 27: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

27 Zwischenfazit

Der Nachweis, dass ein Problem lösbar ist, wird meist durch Angabe einer Lösung erbracht.

Viel schwieriger ist es in der Regel nachzuweisen, dass ein Problem unlösbar ist. Man muss dann Aussagen über alle denkbaren Problemlösemöglichkeiten machen, also sowohl über die, die man schon erprobt hat, als auch über die, an die man noch gar nicht gedacht hat.

Ein sicheres Fundament erhalten Unlösbarkeitsnachweise, wenn die zur Lösung einsetzbaren Mittel präzisiert werden. Im Fall des Neun-Punkte-Problems wurde hierzu zunächst der Begriff "gitterbasierter Streckenzug" geklärt. Mit Hilfe dieses Begriffes konnte dann die Unlösbarkeit bzgl. der vorgenommenen Präzisierung begründet werden.

Page 28: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

28

Algorithmische Lösbarkeit v. Problemen

Wir haben gezeigt, dass das Halteproblem mit den Mitteln von Python nicht lösbar ist. Ist es damit aber auch algorithmisch unslösbar?

Wie die Betrachtungen zum Neun-Punkte-Problem zeigen, sollte man eher vorsichtig sein. Über unkonventionelle Wege könnte es ja durchaus möglich sein, das Halteproblem algorithmisch zu lösen

Die einzige Möglichkeit, um zu einem befriedigenden und nicht auf Spekulation basierenden Ergebnis zu gelangen, besteht darin, die Mittel beim algorithmischen Problemlösen zu präzisieren. Hierzu ist muss der Algorithmusbegriff präzisiert werden.

Satz (über die Lösbarkeit des Halteproblems in Python):

Man kann in Python keine Funktion entwickeln, die bei Übergabe einer beliebigen Python-Funktionsdefinition und eines beliebigen Datentupels entscheidet, ob die betreffende Funktion bei der Verarbeitung der Daten hält oder nicht. Das Halteproblem für Python-Programme ist demnach nicht mit einer Python-Funktion entscheidbar.

Halteproblem:

Gibt es einen Algorithmus, mit dessen Hilfe man Endlosschleifen bei beliebigen Algorithmen feststellen kann?

Page 29: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

29 Intuitiver Algorithmusbegriff

Ein Algorithmus ist eine Verarbeitungsvorschrift, die so präzise formuliert ist, dass sie auch von einer Maschine abgearbeitet werden kann.Ein Algorithmus ist

eindeutig,d. h.: die einzelnen Schritte und ihre Abfolge sind unmissverständlich beschrieben

ausführbar,d. h.: der "Prozessor" muss die Einzelschritte abarbeiten können

endlich,d. h.: seine Beschreibung besteht aus einem Text endlicher Länge

allgemein,d. h.: es wird nicht nur ein Problem, sondern eine ganze Klasse von Problemen gelöst Die oben aufgeführte Begriffsklärung ist keine präzise Definition im mathematischen Sinne. Ziel ist es, die informelle Begriffsklärung durch eine präzise Definition im mathematischen Sinne zu ersetzen.

Page 30: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

30 Ausführbarkeit als Problem

Handelt es sich bei der vorliegenden Beschreibung um einen Algorithmus? Was spricht dafür, was spricht dagegen?

Eingabe: Polynomgleichung p mit ganzzahligen Koeffizienten, in der verschiedene Variablen mit verschiedenen Exponenten vorkommen können z.B.: x3 + 5x2y2z – xz + 37 = 0WENN p ganzzahlige Lösungen hat: weise allen Variablen den Wert 0 zu SOLANGE noch keine Lösung gefunden wurde: verändere systematisch die Werte der Variablen Ausgabe: LösungstupelSONST: Ausgabe: "Es gibt keine Lösungen."

Unklar ist z.B., ob eine Bedingung wie "p hat ganzzahlige Lösungen" ausführbar ist. Kann der - oben nicht näher beschriebene - "Prozessor" eine solche Bedingung überhaupt überprüfen? An diesem einfachen Beispiel sieht man bereits, wie wenig aussagekräftig das oben formulierte Kriterium der Ausführbarkeit ist.

Ziel ist es im Folgenden, diese Lücke zu schließen und den Algorithmusbegriff formal zu definieren. Mit einem solchermaßen präzisierten Algorithmusbegriff kann dann die algorithmische Lösbarkeit von Problemen argumentativ klar geklärt werden.

Page 31: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

31 Teil 3

Turingmaschine als Berechnungsmodell

Page 32: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

32 Ein erstes Berechnungsmodell

http://www.alanturing.net/

Alan Mathison Turing FRS OBE (born 23 June 1912 at 2 Warrington Crescent, London W9, died 7 June 1954 at his home in Wilmslow, Cheshire) contributed to mathematics, cryptanalysis, logic, philosophy, biology, and formatively to computer science, cognitive science, Artificial Intelligence and Artificial Life.

Educated at Sherborne School in Dorset, Turing went up to King's College, Cambridge in October 1931 to read Mathematics. He was elected a Fellow of King's in March 1935, at the age of only 22. In the same year he invented the abstract computing machines - now known simply as Turing machines - on which all subsequent stored-program digital computers are modelled. ...

Alan Mathison Turing FRS OBE (born 23 June 1912 at 2 Warrington Crescent, London W9, died 7 June 1954 at his home in Wilmslow, Cheshire) contributed to mathematics, cryptanalysis, logic, philosophy, biology, and formatively to computer science, cognitive science, Artificial Intelligence and Artificial Life.

Educated at Sherborne School in Dorset, Turing went up to King's College, Cambridge in October 1931 to read Mathematics. He was elected a Fellow of King's in March 1935, at the age of only 22. In the same year he invented the abstract computing machines - now known simply as Turing machines - on which all subsequent stored-program digital computers are modelled. ...

Ein erstes Berechnungsmodell wurde 1936 von A. Turing entwickelt - die sog. Turingmaschine.

Page 33: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

33 Turings Idee

"Computing is normally done by writing certain symbols on paper. We may suppose this paper is divided into squares like a child's arithmetic book."

"Let us imagine the operations performed by the computer to be split up into “simple operations” which are so elementary that it is not easy to imagine them further divided. [...] The simple operations must therefore include: (a) Changes of the symbol on one of the observed squares. (b) Changes of one of the squares observed to another square within L squares of one of the previously observed squares."aus: Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society

Page 34: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

34 Turings Idee

"Computing is normally done by writing certain symbols on paper. We may suppose this paper is divided into squares like a child's arithmetic book."

"The behaviour of the computer at any moment is determined by the symbols which he is observing and his “state of mind” at that moment."

"We may suppose that there is a bound B to the number of symbols or squares which the computer can observe at one moment."

"Let us imagine the operations performed by the computer to be split up into “simple operations” which are so elementary that it is not easy to imagine them further divided. [...] The simple operations must therefore include: (a) Changes of the symbol on one of the observed squares. (b) Changes of one of the squares observed to another square within L squares of one of the previously observed squares."

"It may be that some of these changes necessarily involve a change of state of mind. The most general single operation must therefore be taken to be one of the following: A. A possible change (a) of symbol together with a possible change of state of mind. B. A possible change (b) of observed squares, together with a possible change of state of mind." aus: Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society

Page 35: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

35 Simulation einer Rechenmaschine

Wir benutzen das Programm TuringKara zur Simulation der von Turing entwickelten Rechenmaschine.

Aufgabe:

(a) Erzeuge zunächst die Ausgangssituation. Der Schreib-Lese-Kopf der Rechenmaschine soll so wie in der Abbildung zunächst auf dem Symbol "#" ganz rechts stehen.

Page 36: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

36 Simulation einer Rechenmaschine

(b) Öffne jetzt mit der Schaltfläche [Programmieren] das Programmierfenster und lade das Steuerprogramm binaddition.kara.

Im Ausführfenster kannst du jetzt dieses Steuerprogramm ausführen. Beobachte genau, was passiert. Analysiere anschließend das Steuerprogramm. Welche Funktion haben die Zustände s0ü0, s1ü0, s0ü1, s1ü1, weiter, stopp? Wie sind die Zustandsübergänge hier festgelegt?

(c) Lies dir noch einmal die Ausführungen von Turing durch (s.o.) und erläutere die Entscheidungen von Turing anhand der durchgeführten Simulation (zur Addition von Dualzahlen).

Page 37: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

37 Aufgabe

Entwickle selbst ein Steuerprogramm für eines der beiden folgenden Probleme:

(a) Eine 0-1-Folge soll invertiert werden. Z.B. soll aus der Folge 10011 die Folge 01100 erzeugt werden. Entscheide selbst, wie dieser Invertierungsvorgang im Detail ablaufen soll.

(b) Eine Dualzahl soll um 1 erhöht werden. So soll aus der Dualzahl 1010 die neue Zahl 1011, aus der Dualzahl 10111 die neue Zahl 11000 erzeugt werden.

Beachte, dass beide Probleme auch in einer eindimensionalen Welt gelöst werden können. Eine solche eindimensionale Welt kannst du im Bereich [Größe] festlegen.

Page 38: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

38

Ein Marienkäfer als Rechenmaschine

Kara ist ein Marienkäfer. Kara lebt in einer Welt mit unbewegliche Baumstümpfen, Pilzen, die Kara verschieben kann und Kleeblättern, die Kara legen und aufnehmen kann.

Page 39: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

39 Kara´s Sicht der Welt

Kara hat Sensoren, mit denen er/sie die Umwelt wahrnimmt:

stehe ich vor einem Baumstumpf?

ist links von mir ein Baumstumpf?

ist rechts von mir ein Baumstumpf?

stehe ich vor einem Pilz?

stehe ich auf einem Kleeblatt?

Kara versteht einige Befehle,die er/sie folgsam ausführt:

mache einen Schrittvorwärts!

drehe um 90° nach links!

drehe um 90° nach rechts!

lege ein Kleeblatt hin!

nimm ein Kleeblatt auf!

Page 40: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

40 Kara soll ein Problem lösen

Kara steht auf dem ersten Kleeblatt einer Reihe von Kleeblättern. Kara soll ein Kleeblatt am Ende der Reihe hinzufügen und zurück zur Ausgangsposition laufen.

Page 41: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

41 Steuerung von Kara

Bedingung: Aktionen:Akt. Zustand: Neuer Zustand:

endeSuchen ja endeSuchen

endeSuchen nein anfangSuchen

anfangSuchen ja anfangSuchen

anfangSuchen nein stop

endeSuchen stop

Auf Blatt? ja / vorwärts

Auf Blatt? nein / hinlegen; ...

zurück

Auf Blatt? ja / vorwärts

Auf Blatt? nein / links; links

Page 42: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

42 Steuerung von Kara

endeSuchen stop

Auf Blatt? ja / vorwärts

Auf Blatt? nein / hinlegen; ...

zurück

Auf Blatt? ja / vorwärts

Auf Blatt? nein / links; links

Bedingung: Aktionen:Akt. Zustand: Neuer Zustand:

endeSuchen ja endeSuchen

endeSuchen nein anfangSuchen

anfangSuchen ja anfangSuchen

anfangSuchen nein stop

Page 43: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

43 Aufgabe

Kara soll Kleeblätter benutzen, um einfache Rechenoperationen auszuführen. Zahlen sollen dabei mit Kleeblättern dargestellt werden. So soll z.B. die Zahl 4 mit einer Kleeblattreihe bestehend aus 4 Kleeblättern codiert werden. Im Beispiel oben kann dann das Hinzufügen eines Kleeblatts als Rechenoperation "+1" gedeutet werden.

Im Folgenden betrachten wir die Rechenoperation "*2". Zur Ausführung dieser Rechenoperation muss also die Länge einer Kleeblattreihe verdoppelt werden. Schaffst du das? AZ: Kara steht vor einer Blattreihen der Länge n (die auch 0 sein kann).

ZZ: Kara hat eine Blattreihen der Länge 2*n erzeugt.

Page 44: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

44 Aufgabe

Kara soll Nachrichten verschlüsseln. Jeder Buchstabe wird durch eine Kleeblattreihe (bzw. Zahl) codiert, der Buchstabe A durch eine Kleeblattreihe der Länge 1, der Buchstabe B durch eine Kleeblattreihe der Länge 2 usw.. Beim Verschlüsseln sollen 3 Schritte im Alphabet weitergegangen werden.

Entwickle ein Kara-Steuerprogramm zur Ausführung der Verschlüsselung.

Überlege dir selbst, was am Ende des Alphabets geschehen soll und ob bzw. wie das mit Kara realisierbar ist.

AZ: ZZ:

Page 45: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

45 Präzisierung der Turingmaschine

Eine (Ein-Band-) Turingmaschine verfügt über ein nach rechts und links unbegrenztes Band, das in einzelne Felder aufgeteilt ist. In diesen Felder können Symbole einer vorgegebenen Symbolmenge abgelegt werden. Die einzelnen Felder des Bandes können mit einem Lese-/Schreibkopf angesteuert werden. Dieser Lese-/Schreibkopf kann den Inhalt eines Feldes lesen und auch Symbole in die Felder schreiben. Zudem kann er sich jeweils einen Schritt nach rechts und nach links bewegen. Die Verarbeitungseinheit zur Steuerung des Lese-/Schreibkopfes befindet sich stets in einem bestimmten Zustand. Die Verarbeitung selbst wird über ein Steuerprogramm festgelegt.

0 1 11

q0

Band mit Feldern

Zustandsbasierte Verarbeitungseinheit

Schreib-/Lese-Kopf

Page 46: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

46 Präzisierung der Turingmaschine

Die Arbeitsweise einer Turingmaschine soll anhand einer konkreten Verarbeitungsaufgabe erläutert werden: Die Turingmaschine befindet sich zunächst im Anfangszustand. Auf dem Band befinden sich die Symbole, die verarbeitet werden sollen. Im vorliegenden Beispiel sind das die Symbole "0" und "1", mit denen hier eine Dualzahl dargestellt ist. Der Lese-/Schreibkopf verarbeitet jetzt Schritt für Schritt die Symbole auf dem Band gemäß des Steuerprogramms.

Page 47: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

47 Präzisierung der Turingmaschine

Das Verhalten einer Turingmaschine beschreibt man oft mit einem Zustandsdiagramm:

Die Turingmaschine hat eine nichtleere endliche Menge Z von Zuständen. Im vorliegenden Fall ist das die Menge Z = {q0, q1, q2, q3, q4, q5}. Der Zustand q0 ist hier als Anfangszustand ausgezeichnet, der Zustand q5 als ein Endzustand.

Eine Verarbeitung wird durch einen Zustandsübergang (von einem Zustand in einen anderen, gegebenenfalls denselben Zustand) beschrieben. Ein Zustandsübergang erfolgt nur in Abhängigkeit vom gelesenen Symbol. Ein Zustandsübergang beschreibt zusätzlich, wie das gelesene Symbol überschrieben wird (ggf. durch dasselbe Symbol) und wie sich anschließend der Lese-Schreibkopf bewegt. R steht für einen Schritt nach rechts und L für einen Schritt nach links. Im Zustandsdiagramm werden diese Informationstripel in der Gestalt (gelesenes Symbol; geschriebenes Symbol, Bewegung) an die Übergangspfeile geschrieben.

Zustandsdiagramm

Page 48: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

48 Präzisierung der Turingmaschine

Zustandsdiagramm

Eine (einfache) Turingmaschine ist eine Verarbeitungseinheit, die durch folgende Bestandteile festgelegt wird:

eine nichtleere, endliche Menge von Zuständen

eine nichtleere, endliche Menge von Eingabesymbolen, die das Symbol B (für ein leeres Feld) nicht enthält

eine nichtleere, endliche Menge von Bandsymbolen, die alle Eingabesymbole, gegebenenfalls weitere Hilfssymbole und das Symbol B für ein leeres Feld enthält

eine Überführungsfunktion, die dem aktuellem Zustand in Abhängigkeit von einem gelesenen Symbol den Folgezustand zuordnet, zudem das zu schreibende Symbol und die Bewegung des Lese-Schreibkopfes festlegt

einen ausgezeichneten Zustand - den Anfangszustand -

eine Menge von Endzuständen

Page 49: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

49 Turingmaschinenvarianten

AZ: I I II

z0

z0

I ;II;RR

; ;LSz1

; ;RS

I ;I ;LS

z2

; ;SSz3

I ;II;RR2-Band-Turingmaschine

2-dimensionale Turingmaschine

Page 50: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

50 Turingmaschinenvarianten

Satz (über die Gleichmächtigkeit von Turingmaschinenvarianten)

Alle (hier betrachteten) Turingmaschinenvarianten sind im folgenden Sinn gleichmächtig: Ein Problem ist genau dann mit einer einfachen Turingmaschine lösbar, wenn es mit einer zweidimensionalen Turingmaschine lösbar ist, genau dann, wenn es mit einer ...-Turingmaschinenvariante lösbar ist.

Page 51: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

51

Probleme lösen - Funktionen berechnen

Die beabsichtigte Verarbeitung von Symbolfolgen kann mit einer Funktion f beschrieben werden, die bestimmten Symbolfolgen (bestehend aus Symbolen einer vorgegebenen Symbolmenge) neue Symbolfolgen zuordnet, für bestimmte Symbolfolgen aber auch nicht definiert sein kann. Solche Funktionen werden auch partiell definierte Funktionen genannt.

Invertierproblem:

AZ:

ZZ:

Invertierfunktion:

f: 101011# 010100#

Page 52: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

52 Turingmaschinen-berechenbar

Eine partiell definierte Funktion f, die (bestimmten) Symbolfolgen über einer vorgegebenen Symbolmenge neue Symbolfolgen zuordnet, heißt Turingmaschinen-berechenbar genau dann, wenn gilt: Es gibt eine Turingmaschine T mit der folgenden Eigenschaft:

Ausgangszustand: Auf dem Band befindet sich eine Symbolfolge w. Die Turingmaschine befindet sich im Anfangszustand, der Lese-/Schreibkopf am Anfang der Symbolfolge.

Fall 1: f(w) ist definiert.

Zielzustand: Die Turingmaschine T hält und hat f(w) auf dem Band erzeugt.

Fall 2: f(w) ist nicht definiert.

Zielzustand: Die Turingmaschine T hält nicht.

Page 53: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

53

Berechnungen mit natürlichen Zahlen

Rechenprobleme bei natürlichen Zahlen lassen sich mit Hilfe von (mehrstelligen) partiellen Funktionen beschreiben.

Additionsproblem:

AZ:

ZZ:

Additionsfunktion:

f(m, n) = m+n

Subtraktionsproblem:

AZ:

ZZ:

Subtraktionsfunktion:

f(m, n) =m-n ,falls m >= n

undefiniert ,falls m < n

Page 54: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

54 Turingmaschinen-berechenbar

Eine k-stellige Funktion f: N,...,N -> N heißt Turingmaschinen-berechenbar genau dann, wenn gilt: Es gibt eine Turingmaschine T mit der folgenden Eigenschaft:

Ausgangszustand: Auf dem Band befindet sich ein k-Tupel (n1, ..., nk) aus natürlichen Zahlen n1, ..., nk, die alle als Strichzahlen dargestellt sind und mit dem Symbol "#" verbunden sind. Die Turingmaschine befindet sich im Anfangszustand, der Lese-/Schreibkopf am Anfang der Strichzahl.

Fall 1: f(n1, ..., nk) ist definiert.

Zielzustand: Die Turingmaschine T hält und hat f(n1, ..., nk) als Strichzahl auf dem Band erzeugt.

Fall 2: f(n1, ..., nk) ist nicht definiert.

Zielzustand: Die Turingmaschine T hält nicht.

Page 55: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

55 Aufgaben

Zeige, dass die folgenden Rechenprobleme mit einer Turingmaschine lösbar sind bzw., dass die entsprechenden Funktionen Turingmaschinen-berechnenbar sind:

(a) Additionsproblem: Das Symbol "#" wird als "plus" gedeutet. Das Rechenergebnis soll die Summe der beiden vorgegebenen Strichzahlen darstellen.

(b) Subtraktionsproblem: Das Symbol "#" wird als "minus" gedeutet. Das Rechenergebnis soll die Differenz der beiden vorgegebenen Strichzahlen darstellen. Wenn die erste Strichzahl kleiner als die zweite Strichzahl ist, dann soll die Turingmaschine nicht mehr klarkommen und in einer Endlosschleife irgendetwas machen.

(c) Verdopplungsproblem: Hier wird das Symbol "#" nicht benötigt. Das Rechenergebnis soll das Doppelte einer vorgegebenen Strichzahl darstellen.

(d) Multiplikationsproblem: Das Symbol "#" wird als "mal" gedeutet. Das Rechenergebnis soll das Produkt der beiden vorgegebenen Strichzahlen darstellen.

(e) Divisionsproblem: Das Symbol "#" wird als "durch" gedeutet. Das Rechenergebnis soll den ganzzahligen Quotienten (ohne Rest) der beiden vorgegebenen Strichzahlen darstellen. Wenn die zweite Strichzahl eine Null ist, dann soll die Turingmaschine nicht mehr klarkommen und in einer Endlosschleife irgendetwas machen.

Page 56: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

56 Probleme - Rechenprobleme

Rechenprobleme kann man allgemein so charakterisieren, dass aus bestimmten natürlichen Zahlen eine neue natürliche Zahl bestimmt wird. Auf den ersten Blick scheint es so, dass Rechenprobleme eher spezielle, in der Mathematik auftretende Probleme sind. Es zeigt sich aber, dass man sehr viele Probleme als Rechenprobleme deuten kann. Es ist daher durchaus sinnvoll, sich auf das Lösen von Rechenproblemen zu konzentrieren.

Problem: Rechenproblem:

Codierung:

Kommt ein Zeichen in einer Zeichenkette vor?

Bsp.: Kommt das Zeichen 'E' in der Zeichenkette 'TURING' vor?

f: (n1, n2) -> nn1: Zeichen; n2: Zeichenkette; n: ja/nein

f: (5, 202118091407) -> 0

A -> 1; B -> 2; C -> 3; ...

TURING -> 202118091407

ja ->1; nein -> 0

Page 57: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

57 Eine Zwischenbilanz

Zielsetzung:Die Turingmaschine ist ein auf den ersten Blick sehr primitives Rechner-Modell. Zu klären ist, ob sie auch im oben beschriebenen Sinn programmierbar ist.

Zielsetzung:Die Turingmaschine ist ein auf den ersten Blick sehr primitives Rechner-Modell. Zu klären ist, ob sie auch im oben beschriebenen Sinn programmierbar ist.

Was leistet das Berechnungsmodell "Turingmaschine"? Es soll die „Idee Computer“ erfassen, d. h.

es kann Rechenoperationen ausführen (z. B. Addieren)

es kann Problemlösungen (in geeignet beschriebener Form) selbstständig ausführen (z. B. Texte verschlüsseln)

es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann

es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Was leistet das Berechnungsmodell "Turingmaschine"? Es soll die „Idee Computer“ erfassen, d. h.

es kann Rechenoperationen ausführen (z. B. Addieren)

es kann Problemlösungen (in geeignet beschriebener Form) selbstständig ausführen (z. B. Texte verschlüsseln)

es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann

es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Page 58: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

58 Spezielle Verarbeitungssysteme

Wir haben Turingmaschinen bisher als spezielle Verarbeitungssysteme benutzt: Für jedes Problem wurde hierzu eine spezielle Turingmachine entwickelt.

Page 59: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

59 Universelle Verarbeitungssysteme

Reale Computer sind programmierbare Systeme und somit universelle Verarbeitungssysteme: Sie sind in der Lage, beliebige vorgegebene Programme bei beliebig vorgegebenen Daten auszuführen. Sie sind also universell in dem Sinne, dass sie nicht nur für eine Aufgabe konzipiert sind, sondern zur Ausführung beliebiger Lösungsalgorithmen.

Page 60: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

60 Universelle Turingmaschine

universelle Turingmaschine

1 0 1 1 0 1 1 1 #

z1

1;0;R0;1;R

#;#;Sz0

0 1 0 0 1 0 0 0 #

Eingabeband

Eingabeband

Turingmaschine zum Invertieren einer 0-1-Zeichenkette

Eine universelle Turingmaschine besitzt die Fähigkeit, beliebige andere Turingmaschinen zu simulieren. Als Eingabe erhält sie die Beschreibung der zu simulierenden Turingmaschine und der Daten auf dem Eingabeband für diese Turingmaschine. Die universelle Turingmaschine erzeugt dann die Daten, die die zu simulierende Turingmaschine bei der Verarbeitung der übergebenen Daten erzeugen würde.

Page 61: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

61 Simulation mit Turing-Kara

Kodierung der TM

Ein-/Ausgabeband

Vgl.: Turingkara – Aufgaben: Die universelle Turingmaschine

Aktueller Zustand

z1

1;0;R0;1;R

#;#;Sz0

1 0 1 0 1 0 1 0 1 #

Page 62: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

62 Aufgabe

Wenn man im Weltfenster von TuringKara die Schaltfläche [Aufgaben] anklickt, erhält man ein Auswahlmenu mit vielen Aufgaben, von leichten bis sehr schwierigen. Zu den sehr schwierigen gehört auch die Aufgabe "Die Universelle Turingmaschine".

(a) Wähle die Welt "Invertieren einer Zeichenkette" aus und führe das vorgegebene Steuerprogramm aus. Die Arbeitsweise dieser Turingmaschine ist zunächst etwas undurchsichtig. Aber mit etwas Geduld kann man doch einige Verhaltensmuster erkennen. Kannst du insbesondere nachvollziehen, in welcher Weise hier eine Zeichenkette invertiert wird?

(b) Lies dir jetzt auch die Hinweise unter "Codierung" durch. Hier erfährst du, wie eine (einfache) Turingmaschine auf dem zweidimensionalen Raster dargestellt wird.

(c) Wenn Du alles verstanden hast, dann solltest du in der Lage sein, eine (einfache) Turingmaschine zur Verdopplung einer Strichzahl mit der universellen Turingmaschine zu simulieren.

Wenn man im Weltfenster von TuringKara die Schaltfläche [Aufgaben] anklickt, erhält man ein Auswahlmenu mit vielen Aufgaben, von leichten bis sehr schwierigen. Zu den sehr schwierigen gehört auch die Aufgabe "Die Universelle Turingmaschine".

(a) Wähle die Welt "Invertieren einer Zeichenkette" aus und führe das vorgegebene Steuerprogramm aus. Die Arbeitsweise dieser Turingmaschine ist zunächst etwas undurchsichtig. Aber mit etwas Geduld kann man doch einige Verhaltensmuster erkennen. Kannst du insbesondere nachvollziehen, in welcher Weise hier eine Zeichenkette invertiert wird?

(b) Lies dir jetzt auch die Hinweise unter "Codierung" durch. Hier erfährst du, wie eine (einfache) Turingmaschine auf dem zweidimensionalen Raster dargestellt wird.

(c) Wenn Du alles verstanden hast, dann solltest du in der Lage sein, eine (einfache) Turingmaschine zur Verdopplung einer Strichzahl mit der universellen Turingmaschine zu simulieren.

Page 63: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

63

Existenz universeller Turingmaschinen

Band

einfache TM

Band

Die universelle Turingmaschine ist bisher als zweidimensionale Turingmaschine konzipiert. Um von einem universellen Berechnungsmodell sprechen zu können, müsste die universelle Turingmaschine vom selben Typ wie die zu simulierenden Turingmaschinen sein (also eine einfache Turingmaschine).

Mit dem Satz über die Gleichmächtigkeit von Turingmaschinenvarianten ergibt sich, dass es auch universelle Turingmaschinen als einfache Turingmaschinen gibt.

Zweidimensionale Turingmaschine

Page 64: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

64

Existenz universeller Turingmaschinen

Band

einfache TM

Bandeinfache

Turingmaschine

Satz (über die Existenz universeller Turingmaschinen)

Es gibt eine (einfache) Turingmaschine, die als universelle Turingmaschine jede andere (einfache) Turingmaschine simulieren kann.

Was leistet das Berechnungsmodell "Turingmaschine"? es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Was leistet das Berechnungsmodell "Turingmaschine"? es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Page 65: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

65 Teil 4

Weitere Berechnungsmodelle

Page 66: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

66 Berechnungsmodelle

Die Turingmaschine ist letztlich eine mathematische Präzisierung des "Prozessors". Hier wird eine Art Modell-Maschine festgelegt, die die "Idee Computer" erfassen soll. Weitere Modell-Maschinen sind möglich.

Die Turingmaschine ist letztlich eine mathematische Präzisierung des "Prozessors". Hier wird eine Art Modell-Maschine festgelegt, die die "Idee Computer" erfassen soll. Weitere Modell-Maschinen sind möglich.

Maschinenorientierter Ansatz: Präzisierung des ProzessorsBeispiel: Turingmaschine, Registermaschine

Anweisungsorientierter Ansatz: Präzisierung der zulässigen AnweisungenBeispiel: While

Zuordnungsorientierter Ansatz: Präzisierung der E/A-Zuordnungen

“Prozessor”Verarbeitungsanweisungen

Eingaben

Ausgaben

Page 67: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

67 Registermaschine

Das Registermaschinenmodell orientiert sich stärker am Aufbau realer Computer.Das Registermaschinenmodell orientiert sich stärker am Aufbau realer Computer.

DatenProgramm

> x INC i Erhöhe Register i um 1. Gehe zu Zeile x+1.

> x DEC i Erniedrige Register i um 1. Gehe zu Zeile x+1.

> x JMP i Gehe zu Zeile i.

> x TST iWenn Register i ungleich 0 ist, dann gehe zu Zeile x+1, sonst zu Zeile x+2.

> x HLT Beende die Bearbeitung.

Eine Registermaschine ist eine Verarbeitungseinheit, die beliebig viele Register zur Speicherung von Daten hat und durch maschinennahe Programme gesteuert wird.

Page 68: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

68 Registermaschinen-berechenbar

Eine k-stellige Funktion f: N,...,N -> N heißt Registermaschinen-berechenbar genau dann, wenn gilt: Es gibt eine Registermaschine mit der folgenden Eigenschaft:

Ausgangszustand: In den Registern R1, ..., Rk befinden sich die zu verarbeitenden natürlichen Zahlen.

Fall 1: f(n1, ..., nk) ist definiert.

Zielzustand: Die Registermaschine hält und in R0 befindet sich der Funktionswert f(n1, ..., nk).

Fall 2: f(n1, ..., nk) ist nicht definiert.

Zielzustand: Die Registermaschine hält nicht.

Page 69: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

69 Aufgaben

Zeige, dass die folgenden Funktionen Registermaschinen-berechenbar sind. Suche dir ein Berechnungsproblem aus und entwickle ein geeignetes Registermaschinenprogramm.

(a) Subtraktionsproblem: Berechnet werden soll die Subtraktionsfunktion f: N, N -> N mit f(n1, n2) = n1 - n2, sofern n1 größer oder gleich n2 ist, bzw. f(n1, n2) ist nicht definiert, sofern n1 kleiner als n2 ist.

(b) Verdopplungsproblem: Berechnet werden soll die Verdopplungsfunktion f: N -> N mit f(n) = 2*n.

(c) Multiplikationsproblem: Berechnet werden soll die Multiplikationsfunktion f: N, N -> N mit f(n1, n2) = n1 * n2.

(d) Divisionsproblem: Berechnet werden soll die Divisionsfunktion f: N, N -> N mit f(n1, n2) = n1 // n2, sofern n2 ungleich 0 ist, bzw. f(n1, n2) ist nicht definiert, sofern n2 gleich 0 ist.

Page 70: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

70 Aufgaben

Zum Testen kannst du das Bonsai-Simulationsprogramm benutzen. Beachte aber, dass die Nummerierungen hier mit 1 anfangen.

Page 71: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

71 While-Programme

Bestandteile von While-Programmen:Bestandteile von While-Programmen:

Variablen: x0, x1, x2, ...

Konstanten: 0, 1, 2 ...

Symbole: =, :, !=

Operatoren: + -

Schlüsselwörter: while, #while

Aufbau von While-Programmen:Aufbau von While-Programmen:

x0 = x1while x2 != 0: x0 = x0 + 1 x2 = x2 - 1#while

Zuweisungen: Jede Zuweisung mit dem folgenden Aufbau ist ein While-Programm:

variable = konstantevariable = variablevariable = variable + konstantevariable = variable - konstante

Sequenzen: Falls P1 und P2 While-Programme sind, dann ist auch die folgende Sequenz ein WHILE-Programm.

P1 P2

Wiederholungen: Falls P ein While-Programm ist und x eine Variable ist, dann ist auch

while x != 0: P #while

ein While-Programm.

Die Programmiersprache While ist eine sehr einfache Programmiersprache, die nur mit den oben genannten Programmierelementen auskommt.

Page 72: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

72 While-berechenbar

Eine (k-stellige) Funktion f: N, ..., N -> N heißt While-berechenbar genau dann, wenn gilt: Es gibt ein While-Programm mit der folgenden Eigenschaft:

Ausgangszustand: Die Variablen x1, ..., xk verwalten die zu verarbeitenden natürlichen Zahlen n1, ..., nk.

{x0 -> 0; x1 -> 7; x2 -> 3; ...}

Fall 1: f(n1, ..., nk) ist definiert.

Zielzustand: Die Variable x0 verwaltet den Funktionswert f(n1, ..., nk).

{x0 -> 10; x1 -> ...; x2 -> ...; ...}

Fall 2: f(n1, ..., nk) ist nicht definiert.

Zielzustand: Die Ausführung des While-Programms hält nicht.

Page 73: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

73 Aufgaben

Was leistet das gezeigte While-Programm? Stelle eine Vermutung auf. Überprüfen kannst du sie mit einem geeigneten Python-Programm.

x0 = x1while x2 != 0: x0 = x0 + 1 x2 = x2 - 1#while

# Initialisierung der Variablenx0 = 0x1 = 3x2 = 7

# Registermaschinenprogrammx0 = x1while x2 != 0: x0 = x0 + 1 x2 = x2 - 1#while

# Ausgabe der Variablenprint('x0: ', x0)print('x1: ', x1)print('x2: ', x2)

Page 74: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

74 Aufgaben

Zeige, dass die folgenden Funktionen While-berechenbar sind. Suche dir ein Berechnungsproblem aus und entwickle ein geeignetes While-Programm.

(a) Subtraktionsproblem: Berechnet werden soll die Subtraktionsfunktion f: N, N -> N mit f(n1, n2) = n1 - n2, sofern n1 größer oder gleich n2 ist, bzw. f(n1, n2) ist nicht definiert, sofern n1 kleiner als n2 ist.

(b) Verdopplungsproblem: Berechnet werden soll die Verdopplungsfunktion f: N -> N mit f(n) = 2*n.

(c) Multiplikationsproblem: Berechnet werden soll die Multiplikationsfunktion f: N, N -> N mit f(n1, n2) = n1 * n2.

(d) Divisionsproblem: Berechnet werden soll die Divisionsfunktion f: N, N -> N mit f(n1, n2) = n1 // n2, sofern n2 ungleich 0 ist, bzw. f(n1, n2) ist nicht definiert, sofern n2 gleich 0 ist.

Page 75: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

75 Äquivalenzsatz

Satz (über die Äquivalenz von Berechnungsmodellen)

Eine (k-stellige) Funktion f ist Turingmaschinen-berechenbar genau dann, wenn sie Registermaschinen-berechenbar ist bzw. genau dann, wenn sie While-berechenbar ist.

x0 = x1while x2 != 0: x0 = x0 + 1 x2 = x2 - 1#while

0 TST 11 JMP 32 JMP 63 DEC 14 INC 05 JMP 06 TST 27 JMP 98 JMP 119 DEC 210 INC 011 HLT

Page 76: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

76 Church-Turing-These

Church-Turing-These

Eine Funktion ist im intuitiven Sinn berechenbar genau dann, wenn sie Turingmaschinen-berechenbar ist bzw. genau dann, wenn sie Registermaschinen-berechenbar ist bzw. genau dann, wenn sie While-berechenbar ist bzw. genau dann, ...

Die Tatsache, dass alle Versuche, den Berechbarkeitsbegriff mathematisch zu präzisieren, zur gleichen Klasse berechenbarer Funktionen geführt hat, sehen viele als Bestätigung dafür, dass der intuitive Berechnebarkeitsbegriff durch die bisher entwickelten Berechnungsmodelle adäquat erfasst wird. Diese These wurde erstmals von Alonzo Church und Alan Turing - den Entwicklern der ersten Berechnungsmodelle - formuliert. Beachte, dass die Chuch-Turing-These keine mathematisch präzise Aussage ist, da hier der nicht präzisierte Begriff "im intuitiven Sinne berechenbar" vorkommt. Die Chuch-Turing-These drückt vielmehr die Erfahrung vieler Informatiker aus, die sich mit der Präzisierung des Algorithmusbegriffs beschäftigt haben. Was leistet das Berechnungsmodell "Turingmaschine" / "Python-programmierbar" / ...? es kann Problemlösungen (in geeignet beschriebener Form) selbstständig ausführen (z. B. sortieren) es kann Rechenoperationen ausführen (z. B. Addieren) es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Was leistet das Berechnungsmodell "Turingmaschine" / "Python-programmierbar" / ...? es kann Problemlösungen (in geeignet beschriebener Form) selbstständig ausführen (z. B. sortieren) es kann Rechenoperationen ausführen (z. B. Addieren) es ist universell programmierbar in dem Sinn, dass es beliebige Programme bei beliebigen Daten ausführen kann es ist so mächtig, dass es alle Algorithmen (in geeignet kodierter Form) ausführen kann

Page 77: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

77 Teil 5

Grenzen der Berechenbarkeit

Page 78: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

78 Vorbemerkungen

Um Aussagen über die Grenzen der Berchenbarkeit machen zu können, müssen wir ein präzise beschriebenes Berechnungsmodell verwenden. Nach dem Satz über die Äquivalenz von Berechnungsmodellen ist es dabei egal, welches Berechnungsmodell wir verwenden.

Hier soll im Folgenden die Turingmaschine als Berechnungsmodell benutzt werden. Dabei werden wir ausschließlich einfache Turingmaschinen betrachten. Wir setzen zudem voraus, dass auf dem Band außer dem speziellen Bandsymbol B für ein leeres Feld nur das Symbol I vorkommen soll - weiter unten wird auch noch das Symbol # hinzukommen. Schließlich setzen wir voraus, dass die betrachteten Turingmaschinen genau einen Endzustand stop haben.

Ziel ist es, einen Überblick über alle Turingmaschinen mit den eben formulierten Einschränkungen zu gewinnen. Wenn dieser Überblick vorliegt, können wir eventuell Aussagen über die mit diesen Turingmaschinen berechenbaren Funktionen treffen.

Page 79: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

79 Aufzählung von Turingmschinen

Wir betrachten zunächst nur Turingmaschinen mit nur einem Zustand (außer dem Endzustand stop). Wie dieser Zustand benannt wird, spielt dabei keine Rolle. Wir gehen von der Bezeichnung z0 aus. Dieser Zustand ist dann auch der Startzustand.

z0 B z0 B L; z0 I z0 B L;

z0 B z0 B L; z0 I z0 B R;

z0 B z0 B L; z0 I z0 I L;

z0 B z0 B L; z0 I z0 I R;

z0 B z0 B L; z0 I zS B L;

z0 B z0 B L; z0 I zS B R;

z0 B z0 B L; z0 I zS I L;

z0 B z0 B L; z0 I zS I R;

z0 B z0 B R; z0 I z0 B L;

...

z0 B zS I R; z0 I zS I R;

z0 B z0 B L; z0 I z0 B L;

Kurzschreibweise für Turingmaschinen:

Aufgabe:

(a) Kannst du die begonnene Aufzählung fortsetzen? Zur Kontrolle: Es gibt 64 verschiedene Möglichkeiten.

(b) Begründe, dass es 64 verschiedene Turingmaschinen (mit den gemachten Einschränkungen) mit genau einem Zustand (außer dem Endzustand) gibt.

Page 80: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

80 Aufzählung von Turingmschinen

Wir betrachten jetzt Turingmaschinen mit genau 2 Zuständen (außer dem Endzustand stop). Die Zustände sollen mit z0 und z1 bezeichnet werden. Der Zustand z0 soll auch hier der Startzustand sein.

z0 B z0 B L; z0 I z0 I L; z1 B z0 B L; z1 I z0 I L;

z0 B z0 B L; z0 I z0 I L; z1 B z0 B L; z1 I z0 I R;

...

z0 B zS I R; z0 I zS I R; z1 B zS I R; z1 I zS I R;

Aufgabe:

(a) Kannst du die begonnene Aufzählung um einige wenige Turingmaschinen fortsetzen?

(b) Wie viele Turingmaschinen gibt es hier?

Page 81: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

81 Aufzählung von Turingmschinen

T0: z0 B z0 B L; z0 I z0 B L;

T1: z0 B z0 B L; z0 I z0 B R;

...

T64: z0 B z0 B L; z0 I z0 I L; z1 B z0 B L; z1 I z0 I L;

T65: z0 B z0 B L; z0 I z0 I L; z1 B z0 B L; z1 I z0 I R;

...

T20800: z0 B z0 B L; z0 I z0 I L; z1 B z0 B L; z1 I z0 I L; z2 B z0 B L; z2 I z0 I L;

...

Satz (über die Aufzählbarkeit von Turingmaschinenvarianten)

Turingmaschinen mit einer fest vorgegebenen Symbolmenge (Eingabesymbole + Bandsymbole) kann man systematisch (algorithmisch) erzeugen.

T0, T1, T2, ...

Jede Turingmaschine kommt in dieser Auflistung vor. Man kann (mit einem geeigneten Algorithmus) zu jeder natürlichen Zahl n die zugehörige Turingmaschine Tn bestimmen. Umgekehrt kann man (mit einem geeigneten Algorithmus) zu jeder Turingmaschine T die Platznummer n in der Auflistung bestimmen.

Page 82: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

82 Problem

Ist jede Funktion f: N N (Turingmaschinen-) berechenbar? Wie kann man nachweisen, dass es Funktionen f: N N gibt, die nicht (Turingmaschinen-) berechenbar sind?

Menge der Funktionen von N nach N

Menge der berechenbaren

Funktionen von N nach N

?

?

n 2n

n s(n)

n prim(n)

Page 83: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

83 Abzählen unendlicher Mengen

Eine Menge M heißt abzählbar genau dann, wenn es eine Nummerierungsabbildung i von der Menge der natürlichen Zahlen in die Menge M gibt, bei der alle Elemente aus M als Bildelemente natürlicher Zahlen erfasst werden. Die Abbildung i ordnet in diesem Fall den Elementen von M ihre jeweiligen Nummern zu.

Eine Menge M heißt überabzählbar genau dann, wenn sie nicht abzählbar ist.

Beispiel: Die Menge der geraden Zahlen ist abzählbar. Die folgende Auflistung liefert implizit eine mögliche Nummerierung.

0, 2, 4, 6, ...

Beispiel: Die Menge der ganzen Zahlen ist abzählbar. Die folgende Auflistung liefert implizit eine mögliche Nummerierung.

0, 1, -1, 2, -2, 3, -3, ...

Page 84: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

84 Abzählen von Turingmaschinen

Satz (über die Abzählbarkeit von Turingmaschinen)

Die Menge aller Turingmaschinen über dem Eingabealphabet {I} und dem Bandlaphabet {I, B} ist abzählbar.

Beachte, dass im letzten Abschnitt sogar mehr gezeigt wurde. Es wurde dort gezeigt, dass die Zuordnung Turingmaschine - Nummer in beide Richtungen berechnet werden kann.

Satz (über die Abzählbarkeit von Turingmaschinen-berechenbaren Funktionen)

Die Menge aller Turingmaschinen-berechenbaren Funktionen von N nach N ist abzählbar.

Page 85: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

85 Abzählen von partiellen Funktionen

Angenommen, die Menge aller (partiellen) Funktionen von N nach N ist abzählbar.

Dann gibt es eine nummerierte Auflistung, mit der alle diese Funktionen erfasst werden:

f0, f1, f2, f3, f4, ...

Jeder dieser Funktionen ordnet allen natürlichen Zahlen eine natürliche Zahl oder den Wert u (für undefiniert) zu. Eine Zuordnungstabelle für alle Funktionen der Auflistung könnte z.B. so aussehen:

Satz (über die Überabzählbarkeit der Menge aller Funktionen)

Die Menge aller (partiellen) Funktionen von N nach N ist überabzählbar.

Page 86: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

86 Abzählen von partiellen Funktionen

Wir konstruieren jetzt eine weitere Funktion f von N nach N nach dem folgenden Schema:

Wir benutzen also die Funktionswerte in der Diagonalen der Ausgangstabelle und ändern sie alle systematisch ab.

Die Funktion f ist so definiert, dass sie sich an mindestens einer Stelle von jeder Funktion der Auflistung f0, f1, f2, f3, f4, ... unterscheidet.

Page 87: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

87 Abzählen von partiellen Funktionen

Angenommen, die Menge aller (partiellen) Funktionen von N nach N ist abzählbar.

Dann gibt es eine nummerierte Auflistung, mit der alle diese Funktionen erfasst werden:

f0, f1, f2, f3, f4, ...

...

Wir konstruieren jetzt eine weitere Funktion f von N nach N nach dem folgenden Schema: ...

Die Funktion f ist so definiert, dass sie sich an mindestens einer Stelle von jeder Funktion der Auflistung f0, f1, f2, f3, f4, ... unterscheidet.

Argumentation:

Damit sind wir aber an einem Punkt angelangt, an dem wir uns in Widersprüche verwickeln. Wir sind von der Annahme ausgegangen, dass die Menge aller (partiellen) Funktionen von N nach N abzählbar ist. Aus einer möglichen Abzählung (in Form einer nummerierten Auflistung) haben wir eine Funktion f von N nach N konstruiert. Diese Funktion f muss Element der Menge M sein (da sie ja eine Funktion von N nach N ist) und gleichzeitig unterscheidet sie sich von allen Elementen von M (an mindestens einer Stelle). So etwas ist unmöglich. Die einzige Möglichkeit, aus diesem Dilemma herauszukommen, ist die Folgerung, dass wir von einer falschen Annahme ausgegangen sind.

Satz (über die Überabzählbarkeit der Menge aller Funktionen)

Die Menge aller (partiellen) Funktionen von N nach N ist überabzählbar.

Page 88: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

88

Existenz nicht-berechenbarer Funktion.

Satz (über die Überabzählbarkeit der Menge aller Funktionen)

Die Menge aller (partiellen) Funktionen von N nach N ist überabzählbar.

Satz (über die Existenz nicht-berechenbarer Funktionen)

Es gibt (partielle) Funktionen von N nach N, die nicht Turingmaschinen-berechenbar sind.

Satz (über die Abzählbarkeit von Turingmaschinen-berechenbaren Funktionen)

Die Menge aller Turingmaschinen-berechenbaren Funktionen von N nach N ist abzählbar.

Menge der Funktionen von N nach N

Menge der berechenbaren

Funktionen von N nach N

?

?

n 2n

n s(n)

n prim(n)

es gibt nicht-berechenbare Funktionen

Analog kann man zeigen, dass es partielle Funktionen f: N, N -> N gibt, die nicht Turingmaschinen-berechenbar sind.

Page 89: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

89 Die Haltefunktion

T0: z0 B z0 B L; z0 I z0 B L;

T1: z0 B z0 B L; z0 I z0 B R;

T2: z0 B z0 B L; z0 I z0 I L;

T3: z0 B z0 B L; z0 I z0 I R;

T4: z0 B z0 B L; z0 I zS B L;

T5: z0 B z0 B L; z0 I zS B R;

...

Turingmaschinen: Zahlen:

w0:

w1: I

w2: II

w3: III

w4: IIII

w5: IIIII

...Im Folgenden wollen wir die Turingmschine Ti mit der zugehörigen Nummer i codieren. Die zu verarbeiten Daten sind (evtl. auch leere) Folgen des Symbols "I". Diese Folgen können als Codierungen natürlicher Zahlen aufgefasst werden.

Mit der Funktion h soll jetzt das Halterverhalten von Turingmaschinen bei der Verarbeitung natürlicher Zahlen beschrieben werden.

Page 90: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

90 Die Haltefunktion

T0: z0 B z0 B L; z0 I z0 B L;

T1: z0 B z0 B L; z0 I z0 B R;

T2: z0 B z0 B L; z0 I z0 I L;

T3: z0 B z0 B L; z0 I z0 I R;

T4: z0 B z0 B L; z0 I zS B L;

T5: z0 B z0 B L; z0 I zS B R;

...

Turingmaschinen:

Zahlen:

w0:

w1: I

w2: II

w3: III

w4: IIII

w5: IIIII

Aufgabe: In der Wertetabelle sind bereits einige Funktionswerte von h eingetragen. Dabei werden die beschriebenen Codierungen zu Grunde gelegt. Ergänze die fehlenden Funktionswerte.

Page 91: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

91 Berechnung der Haltefunktion

Annahme: Es gibt eine Turingmaschine Th, die die Funktion h berechnet.

Die Abbildung verdeutlicht das Verhalten von Th, wenn die übergebene Turingmschine bei dem übergebenen Wort hält.

Wenn die übergebene Turingmschine bei dem übergebenen Wort nicht hält, dann erzeugt Th ein leeres Band und geht in den Stop-Zustand über.

Page 92: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

92 Berechnung der Haltefunktion

Wir benutzen jetzt ein Diagonalisierungsverfahren, um aus Th eine neue Turingmaschine T zu konstruieren.

Die folgende Tabelle zeigt, wie das Halteverhalten aller möglichen Turingmaschinen bei bestimmten zu verarbeitenden Wörtern aussehen könnte.

Wenn der Eintrag in der Tabelle zu einer bestimmten Turingmaschine und einem bestimmten Datum ein "ja" ist, dann soll die betreffende Turingmaschine bei der Verarbeitung des betreffenden Datums halten, bei "nein" entsprechend nicht.

Ziel ist es, eine Turingmaschine T zu entwickeln, die das Halteverhalten der aufgelisteten Turingmaschinen in gewisser Weise umkehrt. T soll also genau dann bei der Verarbeitung des Wortes wi halten, wenn die Turingmaschine Ti bei der Verarbeitung des Wortes wi nicht hält.

Page 93: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

93 Berechnung der Haltefunktion

T gewinnen wir mit Hilfe von Th, indem wir zunächst das zu verarbeitende Wort duplizieren, anschließend die dargestellte Zahl (i, i) von Th verarbeiten lassen und abschließend den Übergang zum Stop-Zustand etwas abändern. Vorab wird geprüft, ob das gelesene Zeichen ein "I" ist. Wenn das der Fall ist, dann soll endlos ein "I" auf das Band geschrieben werden und eine Bewegung nach rechts erfolgen. Ist das gelesene Zeichen dagegen ein "B(lank)", dann soll ein Übergang in den Stop-Zustand erfolgen.

Page 94: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

94

Nicht-Berechenbarkeit der Haltefunktion

T entpuppt sich als höchst merkwürdige Turingmaschine: Einerseits muss T in der Auflistung aller Turingmaschinen vorkommen, also mit irgendeiner Turingmaschinen Ti der Auflistung übereinstimmen. Andererseits verhält sich T anders als jede der in der Auflistung vorkommenden Turingmaschinen. Es ergeben sich also zwei widersprüchliche Aussagen.

Die Annahme, dass es eine Turingmaschine Th gibt, die die Funktion h berechnet, führt also zu einem Widerspruch. Die Annahme muss folglich falsch sein.

Satz (über die Unlösbarkeit des Halteproblems bei Turingmaschinen)

Es gibt keine Turingmaschine, die die Haltefunktion h berechnet. Es gibt folglich keine Turingmaschine, mit der man das Halteverhalten beliebiger Turingmaschinen bei beliebigen zu verarbeitenden Daten entscheiden kann.

Page 95: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

95 Die Rado´sche Funktionen

Menge der Funktionen von N nach N

Menge der berechenbaren

Funktionen von N nach N

?

f0, f1, f2, f3, ...

Ziel ist es, eine weitere nicht-berechenbare Funktion konkret zu beschreiben.

Rado´sche -Funktion

Page 96: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

96 Biber-Turingmaschinen

Eine Biber-Turingmaschine ist eine (einfache) Turingmaschine, die in jedem Arbeitsschritt genau eine "Baumaktion" durchführt (Baumstamm hinlegen oder wegnehmen) und einen Schritt nach rechts oder links geht. Eine Biber-TM startet in einer leeren Welt, erzeugt „Baumstämme“ und hält nach endlich vielen Arbeitsschritten.

Vorher:

Nachher:

Biber-TM:

z0 B z1 I R;

z0 I zS I R;

z1 B z0 I L;

z1 I z0 I L;

Page 97: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

97 Aufgabe

Aufgabe 1: Biber-Turingmaschinen-Wettberwerb

Die gezeigte Biber-Turingmaschine mit 2 Zuständen (außer dem Stop-Zustand zS) sammelt genau 2 Baumstämme, bevor sie hält.

Gesucht ist eine Biber-Turingmaschine mit genau 2 Zuständen (außer dem Stop-Zustand), die möglichst viele Baumstämme sammelt, bevor sie hält. Eine solche Turingmschine heißt „fleißiger Biber“ (mit 2 Zuständen) bzw. „busy beaver turing maxchine“.

z0 B z1 I R;

z0 I zS I R;

z1 B z0 I L;

z1 I z0 I L;

Page 98: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

98 Aufgabe

Aufgabe 2: Biber-Turingmaschinen-Wettberwerb

Wer schafft die meisten Baumstämme? Gesucht ist eine Biber-Turingmaschine mit genau 3 bzw. 4 Zuständen (außer dem Stop-Zustand), die möglichst viele Baumstämme sammelt, bevor sie hält.

Page 99: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

99 Fleißige Biber

alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand

Z0 I I L Z1Z0 ' ' I R Z1

Z1 I I S Z0Z1 ' ' I L Z0

alter gelesenes geschrieb. Kopf- neuer Zustand Zeichen Zeichen bewegung Zustand

Z0 I I L Z2Z0 ' ' I R Z1

Z1 I I S Z1Z1 ' ' I L Z0

Z2 I I S Z2Z2 ' ' I L Z1

Fleißiger Biber mit 2 Zuständen: Fleißiger Biber mit 2 Zuständen:

Fleißiger Biber mit 3 Zuständen: Fleißiger Biber mit 3 Zuständen:

Page 100: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

100 Rado´sche Funktion

Im Jahr 1962 hat der ungarische Mathematiker Tibor Rado ein bemerkenswerte Funktion definiert. Die Funktion Σ: N -> N ordnet jeder natürlichen Zahl n aus N nach der folgenden Berechnungsvorschrift eine natürliche Zahl zu:

Σ(n) beschreibt die maximale Anzahl von Baumstämmen, die eine Biber-Turingmaschine mit genau n Zuständen (außer dem Stop-Zustand) ausgehend von einem leeren Band sammeln kann.

n

0

1

2

3

4

5

6

(n)

0

1

4

6

13

...

...Aufgabe:

(a) Schätze erst einmal, wie groß die Funktionswerte Σ(5) und Σ(6) sind.

(b) Recherchiere anschließend, wie groß die Funktionswerte Σ(5) und Σ(6) sind. Wie gut waren deine Schätzungen?

Page 101: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

101

Nicht-Berechenbarkeit d. Rado-Funktion

Bemerkung:

Dass man die Funktionswerte der Σ-Funktion nicht so einfach berechnen kann, liegt nach dem oben angegebenen Satz an der Nicht-Berechenbarkeit der Funktion. Es gibt (nach der Chuch-Turing-These) kein algorithmisches Verfahren, mit dem man alle Funktionswerte der Σ-Funktion berechnen kann. Diese Tatsache schließt aber nicht aus, dass man einzelne Funktionswerte der Σ-Funktion bestimmen kann. Im Fall n = 2 kann man beispielsweise alle Turingmaschinen mit 2 Zuständen (außer dem Stop-Zustand) erzeugen und jede dieser endlichen vielen Turingmaschinen unsersuchen, ob sie hält und wie viele Baumstämme sie in diesem Fall erzeugt.

Satz (über die Nicht-Berechenbarkeit der Rado-Funktion)

Die Rado-Funktion Σ ist nicht Turingmaschinen-berechenbar.

Page 102: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

102 Satz von Rado

Beweis:

Der Beweis benutzt die folgenden (leicht zu zeigenden) Eigenschaften der -Funktion:

(n) n für alle n N,

(n) < (n+1) für alle n N (Monotonie von ).

Der Beweis wird durch Widerspruch geführt.

Annahme: Es gibt eine Turingmaschine T, mit der berechnet werden kann. Die Anzahl der Zustände von T bezeichnen wir mit k.

AZ: II

ZZ: I I II

z0T :

Satz (über die Nicht-Berechenbarkeit der Rado-Funktion)

Die Rado-Funktion Σ ist nicht Turingmaschinen-berechenbar.

Page 103: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

103 Satz von Rado

Man zeigt zunächst, dass es eine Turingmaschine Tn mit n+1 Zuständen (außer dem Stop-Zustand) gibt, der auf einem leeren Band eine Baumstammreihe mit genau n Baumstämmen erzeugt:

AZ:

ZZ: I I

z0T2:

Man zeigt anschließend, dass es eine Turingmaschine TV mit 6 Zuständen (außer dem Stop-Zustand) gibt, der eine gegebene, beliebig lange Baumstammreihe verdoppelt:

AZ:

ZZ: I I

z0TV:

II

I I

Page 104: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

104 Satz von Rado

Tn: erzeugt eine Baumstammreihe der Länge n

Wir verknüpfen die 3 Turingmaschinen jetzt wie folgt zu einer neuen Turingmaschine Tn,V, :

AZ:

ZZ: I I

z0

ZZ: I I

TV: erzeugt eine Baumstammreihe der Länge 2n

I I

ZZ: I I

T : erzeugt eine Baumstammreihe der Länge (2n)

I I II I I ...

Beachte: Tn,V, hat n+7+k Zustände und erzeugt eine Baumstammreihe der Länge (2n).

Page 105: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

105 Satz von Rado

Wir vergleichen jetzt diese zusammengesetzte Turingmaschine Tn,V, mit einem fleißigen Biber TFB(n+7+k) mit n+7+k Zuständen:

Tn,V, hat n+7+k Zustände und erzeugt (2n) Baumstämme.

TFB(n+7+k) hat n+7+k Zustände und erzeugt (n+7+k) Baumst

Da ein fleißiger Biber die maximal mögliche Anzahl von Baumstämmen erzeugt, gilt (für alle n N): (n+7+k) (2n).

Sei n = 2(7+k). Dann gilt:

n+7+k = 3(7+k)

2n = 4(7+k), also n+7+k < 2n.

Aus der Monotonie von folgt: (n+7+k) < (2n).

Es ergibt sich also ein Widerspruch. Da alle Schlüsse korrekt sind, muss die Annahme falsch sein.

Page 106: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

106 Teil 6

Ein Blick in die Geschichte

Page 107: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

107 David Hilbert

Page 108: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

108 Hilbert´s Rede

Wer von uns würde nicht gern den Schleier lüften, unter dem die Zukunft verborgen liegt, um einen Blick zu werfen auf die bevorstehenden Fortschritte unsrer Wissenschaft und in die Geheimnisse ihrer Entwickelung während der künftigen Jahrhunderte! Welche besonderen Ziele werden es sein, denen die führenden mathematischen Geister der kommenden Geschlechter nachstreben? welche neuen Methoden und neuen Thatsachen werden die neuen Jahrhunderte entdecken - auf dem weiten und reichen Felde mathematischen Denkens?

Die Geschichte lehrt die Stetigkeit der Entwickelung der Wissenschaft. Wir wissen, daß jedes Zeitalter eigene Probleme hat, die das kommende Zeitalter löst oder als unfruchtbar zur Seite schiebt und durch neue Probleme ersetzt. Wollen wir eine Vorstellung gewinnen von der muthmaßlichen Entwickelung mathematischen Wissens in der nächsten Zukunft, so müssen wir die offenen Fragen vor unserem Geiste passiren lassen und die Probleme überschauen, welche die gegenwärtige Wissenschaft stellt, und deren Lösung wir von der Zukunft erwarten. Zu einer solchen Musterung der Probleme scheint mir der heutige Tag, der an der Jahrhundertwende liegt, wohl geeignet; denn die großen Zeitabschnitte fordern uns nicht blos auf zu Rückblicken in die Vergangenheit, sondern sie lenken unsere Gedanken auch auf das unbekannte Bevorstehende.

[...]

Page 109: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

109 Hilbert´s Rede

2. Die Widerspruchslosigkeit der arithmetischen Axiome

Wenn es sich darum handelt, die Grundlagen einer Wissenschaft zu untersuchen, so hat man ein System von Axiomen aufzustellen, welche eine genaue und vollständige Beschreibung derjenigen Beziehungen enthalten, die zwischen den elementaren Begriffen jener Wissenschaft stattfinden. Die aufgestellten Axiome sind zugleich die Definitionen jener elementaren Begriffe und jede Aussage innerhalb des Bereiches der Wissenschaft, deren Grundlagen wir prüfen, gilt uns nur dann als richtig, falls sie sich mittelst einer endlichen Anzahl logischer Schlüsse aus den aufgestellten Axiomen ableiten läßt. Bei näherer Betrachtung entsteht die Frage, ob etwa gewisse Aussagen einzelner Axiome sich untereinander bedingen und ob nicht somit die Axiome noch gemeinsame Bestandteile enthalten, die man beseitigen muß, wenn man zu einem System von Axiomen gelangen will, die völlig von einander unabhängig sind.Vor Allem aber möchte ich unter den zahlreichen Fragen, welche hinsichtlich der Axiome gestellt werden können, dies als das wichtigste Problem bezeichnen, zu beweisen, daß dieselben untereinander widerspruchslos sind, d.h. daß man auf Grund derselben mittelst einer endlichen Anzahl von logischen Schlüssen niemals zu Resultaten gelangen kann, die miteinander in Widerspruch stehen.

[...]Ein besonderes Anliegen war ihm, der Mathematik ein solides Fundament zu verleihen.

Page 110: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

110 Hilbert´sches Programm

Hilbert´sches Programm: Formalisierung der Mathematik

Widerspruchsfreiheit:Die Formalisierung soll widerspruchsfrei sein (d. h.: keine zwei sich ausschließenden Aussagen können hergeleitet werden).

Vollständigkeit:Jede wahre mathematische Aussage kann hergeleitet werden.

Entscheidbarkeit:Es gibt ein Verfahren, mit dem man für jede beliebige Aussage in endlich vielen Schritten entscheiden kann, ob sie wahr oder falsch ist.

Das Hilbert´sche Entscheidungsproblem verlangt den Nachweis, dass es einen Algorithmus gibt, mit dessen Hilfe man die Wahrheit mathematischer Aussagen "berechnen" kann.

Page 111: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

111 Ergebnisse von Gödel

Gödelsche Unvollständigkeitssätze

(Widerspruchsfreiheit) (a) Wenn ein formales System widerspruchsfrei ist, dann kann man innerhalb des Systems nicht herleiten, dass es widerspruchsfrei ist.

(Vollständigkeit) (b) In jedem formalen System, das widerspruchsfrei ist, existieren Aussagen, die wahr sind, aber innerhalb des Systems nicht hergeleitet werden können. Das bedeutet, es bleiben immer wahre Aussagen übrig, die nicht logisch herleitbar sind.

Hilbert´sches Programm:

Widerspruchsfreiheit:Die Formalisierung soll widerspruchsfrei sein (d. h.: keine zwei sich ausschließenden Aussagen können hergeleitet werden).

Vollständigkeit:Jede wahre mathematische Aussage kann hergeleitet werden.

Entscheidbarkeit:Es gibt kein Verfahren, mit dem man für jede beliebige Aussage in endlich vielen Schritten entscheiden kann, ob sie wahr oder falsch ist.

Gödel gelang es mit seinen Resultaten, auf eine grundlegende Schwäche der beweisenden Methode hinzuweisen. Mathematiker sind nicht in der Lage, fundamentale Eigenschaften der Mathematik nachzuweisen.

Page 112: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

112 Ergebnisse von Turing und Church

Hilbert´sches Programm:

Widerspruchsfreiheit:Die Formalisierung soll widerspruchsfrei sein (d. h.: keine zwei sich ausschließenden Aussagen können hergeleitet werden).

Vollständigkeit:Jede wahre mathematische Aussage kann hergeleitet werden.

Entscheidbarkeit:Es gibt kein Verfahren, mit dem man für jede beliebige Aussage in endlich vielen Schritten entscheiden kann, ob sie wahr oder falsch ist.

Satz von Turing und Church

Es gibt kein algorithmisches Verfahren, mit dem man für jede beliebige mathematische Aussage in endlich vielen Schritten entscheiden kann, ob sie (aus den Grundannahmen) logisch herleitbar ist oder nicht.

Zur Klärung der Frage, ob es ein Verfahren gibt, mit dem man für jede beliebige Aussage in endlich vielen Schritten entscheiden kann, ob sie wahr oder falsch ist, sahen sich Turing und Church veranlasst, erst einmal zu präzisieren, was ein "Verfahren" ist. Turing entwickelte die nach ihm benannte Turingmaschine, Chuch ein alternatives Berechnungsmodell.

Page 113: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

113 Ein Blick über den Zaun Informatik:

Methode: Ein Problem mit Hilfe eines Algorithmus lösen. Grenze der Methode: Das Entscheidungsproblem (... Halteproblem ...) ist

algorithmisch nicht lösbar. (Turing) Mathematik:

Methode: Einen Satz beweisen. Grenze der Methode: In jedem formalen System, das widerspruchsfrei ist,

existieren Aussagen, die wahr sind, aber innerhalb des Systems nicht hergeleitet werden können. Das bedeutet, es bleiben immer wahre Aussagen übrig, die nicht beweisbar sind. (Gödel)

Physik: Methode: Eigenschaften eines Systems messen. Grenze der Methode: Man kann Ort und Impuls eines Teilchens nicht

gleichzeitig exakt bestimmen. (Heisenberg)

Page 114: Berechenbarkeit Klaus Becker 2011. 2 Algorithmen Zielsetzung: Grenzen der Berechenbarkeit kennen Methoden zum Nachweis der Grenzen verstehen Die mathematische

114 Literaturhinweise

U. Schöning: Theoretische Informatik – kurzgefasst. Spektrum Akademischer Verlag 2001.

Gasper, Leiß, Spengler, Stimm: Technische und theoretische Informatik. Bayerischer Schulbuch-Verlag 1992.

Reichert, Nievergelt, Hartmann: Programmieren mit Kara. Springer-Verlag 2004.

D. Harel: Das Affenpuzzle und weitere bad news aus der Computerwelt. Springer-Verlag 2002.

J. Casti: Das Cambridge Quintett. Berlin Verlag 1998.

D. R. Hofstadter: Gödel, Escher, Bach. Klett-Cotta 1985.