Berechenbarkeit. Script, Kapitel 2

Ähnliche Dokumente
Berechenbarkeit. Script, Kapitel 2

LOOP-Programme: Syntaktische Komponenten

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

Einführung in die Theoretische Informatik

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

Syntax von LOOP-Programmen

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

2.4 Kontextsensitive und Typ 0-Sprachen

11.1 Kontextsensitive und allgemeine Grammatiken

Theoretische Informatik SS 03 Übung 3

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

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.

Theorie der Informatik

Beispiele für Turingmaschinen. 1. Addition 1.1 Trennzeichen l öschen 1.2 Summanden kopieren

Theoretische Informatik 1

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

Formale Sprachen und Automaten

Theoretische Informatik 1

Berechenbarkeits- und Komplexitätstheorie

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

Mächtigkeit von WHILE-Programmen

GTI. Hannes Diener. 6. Juni Juni. ENC B-0123, diener@math.uni-siegen.de

Rekursiv aufzählbare Sprachen

Turing-Maschine. Berechenbarkeit und Komplexität Turing-Maschinen. Turing-Maschine. Beispiel

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

8. Turingmaschinen und kontextsensitive Sprachen

Zusammenfassung Grundzüge der Informatik 4

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

Theoretische Informatik 1

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Theoretische Grundlagen der Informatik

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

Einführung in die Informatik

Def.: Die Menge der LOOP-Programme ist induktiv wie folgt definiert:

Deterministischer endlicher Automat A ohne Ausgabe (deterministischer endlicher Akzeptor)

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel

Sprachen und Automaten. Tino Hempel

Ausgewählte unentscheidbare Sprachen

4 Die Turing-Maschine

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Die Ackermannfunktion

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

Theoretische Informatik Testvorbereitung Moritz Resl

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Primitiv rekursive und µ-rekursive Funktionen

Theoretische Informatik 2

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Rekursive Funktionen Basisfunktionen

Berechenbarkeits- und Komplexitätstheorie

Formale Sprachen. Script, Kapitel 4. Grammatiken

Theorie der Informatik (CS206) Kellerautomat, Postfix-Notation, Turing-Maschine, Busy Beaver

Mitschrift BFS WS 13/14

Theoretische Informatik

Formale Sprachen und Automaten

Theoretische Informatik SS 03 Übung 4

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

Theoretische Informatik II

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

Einführung in die Theoretische Informatik

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Prinzipielle Grenzen der Berechenbarkeit

a n b n c n ist kontextsensitiv kontextfreie Sprachen (Typ 2) Abschnitt 3.3 kontextfreie Sprachen: Abschlusseigenschaften Chomsky NF und binäre Bäume

Einführung in die Informatik I

Algorithmen und Programmierung

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Berechenbarkeitsmodelle

Berechenbarkeit und Komplexität

Ein deterministischer endlicher Automat (DFA) kann als 5-Touple dargestellt werden:

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

Einführung in die Theoretische Informatik

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines

Sprachen und Programmiersprachen

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Theoretische Informatik I

Theoretische Informatik

Theoretische Informatik SS 04 Übung 1

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

Theoretische Informatik

Lineare Gleichungssysteme

Endliche Automaten. Im Hauptseminar Neuronale Netze LMU München, WS 2016/17

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

Theoretische Informatik 1

Einführung in die Programmierung

1 Vom Problem zum Programm

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Automatentheorie. Endliche Automaten, Kellerautomaten und Turingmaschinen

Informatik II. Registermaschinen. Registermaschinen. Registermaschinen. Rainer Schrader. 7. Dezember 2005

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Kapitel 1. Grundlagen Mengen

Lösungen zur 3. Projektaufgabe TheGI1

Kapitel 1. Grundlagen

Primitiv rekursive und µ-rekursive Funktionen

Wie viel Mathematik kann ein Computer?

2. Berechnungsmächtigkeit von Zellularautomaten. Ziele Simulation von Schaltwerken Simulation von Turingmaschinen

Theoretische Grundlagen der Informatik

Transkript:

Berechenbarkeit Script, Kapitel 2 Intuitiver Berechenbarkeitsbegriff Turing-Berechenbarkeit WHILE-Berechenbarkeit Church sche These Entscheidungsprobleme Unentscheidbarkeit des Halteproblems für Turingmaschinen B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 20

