ALP I Turing

Werbung
Funktionale Programmierung
ALP I
Turing-Maschine
Teil I
WS 2012/2013
Prof. Dr. Margarita Esponda
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Äquivalenz vieler Berechnungsmodelle
Alonzo Church
λ-Kalkül
Kombinatorische
Logik
Alan Turing
Turing-Maschine
Mathematische Präzisierung
µ-rekursive
Funktionen
Effektiv Berechenbare
Funktionen
Register
Maschinen
Prof. Dr. Margarita Esponda
GOTOBerechenbar
WHILEBerechenbar
Moderne
Programmiersprachen
mit unendlichem Speicher
Funktionale Programmierung
Turing-These
(1930)
"Any computation carried out by mechanical
means can be performed by a Turing Machine"
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Definition von Algorithmus
Ein Algorithmus für eine Funktion f(x) ist eine TuringMaschine, die die Funktion f(x) berechnet.
Wir können sagen, dass ein Algorithmus für eine Funktion
f(x) existiert, wenn eine Turing-Maschine existiert, die diese
Funktion berechnet.
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Funktionale Programmierung vs.
Imperative Programmierung
Formale Modelle
für die Funktionale Programmiersprachen
Lambda-Kalkül und Kombinatorische Logik
für die Imperative Programmiersprachen
Turing-Maschine
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Unendliches Band
...
...
Lese-Schreibe-Kopf
Hardware
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Unendliches Band
...
...
Lese-Schreibe-Kopf
Jeder Berechnungsschritt besteht aus nur drei einfachen
Operationen:
• Ein Symbol lesen
• Ein Symbol schreiben
• Den Kopf nach links oder rechts bewegen
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Zeitpunkt ti
...
1
1
0
0
1
0
...
liest eine 0
...
1
1
0
1
1
0
...
scheibt eine 1
...
1
Zeitpunkt ti+1
Prof. Dr. Margarita Esponda
1
0
1
1
0
...
bewegt den Kopf nach rechts
Funktionale Programmierung
Turing-Maschine als endlicher Automat
Das Programm, beziehungsweise die Steuerung der TuringMaschine, kann als endlicher Automat dargestellt werden.
Endzustand
Startzustand
0
Z2
Prof. Dr. Margarita Esponda
Z1
1
Z0
1
0
1
Ze
0
Z3
1
Funktionale Programmierung
Turing-Maschine als Zustandstabelle
Das Programm kann auch in Form einer Zustandstabelle
geschrieben werden.
Zustand
Eingabe
Ausgabe
Bewegung
Neuer Zustand
Z0
1
0
R
Z1
Z0
0
0
R
Z2
Z1
1
1
R
Ze
Z1
0
0
R
Z3
Z3
1
1
R
Ze
Z3
0
0
R
Z2
...
...
...
...
...
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Start-Konfiguration
1 Eingabe-String
...
1
1
0
1
1
0
2 Kopfposition
3 Anfangszustand
Prof. Dr. Margarita Esponda
1
...
Funktionale Programmierung
Zustandsübergang
Schreibt Symbol
Liest Symbol
Kopfbewegung
a → b, L
Z1
a a
b
Z1
Prof. Dr. Margarita Esponda
Z2
a b
Z2
b
Funktionale Programmierung
Zustandsübergang
Der Übergang zwischen zwei Zuständen muss
deterministisch sein.
erlaubt
a→b, L
Z1
nicht erlaubt
Z2
Z1
b→b, R
Z3
Prof. Dr. Margarita Esponda
a→b, L
Z2
a→b, R
Z3
Funktionale Programmierung
Zustandsübergang
a b
c
Z2
Nicht für alle Symboleingaben
erlaubt
a→b, L
Z1
Z2
b→b, R
Z3
Prof. Dr. Margarita Esponda
muss ein Zustandsübergang
existieren.
Funktionale Programmierung
Halt
Die Turing-Maschine bleibt stehen, wenn ein Endzustand
erreicht worden ist, d.h. kein Übergang mehr möglich ist.
Endzustand
1
Z1
Ze
0
Z2
Prof. Dr. Margarita Esponda
1
Funktionale Programmierung
Turing-Maschine
Beispiel:
Folgende Turing-Maschine erlaubt nur Einsen als Eingabe
und bleibt stehen, wenn der Kopf etwas anderes liest.
1→1, R
Endzustand
0→0, L
Ze
Z0
→
,L
1 1
Z0
Prof. Dr. Margarita Esponda
1
Funktionale Programmierung
Turing-Maschine
Beispiel:
Folgende Turing-Maschine erlaubt nur Einsen als Eingabe
und bleibt stehen, wenn der Kopf etwas anderes liest.
1→1, R
Endzustand
0→0, L
Ze
Z0
→
,L
1 1
1
Z0
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Beispiel:
Folgende Turing-Maschine erlaubt nur Einsen als Eingabe
und bleibt stehen, wenn der Kopf etwas anderes liest.
1→1, R
Endzustand
0→0, L
Ze
Z0
→
,L
1 1
1
Z0
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Beispiel:
Folgende Turing-Maschine erlaubt nur Einsen als Eingabe
und bleibt stehen, wenn der Kopf etwas anderes liest.
1→1, R
Endzustand
0→0, L
Ze
Z0
→
,L
1 1
1
Ze
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Turing-Maschine
Beispiel:
Folgende Turing-Maschine erlaubt nur Einsen als Eingabe
und bleibt stehen, wenn der Kopf etwas anderes liest.
Zustandstabelle
Zustand
Eingabe
Ausgabe
Bewegung
Neuer Zustand
Z0
1
1
R
Z0
Z0
0
0
L
Ze
L
Ze
Z0
Ende
Start
1 1
Z0
Prof. Dr. Margarita Esponda
1
1 1
1
Ze
Funktionale Programmierung
Formale Definition von Turing-Maschinen
Zustandsmenge
Eingabe-Alphabet
Alphabet des Bandes
TM = (Q, A, B, F, z0,
Übergangsfunktion
Leeres Symbol
Anfangszustand
Prof. Dr. Margarita Esponda
, Zf)
Menge der
Endzustände
Funktionale Programmierung
… weitere Beispiele von TM
Zahlen in einem unären Zahlensystem addieren
• Start-Konfiguration gleich End-Konfiguration bedeutet,
dass sich am Ende der Berechnungen der Lese/SchreibeKopf am Anfang des Ergebnis-Strings befindet.
...
1
1
1
1
1
1
• Die Zahlen werden wie folgt dargestellt:
1 = "1"
2 = "11"
. . . usw.
Prof. Dr. Margarita Esponda
1
...
Funktionale Programmierung
1→1,R
Start
Z1
...
→1,L
Z2
1
Start an dieser Position
...
Diese Turing-Maschine
inkrementiert eine unäre Zahl.
1→1,L
→
1
1
1
1
,R
Z3
1
1
1
1
...
Z1
1
1
1
1
1
...
1
Z2
...
1
1
Z3
Prof. Dr. Margarita Esponda
1
1
1
1
1
1
...
Funktionale Programmierung
1→1,R
Turing-Maschinen
1→1,L
Hier werden zwei Zahlen addiert
Z1
...
→1,L
→
Z2
1
,R
Z3
1
1
1
1
1→
,R
Z4
1
1
1
...
1
1
1
...
1
1
1
...
Z1
...
1
1
Z2
...
Prof. Dr. Margarita Esponda
1
1
Z4
1
Funktionale Programmierung
Turing-Maschinen
In folgender Turing-Maschine wird ein Block von Einsen kopiert und
ein Leerzeichen dazwischen gelassen.
1→A,S
1→1,R
A→A,R
Z1
Z2
1→1,R
→
,R
Z3
1→1,L
→1 ,S
A→A,R
→
,L
1→1,L
Z6
Z7
→
A→1,S
Prof. Dr. Margarita Esponda
,R
Z4
1→1,L
→
,L
Z5
Funktionale Programmierung
Turing-Maschinen
...
1
1
Z1
Prof. Dr. Margarita Esponda
1
1
1
1
...
Herunterladen