Gliederung 0. Einleitung und Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 3.1. Algorithmische Probleme und Berechnungsmodelle 3.2. Das Berechnungsmodell Turing-Maschine 3.3. Churchsche These 3.4. Algorithmisch unlösbare Probleme 3/2, Folie 1 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Zielstellung Gegenstand der Betrachtung Wir sehen uns ein einfaches, aber überraschend leistungsfähiges Berechnungsmodell an. Dieses Modell wurde von Alan Turing entwickelt und war das erste Berechnungsmodell überhaupt. Die Programme in diesem Berechnungsmodell nennt man Turing-Maschinen. Turing-Maschinen werden benutzt, um Funktionen zu berechnen. Turing-Maschinen kann man zu mehr benutzen, als nur Entscheidungsprobleme zu lösen. Turing A., On computable numbers with an application to the Entscheidungsproblem, Proc. London Math. Soc., Vol. 42 (1936), 230-265. 3/2, Folie 2 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechenbarkeitsmodell - Turing-Maschine Historisches ( aus einem Gutachten zum Artikel von A. Turing ) This is a bizarre paper. It begins by defining a computing device absolutely unlike anything I have seen, then proceeds to show I haven t quite followed the needlessly complicated formalism that there are numbers that it can t compute. As I see it, there are two alternatives that apply to any machine that will ever be built: Either these numbers are too big to be represented in the machine, in which case the conclusion is obvious, or they are not; in that case, a machine that can t compute them is simply broken! 3/2, Folie 3 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechnungsmodelle Berechnungsmodelle Zur Präzisierung einer Sprache zur Beschreibung von Algorithmen sind u.a. zu klären: Welche elementare Operationen stehen zur Verfügung? Wie viel Speicher steht zur Verfügung, und wie geht man damit um? Wie verläuft die Eingabe? Wie verläuft die Ausgabe? Festlegung der Semantik Welche möglichen Ausgaben berechnet ein Programm in dem gewählten Berechnungsmodell aus den Eingaben? bzw. hier genauer (ohne alternative Ausgaben) Welche totale oder partielle Funktion f berechnet ein Algorithmus ( in dem vorliegenden Berechenbarkeitsmodell ) eigentlich? 3/2, Folie 4 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Turing-Maschinen Lese-/Schreibkopf... B B 1 0 B B B B... Eingabe-/Ausgabeband Programm Im Unterschied zu einem endlichen Automaten hat eine Turing-Maschine eine Eingabe-/Ausgabeband (auch Speicherband, Arbeitsband), das aus Zellen besteht Eine Turing-Maschine kann den Inhalt der Zellen des Arbeitsbands lesen, in die Zellen schreiben, alle Zellen mehrfach benutzen, denn sie kann auch den Lese-/Schreibkopf nach links und rechts bewegen. 3/2, Folie 5 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
informelle Beschreibung Arbeitsband linearer Speicher; besteht aus Zellen; in jede Zelle passt ein Zeichen; auf dem Arbeitsband steht die zu verarbeitende Eingabe und nach der Berechnung die Ausgabe; vor und hinter der Eingabe stehen in den Zellen nur spezielle Leerzeichen (hier B ) Lese-/Schreibkopf steht zu Beginn auf dem ersten Zeichen der Eingabe außer sie ist leer, dann auch auf einem B. liest das Zeichen in der aktuell besuchten Zelle schreibt ein Zeichen in die aktuell besuchte Zelle bewegt sich nach dem Schreiben um eine Zelle nach links oder rechts oder gar nicht steht nach der Berechnung auf dem ersten Zeichen der Ausgabe 3/2, Folie 6 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
informelle Beschreibung (cont.) Programm befindet sich in unterschiedlichen Zuständen hat zwei ausgezeichnete Zustände einen Anfangszustand q 0 einen Endzustand q e Sobald der Endzustand erreicht wird, wird gestoppt. Aktueller Zustand und aktuell gelesenes Zeichen bestimmen, in welchen Zustand das Programm danach übergeht, welches Zeichen in die aktuell besuchte Zelle geschrieben wird* und welche Zelle der Lese-/Schreibkopf als nächstes besucht. *) Zeichen stehen lassen wird erreicht durch dasselbe Zeichen hineinschreiben wie auf dem Stapel des Kellerautomaten. 3/2, Folie 7 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Programmschritte nochmal etwas formaler und ganz ausführlich δ(q 0,1) = Aktueller Zustand und aktuell gelesenes Zeichen bestimmen, in welchen Zustand das Programm danach übergeht, (q 1,1,L) welches Zeichen in die aktuell besuchte Zelle geschrieben wird* und welche Zelle der Lese-/Schreibkopf als nächstes besucht. 3/2, Folie 8 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
informelle Beschreibung (cont.) direkte Ausgabe Die Zeichenkette, die sich auf dem Arbeitsband befindet, nachdem der Endzustand q e erreicht wird, wird als Ausgabe interpretiert. Genauer gesagt: Die längste ununterbrochene Σ-Zeichenkette, die in der aktuellen Zelle beginnt, zählt als Ergebnis. Steht dort kein Σ-Zeichen, ist das Ergebniswort ε. Mit Mehraufwand kann man dafür sorgen, dass außer dem Ergebniswort nur noch B s davor und dahinter stehen. Das ist bei Unterprogrammen hilfreich, deren Ergebnis man weiter verwenden möchte. 3/2, Folie 9 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Beispiel 0 Alphabet Σ = {0,1} Zustandsmenge Z = { z 0,z e } Anfangszustand z 0 Endzustand z e Zustandsüberführungsfunktion δ (Beschreibung der Aktionen) δ(z 0,0) = (z 0,B,R) δ(z 0,1) = (z 0,B,R) δ(z 0,B) = (z e,1,n) Was berechnet M? 3/2, Folie 10 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Illustration der Arbeitsweise von M... B B 1 0 B B B B...... B B B 0 B B B B... Steuereinheit in z 0 δ(z 0,0) = (z 0,B,R) δ(z 0,1) = (z 0,B,R) δ(z 0,B) = (z e,1,n) Steuereinheit in z 0... B B B B 1 B B B...... B B B B B B B B... Steuereinheit in z e Was berechnet M? Immer das Ergebnis 1! Steuereinheit in z 0 3/2, Folie 11 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Beispiel 1 Wir wollen eine Turing-Maschine M angeben, die die Funktion berechnet, die jeder natürlichen Zahl x (incl. 0) die Zahl x + 1 zuordnet. Um uns zunächst das Leben einfacher zu machen, werden natürliche Zahlen hier unär kodiert, d.h. die Zahl n wird durch eine Folge von n Einsen kodiert. das Programm der Turing-Maschine M: δ(q 0,B) = (q e,1,n) δ(q 1,B) = (q e,1,n) δ(q 0,1) = (q 1,1,L) 3/2, Folie 12 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Kapitel 3: Berechnungstheorie Beispiel 2 Wir wollen nochmals eine Turing-Maschine M angeben, die die Funktion berechnet, die jeder natürlichen Zahl x (incl. 0) die Zahl x + 1 zuordnet. Jetzt werden natürliche Zahlen aber binär kodiert, wobei es keine führenden Nullen geben soll, d.h. als 0, 1, 10, 11, 100 usw. Programm der Turing-Maschine M: Was geschieht da? δ(q 0,0) = (q e,1,n) δ(q 0,1) = (q 1,1,R) δ(q 1,B) = (q 2,B,L) δ(q 1,0) = (q 1,0,R) δ(q 1,1) = (q 1,1,R) δ(q 2,B) = (q e,1,n) δ(q 2,0) = (q 3,1,L) δ(q 2,1) = (q 2,0,L) δ(q 3,B) = (q e,b,r) δ(q 3,0) = (q 3,0,L) δ(q 3,1) = (q 3,1,L) 3/2, Folie 13 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Kapitel 3: Berechnungstheorie Beispiel 2 Wir wollen nochmals eine Turing-Maschine M angeben, die die Funktion berechnet, die jeder natürlichen Zahl x (incl. 0) die Zahl x + 1 zuordnet. Jetzt werden natürliche Zahlen aber binär kodiert, wobei es keine führenden Nullen geben soll, d.h. als 0, 1, 10, 11, 100 usw. Programm der Turing-Maschine M: δ(q 0,0) = (q e,1,n) δ(q 0,1) = (q 1,1,R) δ(q 1,B) = (q 2,B,L) δ(q 1,0) = (q 1,0,R) δ(q 1,1) = (q 1,1,R) δ(q 2,B) = (q e,1,n) δ(q 2,0) = (q 3,1,L) δ(q 2,1) = (q 2,0,L) δ(q 3,B) = (q e,b,r) δ(q 3,0) = (q 3,0,L) δ(q 3,1) = (q 3,1,L) Was geschieht da? 0 1, sonst: +1, ggf. Übertrag erledigt gehe zu / bleibe auf erstem Zeichen 3/2, Folie 14 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
formale Beschreibung Verwendung Bestandteile einer Turing-Maschine M = [Z,Σ,Γ,q 0,q e,δ] endliche Menge Z von Zuständen Startzustand q 0 Z Endzustand q e Z, endliches Ein-/Ausgabealphabet Σ, endliches Bandalphabet Γ mit B Γ \ Σ und Σ Γ, Überführungsfunktion δ: Z Γ Z Γ { R,N,L } mit Z = Z \ { q e }. Eingaben und Ausgaben stehen auf dem Arbeitsband. Programm "=" Überführungsfunktion δ Wenn sich M im Endzustand befindet, werden bestimmte Zeichen auf dem Arbeitsband als Ausgabe interpretiert. 3/2, Folie 15 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
komplizierteres Beispiel 3 Sei Σ = { 0,1 }. Wir wollen eine Turing-Maschine M angeben, die bei Eingabe einer Zeichenkette der Form 0 2i mit i N 0 eine Eins ausgibt (sonst eine Null). zugrunde liegende Idee: 1) M überprüft, ob auf dem Eingabeband genau eine Null vorkommt ( falls ja, geht M zu (4) ). 2) M überprüft, ob sich auf dem Eingabeband gerade viele Nullen befinden ( falls nein, geht M zu (5) ). 3) M streicht jede zweite Null auf dem Eingabeband und geht zu (1). 4) M schreibt die Ausgabe 1 aufs Arbeitsband. 5) M schreibt die Ausgabe 0 aufs Arbeitsband. 3/2, Folie 16 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
komplizierteres Beispiel 3 (cont.) δ(q 0,B) = (q n,b,r) δ(q 0,0) = (q 1,0,R) δ(q 0,/) = (q 0,/,R) δ(q 1,B) = (q p,b,r) δ(q 1,0) = (q 2,0,R) δ(q 1,/) = (q 1,/,R) δ(q 2,B) = (q 4,B,L) δ(q 2,0) = (q 3,0,R) δ(q 2,/) = (q 2,/,R) δ(q 3,B) = (q n,b,r) δ(q 3,0) = (q 2,0,R) δ(q 3,/) = (q 3,/,R) δ(q 4,B) = (q 0,B,R) δ(q 4,0) = (q 5,0,L) δ(q 4,/) = (q 4,/,L) δ(q 5,0) = (q 4,/,L) δ(q 5,/) = (q 5,/,L) δ(q p,b) = (q e,1,n) δ(q n,b) = (q e,0,n) / Γ für gestrichen... q 2 (gerade viele Nullen gelesen); q 3 (ungerade viele); q 4 / q 5 (auf Rückweg Null abwechselnd überspringen/streichen) 3/2, Folie 17 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechnungen einer Turing-Maschine formal Sei M = [Z,Σ,Γ,q 0,q e,δ] eine Turing-Maschine. Eine Konfiguration (Situation) in einer Berechnung von M wird beschrieben durch ein Tripel (z,u,v) mit z Z, u Γ* und v Γ*. z ist der aktuelle Zustand u ist das Wort auf dem Eingabeband links vom Lese-/Schreibkopf ( Unbesuchte Zellen BBB werden nicht berücksichtigt. ) v ist das Wort auf dem Eingabeband rechts vom Lese-/Schreibkopf ( Unbesuchte Zellen BBB werden nicht berücksichtigt. ) Lese-/Schreibkopf... B 0 1 0 0 B B B... Eingabeband (z,01,00) Programm im Zustand z 3/2, Folie 18 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechnungen einer Turing-Maschine formal (cont.) Sei M = [Z,Σ,Γ,q 0,q e,δ] eine Turing-Maschine. Sei z Z und u, v Γ* Dann nennen wir die Konfiguration (z,u,v) wenn z = q 0 und u = ε gilt, eine Anfangskonfiguration, wenn z = q e gilt, eine Endkonfiguration. Wenn (z,u,v) eine Anfangskonfiguration ist, gilt v Σ*, und v ist die Eingabe von M Wenn (z,u,v) eine Endkonfiguration ist, gilt v Γ*, und das längste Präfix v von v mit v Σ* ist die von M berechnete Ausgabe. 3/2, Folie 19 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechnungen einer Turing-Maschine formal (cont.) Sei M = [Z,Σ,Γ,q 0,q e,δ] eine Turing-Maschine. M definiert eine Relation M über der Menge Z Γ* Γ*. Diese Relation beschreibt die einzelnen Rechenschritte von M: Was ist die nächste Konfiguration nach (z,u,v)? (z,u,v) M (z,ub,v ), falls v = av und δ(z,a) = (z,b,r) (z,u,v) M (z,ub,ε), falls v = ε und δ(z,b) = (z,b,r) (z,u,v) M (z,u,bv ), falls v = av und δ(z,a) = (z,b,n) (z,u,v) M (z,u,b), falls v = ε und δ(z,b) = (z,b,n) (z,u,v) M (z,u,cbv ), falls u = u c, v = av und δ(z,a) = (z,b,l) (z,u,v) M (z,u,cb), falls u = u c, v = ε und δ(z,b) = (z,b,l) (z,u,v) M (z,ε,bbv ), falls u = ε, v = av und δ(z,a) = (z,b,l) (z,u,v) M (z,ε,bb), falls u = v = ε und δ(z,b) = (z,b,l) 3/2, Folie 20 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Anmerkungen Sei M eine Turing-Maschine und x Σ* Bei der Verarbeitung von x kann M entweder eine Endkonfiguration erreichen, oder aber auch keine Endkonfiguration erreichen, d.h. in eine Endlosschleife gehen oder mangels passender Anweisungen für die vorliegende Konfiguration steckenbleiben. 3/2, Folie 21 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
zentraler Hilfsbegriff sei M = [Z,Σ, Γ,q 0,q e,δ] eine Turing-Maschine die von M berechnete (partielle) Funktion f M über Σ* ist wie folgt definiert Sei x Σ*. Dann gilt: f M (x) = y, falls M bei Eingabe x eine Endkonfiguration erreicht und die Ausgabe y bestimmt, d.h. es gilt (q 0,ε,x) * M (q e,u,yv), wobei v = ε ist, oder der erste Buchstabe von v nicht zu Σ gehört. f M (x) ist undefiniert, wenn M bei Eingabe x keine Endkonfiguration erreicht.... (z,u,v) * M (z,u,v ) bedeutet, dass M eine Konfiguration (z,u,v) in endlich vielen Rechenschritten in die Konfiguration (z,u,v ) überführt 3/2, Folie 22 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Anmerkung Meist interessieren wir uns nur für vollständig definierte Funktionen Mit Turing-Maschinen kann man aber partiell definierte Funktionen berechnen, d.h. Funktionen f, die nicht jedem x einen Funktionswert f(x) zuordnen Das ist kein Unfall: Jedes hinreichend leistungsfähige Berechnungsmodell muss Programme enthalten, mit denen man partiell definierte Funktionen berechnen kann, und es muss möglich sein, Endlosschleifen zu programmieren 3/2, Folie 23 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechenbarkeitsmodell - Turing-Maschine Drastisches Beispiel zum Thema partielle Funktion Es sei das folgende Programm einer Turing-Maschine M für Σ={0,1} gegeben: δ(z 0,0) = (z 0,0,L) δ(z 0,1) = (z 0,1,L) δ(z 0,B) = (z 0,B,L) 3/2, Folie 24 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Berechenbarkeitsmodell - Turing-Maschine Drastisches Beispiel zum Thema partielle Funktion Es sei das folgende Programm einer Turing-Maschine M für Σ={0,1} gegeben: δ(z 0,0) = (z 0,0,L) δ(z 0,1) = (z 0,1,L) δ(z 0,B) = (z 0,B,L) M liefert für keinen Input ein Ergebnis und rechnet stets ewig. Die von M berechnete Funktion f M auf Σ* ist nirgendwo definiert. 3/2, Folie 25 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
der formale Berechenbarkeits-Begriff Sei Σ ein endliches Alphabet und f eine vollständig definierte Funktion über Σ * Dann definieren wir: Die Funktion f ist Turing-berechenbar, falls es eine Turing-Maschine M gibt, so dass für alle x Σ* gilt: f M (x) = f(x) 3/2, Folie 26 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik
Diskussion beabsichtigte Verwendung Wir wissen bereits aus Mächtigkeitsgründen: Es gibt vollständig definierte Funktionen, die nicht Turingberechenbar sind. Da das Berechnungsmodell Turing-Maschine präzise definiert ist, kann man jetzt daran gehen, folgende Frage zu beantworten: Gibt es interessante vollständig definierte Funktionen, die nicht Turing-berechenbar sind? Man muss nur noch zeigen, dass es keine Turing-Maschine gibt, die man benutzen kann, um die entsprechende Funktion zu berechnen. 3/2, Folie 27 2018 Prof. Steffen Lange, Dr. Bernd Baumgarten - h_da/fbi - Theoretische Informatik