Intuitiver Algorithmusbegriff Ein Algorithmus überführt Eingabedaten in Ausgabedaten (wobei die Art der Daten vom Problem, das durch den Algorithmus gelöst werden soll, abhängig ist), besteht aus einer endlichen Folge von Anweisungen mit folgenden Eigenschaften: es gibt eine eindeutig festgelegte Anweisung, die als erste auszuführen ist, nach Abarbeitung einer Anweisung gibt es eine eindeutig festgelegte Anweisung, die als nächste abzuarbeiten ist, oder die Abarbeitung des Algorithmus ist beendet und hat eindeutig bestimmte Ausgabedaten geliefert, die Abarbeitung einer Anweisung erfordert keine Intelligenz (ist also prinzipiell durch eine Maschine realisierbar). B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 21

Beispiele für Algorithmen der Gaußsche 1 Algorithmus zur Lösung von linearen Gleichungssystemen (über den rationalen Zahlen), Kochrezepte (mit Zutaten und Kochgeräten als Eingabe und dem fertigen Gericht als Ausgabe), Bedienungsanweisungen für Geräte, PASCAL-Programme. 1 Carl Friedrich Gauss, 1777 1855, deutscher Mathematiker. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 22

Idee der Turingmaschine 2 Arbeitsband beidseitig (potenziell) unendliches Band, in Felder eingeteilt; jedes Feld enthält einen Buchstaben aus dem Bandalphabet; zum Bandalphabet gehört das Leerzeichen oder Blank-Symbol. Schreib-Lesekopf über dem Band beweglich bearbeitet ein aktuelles Feld endliche Steuerung oder Kontrolle endliche Menge von internen Zuständen, die den Programmablauf regeln 2 Alan Mathison Turing (1912 1954), britischer Mathematiker, Logiker, Kryptoanalytiker und Computerkonstrukteur. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 23

Veranschaulichung einer Turingmaschine......... x y.. z # x $ 1.... 1... unendliches Band endliche Kontrolle Schreib-Lesekopf B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 24

Definition der Turingmaschine Eine (deterministische) Turingmaschine (kurz: TM) ist gegeben durch ein 7-Tupel M = (Z, Σ, Γ, δ, z 0,, E). Hierbei sind Z eine endliche Menge (Zustandsmenge), Σ ein Alphabet (Eingabealphabet), Γ ein Alphabet (Bandalphabet) mit Σ Γ, δ : (Z \ E) Γ Z Γ {L, R, N} eine Funktion (Überführungsfunktion), z 0 Z (Anfangszustand), Γ \ Σ (Leerzeichen, Blank), E Z (Menge der Endzustände). B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 25

Erstes Beispiel einer Turingmaschine Gegeben sei die Turingmaschine M = ({z 0, z 1, z 2, z e }, {0, 1}, {0, 1, }, δ, z 0,, {z e }), wobei δ wie folgt definiert ist. Wir geben dabei δ in einer Tabelle an, wobei im Kreuzungspunkt der Zeile mit der Bezeichnung a und der Spalte mit der Bezeichnung z der Funktionswert δ(z, a) steht. δ z 0 z 1 z 2 (z 1,, L) (z e, 1, N) (z e,, R) 0 (z 0, 0, R) (z 2, 1, L) (z 2, 0, L) 1 (z 0, 1, R) (z 1, 0, L) (z 2, 1, L) B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 26

Konfiguration einer Turingmaschine Eine Konfiguration k einer Turingmaschine M = (Z, Σ, Γ, δ, z 0,, E) ist ein Wort k Γ ZΓ. Dabei soll k = αzβ folgendermaßen interpretiert werden: αβ steht auf dem Eingabeband, des weiteren stehen nur noch Blankzeichen auf dem Band, die Turingmaschine befindet sich im Zustand z und der Kopf der Turingmaschine steht über dem ersten Symbol von β. Eine Startkonfiguration ist k 0 = z 0 w mit w Σ. Eine Endkonfiguration ist k e = m z e w n mit z e E, w Σ, m, n N. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 27

