LOOP-Programme: Syntaktische Komponenten

Ähnliche Dokumente
LOOP-Programme: Syntaktische Komponenten

Berechenbarkeit. Script, Kapitel 2

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

Syntax von LOOP-Programmen

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

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

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

Einführung in die Theoretische Informatik

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

Theoretische Informatik SS 03 Übung 3

Mächtigkeit von WHILE-Programmen

THEORETISCHE INFORMATIK UND LOGIK

1.5 Turing-Berechenbarkeit

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

1.5 Turing-Berechenbarkeit

Theoretische Informatik SS 03 Übung 5

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

Berechenbarkeit und Komplexität Vorlesung 11

GOTO simuliert Turingmaschinen

Mächtigkeit von WHILE-Programmen

Universelle Rechner und Church sche These

Berechenbarkeit. Script, Kapitel 2

Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

2. Imperative Programmierung und Berechenbarkeit - Registermaschinen -

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

Theoretische Informatik 1

Entscheidungsprobleme

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

Theoretische Informatik II. WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch. 1. Teilklausur Vorname:... Nachname:...

Nachklausur zur Vorlesung

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

Die Ackermannfunktion

Einführung in die Theoretische Informatik

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

Theoretische Informatik 1

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

Primitiv rekursive Funktionen

Einführung in die Theoretische Informatik

Übung zur Vorlesung Berechenbarkeit und Komplexität

Turing-Maschine Definition

Berechenbarkeit und Komplexität

Einführung in die Informatik I

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

Berechenbarkeits- und Komplexitätstheorie

Präsenzübung Berechenbarkeit und Komplexität

Einführung in die Theoretische Informatik

Einführung in die Informatik Turing Machines

Entscheidungsprobleme

Theorie der Informatik

Rekursive Funktionen Basisfunktionen

Theoretische Informatik SS 03 Übung 4

Mitschrift BFS WS 13/14

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

Theoretische Grundlagen der Informatik

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

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Theoretische Informatik

Registermaschine (RAM), Church-Turing-These

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

Auffrischung Einige (wenige) Grundlagen der Theoretischen Informatik

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

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

Kapitel 5. Entscheidbarkeit und Berechenbarkeit. 5.1 Entscheidbarkeit

Typen von Programmiersprachen

Unvollständigkeit der Arithmetik

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

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

Theorie der Informatik

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Primitiv rekursive und µ-rekursive Funktionen

Einführung in die Informatik Turing Machines

11.1 Kontextsensitive und allgemeine Grammatiken

Unentscheidbarkeitssätze der Logik

2.4 Kontextsensitive und Typ 0-Sprachen

Rekursive Aufzählbarkeit Die Reduktion

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

1936 von Alan Turing zum theoretischen Studium der Berechenbarkeit eingeführt Besteht aus

2.5 Halteproblem und Unentscheidbarkeit

Grundlagen der Informatik Kapitel 19. Harald Krottmaier Sven Havemann

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Theorie der Informatik

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

11. Übungsblatt. x y(top(push(x, y)) = y)

Berechenbarkeit und Komplexität Vorlesung 3

Theoretische Informatik. Berechenbarkeit

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

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

Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion

Einführung in die mathematische Logik

Klassische Informationstheorie: Berechenbarkeit und Komplexität

Einführung in die Theoretische Informatik

Automaten, Formale Sprachen und Berechenbarkeit I Wichtige Begriffe

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Grundlagen der Theoretischen Informatik

Transkript:

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 R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 41

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 42

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 43

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 44

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 R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 45

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 46

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 R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 47

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 48

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 49

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 R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 50

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 51

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 52

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 53

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 54

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 55

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 56

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

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 58

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 R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 59

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 60

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 61

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. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, 2006 62