Die binäre Relation in der Menge der Konfigurationen (Änderung der Konfiguration in einem Schritt der TM) a 1... a m zb 1... b n a 1... a m z cb 2... b n falls δ(z, b 1 ) = (z, c, N), m 0, n 1, a 1... a m cz b 2... b n falls δ(z, b 1 ) = (z, c, R), m 0, n 2, a 1... a m 1 z a m cb 2... b n falls δ(z, b 1 ) = (z, c, L), m 1, n 1, a 1... a m zb 1 a 1... a m cz falls δ(z, b 1 ) = (z, c, R), m 0, zb 1... b n z cb 2... b n falls δ(z, b 1 ) = (z, c, L), n 1. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 28

Die binäre Relation * (Änderung der Konfiguration in endlich vielen Schritten der TM) Mit bezeichnen wir den reflexiven und transitiven Abschluss der binären Relation, also es gilt k 0 k e genau dann, wenn (i) k 0 = k e ist, oder (ii) eine Zahl n 0 und Konfigurationen k 1, k 2,..., k n existieren, so dass k 0 k 1 k 2 k n k e. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 29

Turingberechenbarkeit Eine Funktion f : Σ Σ heißt Turingberechenbar, falls es eine Turingmaschine M = (Z, Σ, Γ, δ, z 0,, E) gibt, so dass für alle x, y Σ gilt: f(x) = y genau dann, wenn z 0 x... z e y... für ein z e E. Eine Funktion f : N k N für ein k N heißt Turingberechenbar, falls es eine Turingmaschine M = (Z, {0, 1, #}, Γ, δ, z 0,, E) gibt, so dass für alle n 1, n 2,..., n k, m N gilt: f(n 1, n 2,..., n k ) = m genau dann, wenn für ein z e E : z 0 bin(n 1 )#bin(n 2 )#... #bin(n k )... z e bin(m)... B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 30

Beispiele für Turingberechenbare Funktionen Die Nachfolgerfunktion f : N N vermöge n f(n) = n + 1 ist Turingberechenbar, da die Turingmaschine aus unserem ersten Beispiel die Eingabe bin(n) in die Ausgabe bin(n + 1) transformiert. Die für alle Wörter aus {a, b} nicht-definierte Funktion Ω: {a, b} {a, b} vermöge w Ω(w) = nicht definiert ist Turing-berechenbar, da sie von der Turingmaschine M = ({z 0, z e }, {a, b}, {a, b, }, δ, z 0,, {z e }) mit δ(z 0, x) = (z 0, x, N) für alle x {a, b, } berechnet wird. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 31

Mehrband-Turingmaschinen k 1 Bänder (Eingabe/Ausgabe auf Band 1) Jedes Band hat einen eigenen Schreib-Lesekopf, der separat bewegt wird. Formal δ : Z Γ k Z Γ k {L, R, N} k B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 32

Äquivalenz von Mehrband- und (Einband)-TM Zu jeder Mehrband-TM M gibt es eine (Einband-)TM M, die dieselbe Funktion berechnet wie M. Mehrband-TM a a a b b a a b a b b a a a b a Einband-TM a a a b b a a b a b b a a a b a l k Bänder 1 Schritt 1 Band mit 2k Spuren 2(l + k) Schritte B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 33

Notationen : modifizierte Subtraktion : N 2 N vermöge (n 1, n 2 ) n 1 n 2 = { n 1 n 2 falls n 1 n 2, 0 sonst. Band := Band + 1 : TM, die zu einer Zahl 1 dazuaddiert Band(i) := Band(i) + 1 : k-band-tm, die auf i-tem Band 1 addiert und alle anderen Bänder unverändert läßt Band(i) := Band(i) 1 : k-band-tm, die auf i-tem Band 1 modifiziert subtrahiert und alle anderen Bänder unverändert läßt Band(i) := Band(j) : k-band-tm, die Inhalt des j-ten Bandes auf i-tes Band kopiert B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 34

Nacheinanderausführung von Turingmaschinen Seien M 1 und M 2 zwei Turingmaschinen, so wollen wir durch start M 1 M 2 stop oder auch durch M 1 ; M 2 diejenige Turingmaschine verstehen, die zuerst wie die Turingmaschine M 1 arbeitet und wenn M 1 einen Stopzustand erreichen würde in den Anfangszustand von M 2 übergeht und jetzt wie die Turingmaschine M 2 arbeitet. Sie stoppt dann, wenn M 2 einen Stopzustand erreichen würde. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 35

Beispiel für Nacheinanderausführung von TM Betrachten wir das Diagramm in folgender Abbildung. So erkennen wir, dass dort das schematische Flussbild einer Turingmaschine steht, welche dreimal nacheinander zur Zahl auf dem Band 1 addiert, also es sich um die Turingmaschine Band := Band + 3 handelt. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 36

Beispiel für Verzweigung von TM Folgende Abbildung stellt eine sich verzweigende TM dar. Sie soll nach Simulation der Turingmaschine M die Turingmaschine M 1 simulieren, falls sie bei der Simulation von M im Zustand z e1 stoppt. Analog soll sie die Turingmaschine M 2 abarbeiten, falls sie bei der Simulation von M im Zustand z e2 stoppt. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 37

Beispiel für Band (i) = 0? Es sei M = ({z 0, z 1, ja, nein}, Σ, Γ, δ, z 0,, {ja, nein}) mit 0 Σ sowie mit der Überführungsfunktion δ, gegeben durch δ(z 0, a) = (nein, a, N) für a 0, δ(z 0, 0) = (z 1, 0, R), δ(z 1, a) = (nein, a, L) für a, δ(z 1, ) = (ja,, L). Diese Turingmaschine testet, ob die Eingabe genau das Wort 0 ist. Falls ja, stoppt sie im Zustand ja, falls nein, stoppt sie im Zustand nein. Wir wollen diese Turingmaschine mit Band = 0? bezeichnen. Die k-band-tm, die das i-te Band auf 0 testet, nennen wir Band(i) = 0? B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 38

Beispiel für WHILE-Schleife Sei M eine beliebige Turingmaschine. start.. Band. (i) = 0?. M... nein ja. stop Dann bezeichnen wir die Turingmaschine, die durch das Diagramm gegeben ist, mit WHILE Band(i) 0 DO M. Die Arbeitsweise ist einfach zu erkennen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 39

LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; := Schlüsselwörter: LOOP DO END B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 40

LOOP-Programme: Syntax Die Syntax von LOOP-Programmen wird wie folgt induktiv definiert. (i) Jede Wertzuweisung der Form x i := x j + c bzw. x i := x j c ist ein LOOP-Programm, wobei c eine Konstante ist. (ii) Sind P 1, P 2 LOOP-Programme, dann sind auch P 1 ; P 2 sowie LOOP x i DO P 1 END LOOP-Programme. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 41

LOOP-Programme: Semantik, Teil i) (i) Jede Wertzuweisung der Form x i := x j +c wird wie üblich interpretiert: der neue Wert der Variablen x i berechnet sich als Summe des Wertes der Variablen x j und der Konstanten c, wobei der Wert in der Variablen x j erhalten bleibt. Die Wertzuweisung x i := x j c wird analog interpretiert, wobei sich aber die Werte nach der sogenannten modifizierten Differenz, die wie folgt definiert ist n 1 n 2 = { n 1 n 2 falls n 1 n 2, 0 sonst, berechnen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 42

LOOP-Programme: Semantik, Teil ii) ii) Ein LOOP-Programm der Form P 1 ; P 2 soll die Hintereinanderausführung der Programme P 1 und P 2 bedeuten, also zuerst wird das Programm P 1, dann das Programm P 2 ausgeführt. Ein LOOP-Programm der Form LOOP x i DO P 1 END bedeutet, dass das Programm P 1 sooft ausgeführt wird, wie der Wert der Variablen x i zu Beginn angibt. Änderungen des Wertes der Variablen x i haben also keinen Einfluss auf die Anzahl der Wiederholungen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 43

LOOP-berechenbare Funktionen Eine Funktion f : N k N, k N, heißt LOOP-berechenbar, falls es ein LOOP-Programm P gibt, das f in dem Sinne berechnet, dass P, gestartet mit n 1, n 2,..., n k in den Variablen x 1, x 2,..., x k und 0 in den restlichen Variablen, mit dem Wert f(n 1, n 2,..., n k ) in der Variablen x 0 stoppt. Schreibweise: f = f k P B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 44

Erstes Beispiel einer LOOP-berechenbaren Funktion Gegeben sei das LOOP-Programm x 0 := x 1 + 0; LOOP x 2 DO x 0 := x 0 + 1 END Man erkennt leicht, dass das Programm mit dem Wert der Summe der Anfangsbelegungen der Variablen x 1 und x 2 in der Variablen x 0 stoppt. Es berechnet also die Addition +: N 2 N vermöge (x 1, x 2 ) +(x 1, x 2 ) = x 1 + x 2. Also ist die Addition LOOP-berechenbar. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 45

Zweites Beispiel einer LOOP-berechenbaren Funktion Gegeben sei das LOOP-Programm LOOP x 2 DO LOOP x 1 DO x 0 := x 0 + 1 END END Eine genaue Betrachtung des Programms zeigt, dass damit die Funktion : N 2 N vermöge (x 1, x 2 ) (x 1, x 2 ) = x 1 x 2, berechnet wird. Die Multiplikation ist damit also LOOP-berechenbar. Man beachte, dass die Anfangsbelegung der Variablen x 0 Definition 0 ist. Das wird hier gebraucht und verwendet. natürlich laut B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 46

Drittes Beispiel einer LOOP-berechenbaren Funktion Das Konstrukt IF x 1 = 0 THEN A ELSE B END wird durch das LOOP-Programm x 2 := 1; x 3 := 0; LOOP x 1 DO x 2 := 0; x 3 := 1 END; LOOP x 2 DO A END; LOOP x 3 DO B END simuliert. Dabei sind die Variablen x 2 und x 3 natürlich nicht in den Programmen A und B enthalten. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 47

Aussagen über LOOP-berechenbarer Funktionen Jede von einem LOOP-Programm berechnete Funktion ist total. (Da die Anzahl der Abläufe einer LOOP-Schleife endlich ist, stoppt das Programm bei jeder Eingabe.) Es gibt (intuitiv) berechenbare Funktionen, die nicht LOOP-berechenbar sind. (z.b. jede berechenbare Funktion, die nicht total ist) Es gibt totale und (intuitiv) berechenbare Funktionen, die nicht LOOPberechenbar sind. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 48

WHILE-Programme: Syntaktische Komponenten WHILE-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Trennsymbole: ; := Operationssymbole: + Schlüsselwörter: LOOP WHILE DO END B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 49

WHILE-Programme: Syntax Die Syntax von WHILE-Programmen wird wie folgt induktiv definiert. (i) Jede Wertzuweisung der Form x i := x j + c bzw. x i := x j c ist ein WHILE-Programm, wobei c eine Konstante ist. (ii) Sind P 1, P 2 WHILE-Programme, dann sind auch P 1 ; P 2 und LOOP x i DO P 1 END und WHILE x i 0 DO P 1 END WHILE-Programme. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 50

WHILE-Programme: Semantik, Teil i) Jede Wertzuweisung der Form x i := x j + c wird wie üblich interpretiert: der neue Wert der Variablen x i berechnet sich als Summe des Wertes der Variablen x j und der Konstanten c, wobei der Wert in der Variablen x j erhalten bleibt. Die Wertzuweisung x i := x j c wird analog interpretiert, wobei sich aber die Werte nach der sogenannten modifizierten Differenz, die wie folgt definiert ist { n 1 n 2 falls n 1 n 2, n 1 n 2 = 0 sonst, berechnen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 51

WHILE-Programme: Semantik, Teil ii) Ein WHILE-Programm der Form P 1 ; P 2 soll die Hintereinanderausführung der Programme P 1 und P 2 bedeuten, also zuerst wird das Programm P 1, dann das Programm P 2 ausgeführt. Ein WHILE-Programm der Form LOOP x i DO P 1 END bedeutet, dass das Programm P 1 sooft ausgeführt wird, wie der Wert der Variablen x i zu Beginn angibt. Änderungen des Wertes der Variablen x i haben also keinen Einfluss auf die Anzahl der Wiederholungen. Ein WHILE-Programm der Form WHILE x i 0 DO P 1 END bedeutet, dass das Programm P 1 solange ausgeführt wird, wie der Wert der Variablen x i ungleich Null ist. Es findet also vor jedem erneuten Durchlauf des Programms P 1 eine Abfrage der Variablen x i statt. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 52

WHILE-berechenbare Funktionen Eine Funktion f : N k N, k N, heißt WHILE-berechenbar, falls es ein WHILE-Programm P gibt, das f in dem Sinne berechnet, dass P, gestartet mit n 1, n 2,..., n k in den Variablen x 1, x 2,..., x k und 0 in den restlichen Variablen, mit dem Wert f(n 1, n 2,..., n k ) in der Variablen x 0 stoppt. Ist f(n 1, n 2,..., n k ) dagegen nicht definiert, so stoppt P nicht. Schreibweise: f = f k P Folgerung: Jede LOOP-berechenbare Funktion ist WHILE-berechenbar. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 53

1. Beispiel einer WHILE-berechenbaren Funktion Das WHILE-Programm x 3 := x 1 5; WHILE x 3 0 DO x 1 := x 1 + 1 END; LOOP x 1 DO x 0 := x 0 + 1 END; LOOP x 2 DO x 0 := x 0 + 1 END berechnet die Funktion f : N 2 N vermöge f(x 1, x 2 ) = { x 1 + x 2 falls x 1 5, nicht definiert sonst. Folgerung: Es gibt WHILE-berechenbare Funktionen, die nicht LOOPberechenbar sind. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 54

2. Beispiel einer WHILE-berechenbaren Funktion Das WHILE-Programm x 1 := x 1 + 1; WHILE x 1 0 DO x 0 := x 0 + 1; LOOP x 2 DO x 1 := x 1 1 END END; x 0 := x 0 1 berechnet die ganzzahlige Division div : N 2 N vermöge { x 1 x x 1 div x 2 = 2 falls x 2 > 0, nicht definiert sonst. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 55

Äquivalenz von WHILE-Programmen und Turingmaschinen Satz: 1. Jede WHILE-berechenbare Funktion ist Turing-berechenbar. 2. Jede Turing-berechenbare Funktion ist WHILE-berechenbar. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 56

Simulation: WHILE-Programm durch Turingmaschine Mehrband-Turingmaschinen können Wertzuweisungen ausführen (wobei ein Band einer Variablen entspricht), Konstanten addieren und subtrahieren, hintereinander ausgeführt werden, WHILE-Schleifen ausführen. Damit kann man ein WHILE-Programm (mit k Variablen) durch eine (k-band-)turingmaschine simulieren. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 57

Simulation: Turingmaschine durch WHILE-Programm 1 Gegeben sei TM M = (Z, Σ, Γ, δ, z 1,, {z k }), wobei Z = {z 1, z 2,..., z k }, Γ = {a 1, a 2,..., a m }. Sei außerdem b eine Zahl mit b > m. Eine Turingmaschinen-Konfiguration a i1 a i2... a ip z l a j1 a j2... a jq wird durch drei Programmvariablen x, y, z mit den Werten x = (i 1 i 2... i p ) b, y = (j q j q 1... j 1 ) b, z = l repräsentiert; dabei bedeutet (i 1 i 2... i p ) b die Zahl i 1 i 2... i p in b-närer Darstellung, also x = p i µ b p µ, y = µ=1 q j µ b µ 1 µ=1 B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 58

Simulation: Turingmaschine durch WHILE-Programm 2 Stuktur des WHILE-Programmes mit Eingabe und Ausgabe auf y z := 1; WHILE z < k DO END a := y mod b; z := z; IF(z = 1 AND a = 1) THEN P 1,1 END; IF(z = 1 AND a = 2) THEN P 1,2 END;. IF(z = k 1 AND a = m) THEN P k 1,m END; Das Teilprogramm P i,j simuliert die Konfigurationsänderung für Zustand z i und Bandsymbol a j. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 59

Simulation: Turingmaschine durch WHILE-Programm 3 Stuktur des Teilprogrammes P i,j für δ(z i, a j ) = (z i, a j, L) z := i ; y := y div b; y := b y + j ; y := b y + (x mod b); x := x div b Entsprechend kann man sich die anderen Fälle vorstellen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 60

Die Churchsche These Jede intuitiv berechenbare Funktion ist Turing-berechenbar. Die Churchsche These kann naturgemäß nicht bewiesen werden. Sie wird aber durch die Tatsache gestützt, dass zahlreiche weitere Modelle der Berechenbarkeit äquivalent zur Turing-Berechenbarkeit sind, z.b. Post- und Markov-Algorithmen, Registermaschinen, partiell-rekursive Funktionen. B. Reichel, R. Stiebe: Theoretische Informatik für Lehrer 61