4 Die Turing

Werbung
16
4
4.1
Die Turing-Maschine
Wörter und Gödelisierung
Ein Alphabet ist eine endliche Menge verschiedener Objekte {a 1 , a2 , . . . , ak }, die wir auch
Buchstaben nennen. Dies können die uns bekannten Buchstaben a, b, c, . . . sein oder Zahlen
1, 2, 3, . . . Hinzu kommt immer der leere Buchstabe (=Leerzeichen), den wir mit a 0 oder
∗ bezeichnen. Ein Wort über einem Alphabet ist eine endliche Folge von Buchstaben, die
den leeren Buchstaben nicht enthalten darf. Bei einem Wort ist jede Folge von Buchstaben erlaubt, über dem lateinischen Alphabet sind daher auch ”sinnlose” Ausdrücke wie
”abdgraul” Wörter. Sind x = a1 a1 . . . am und y = b1 b2 . . . bn Wörter, so lassen sie sich zu
xy verketten,
xy = a1 a2 . . . am b1 b2 . . . bn .
Beispielweise ergibt die Verkettung von ababa und acbb das Wort ababaacbb.
Nun wollen wir zeigen, daß man auch mit einem einelementigen Alphabet auskommen
kann. Seien a1 , . . . , ak die k verschiedenen Buchstaben eines Alphabets, denen wir die
Zahlen 1, . . . , k zuordnen. Ein Wort über diesem Alphabet läßt sich daher in der Form
b1 b2 . . . bm schreiben, wobei die bi Zahlen von 1 bis k sind. Wir ordnen dieser Zahlenfolge
die natürliche Zahl
2b1 · 3b2 · 5b3 · . . . · pbmm
zu, wobei pm die m-te Primzahl ist. Haben wir beispielsweise nur die Buchstaben 1 und 2
im Alphabet, so wird das Wort 11121 codiert durch
21 · 31 · 51 · 72 · 111 = 16170.
Aus dieser Zahl kann man durch eine Primfaktorzerlegung das urprüngliche Wort eindeutig
rekonstruieren: Der Exponent der k-ten Primzahl in dieser Faktorisierung gibt gerade den
k-ten Buchstaben des Wortes an. Man nennt die auf die beschriebene Weise erhaltene
Zahl die Gödelnummer des Wortes, den ganzen Prozess der Verschlüsselung nennt man
Gödelisierung, alles benannt nach dem berühmten österreichischen Logiker Kurt Gödel.
Für die Darstellung der Gödelnummer braucht man nur noch ein einelementiges Alphabet,
sagen wir 1, die natürliche Zahl n stellt man dar, indem man die 1 n mal hintereinander
schreibt.
4.2
Turingmaschinen
Die Turingmaschine wurde 1936 von dem britischen Mathematiker Alan Turing als Modell
des meschlichen Denkvermögens entworfen. Sie ist ein rein mathematisches Konstrukt, zum
besseren Verständnis kann man sie sich durchaus als echte Maschine vorstellen.
17
Steuereinheit
Kopf 1
Band 1
Kopf 2
Band 2
Kopf k
Band k
Die Turing-Maschine besitzt mehrere (k ≥ 1), beidseitig unendliche, in Feldern unterteilte Bänder. Auf jedem Feld steht ein Buchstabe des zugrunde liegenden Alphabets,
wobei auch das Leerzeichen zugelassen ist. Für jedes Band steht ein Schreib-, Lesekopf,
kurz Kopf genannt, zur Verfügung. Jeder Kopf steht auf genau einem Feld seines Bandes.
Die Maschine kann mit dem Kopf den Inhalt dieses Feldes lesen und neu bedrucken. Die
Steuereinheit befindet sich immer in einem von endlich vielen Zuständen z0 , z1 , . . . , zm .
Ausgezeichnet sind hierbei der Startzustand z 0 und der Stopzustand z1 .
Die Turing-Maschine arbeitet taktweise. In einem Arbeitstakt kann sie in Abhängigkeit
• vom gegenwärtigen Zustand
• von den durch die Köpfe gelesenen Buchstaben
gleichzeitig
• einen neuen Zustand annehmen,
• die k gelesenen Bandsymbole verändern (bedrucken),
• jeden der Köpfe um maximal ein Feld nach rechts oder links bewegen.
Die Turing-Maschine ist deterministisch. Wir benötigen daher Befehle, die der TuringMaschine sagen, was sie als nächstes tun muß. Wie oben bereits erwähnt hängt der nächst
Takt davon ab, in welchem Zustand z die Maschine sich befindet und welche Buchstaben
a1 , . . . , ak auf den k Köpfen gerade gelesen werden. Ein Befehl hat daher die Form
(z, a1 , . . . , ak ) → (z 0 , a01 , . . . , a0k , σ1 , . . . , σk ),
wobei z 0 der Folgezustand ist, a0i gibt den Buchstaben an, der auf das i-te Band gedruckt
wird und σi regelt das Verhalten des i-ten Kopfes, σ i ∈ {R, L, 0} mit
R ein Feld nach rechts,
L ein Feld nach links,
0 Kopf bleibt auf dem Feld.
Damit die Turing-Maschine korrekt arbeiten kann, muß für jede Kombination von Zuständen
(mit Ausnahme des Stop-Zustands z1 ) und gelesenen Buchstaben ein Befehl vorhanden
sein, was die Programmierung ziemlich mühsam macht.
18
Die Turing-Maschine beginnt mit dem Zustand z 0 und hält an, wenn der Zustand z1
erreicht wird.
Beispiel Eine Turing-Maschine mit einem Band soll zu einer auf dem Band in Dualdarstellung stehenden natürlichen Zahl eine 1 addieren. Der Kopf steht beim Start auf dem ersten
Symbol der Zahl (von links) und soll beim Stop auf dem ersten Symbol des Resultates
stehen.
*
*
1
0
1
1
0
0
*
*
*
*
Wir konstruieren die Turing-Maschine so, daß der Kopf zunächst nach rechts bis zum
Wortende läuft. Beim Lauf zurück nach links wird eine 1 addiert. Die Bedeutung der
Zustände:
z0
–
Start, Bewegung nach rechts
z1
–
Stop
z2
–
Übertrag 0
z3
–
Übertrag 1
Das Programm sieht dann so aus:
z0 1 → z0 1R
z2 1 →
z0 ∗ → z3 ∗L
z2 ∗ → z1 ∗R
z0 0 → z0 0R
4.3
z2 0 →
z2 1L
z2 0L
z3 1 → z3 0L
z3 0 → z2 1L
z3 ∗ →
z1 10
Die HTML-Turing-Maschine
Unter der Adresse
http://theoretische.informatik.uni-wuerzburg.de/sonstiges/TM/interpreter.html
kann man die Turing-Maschine auch praktisch ausprobieren. Das Alphabet und die Namen
der Zustände (außer z0 , z1 ) darf man sich beliebig vorgeben, das Leersymbol wird mit ” ”
bezeichnet.
Gibt man ein Wort auf das erste Band (ein Wort darf kein Leerzeichen enthalten), so
liefert die Turingmaschine ein Ergebniswort, wenn:
1. Die Turing-Maschine kommt nach endlich vielen Schritten zum Stehen. Danach:
2. Das erste Band enthält genau ein Wort (also keine Leersymbole dazwischen), die übrigen Bänder sind leer.
3. Der Kopf des ersten Bandes steht auf dem ersten Buchstaben (also links) des Ergebnisworts.
Wir können eine solche Turing-Maschine als Funktion f auffassen, die auf einer Menge von
Wörtern definiert ist und jedes dieser Wörter auf das zugehörige Ergebniswort abbildet.
19
Als Beispiel geben wir ein Programm über dem Alphabet {a, b} zur Konvertierung
einer Zeichenfolge:
(z0,a) -> (z0,b,R)
(z0,b) -> (z0,a,R)
(z0, ) -> (z2, ,L)
(z2,a) -> (z2,a,L)
(z2,b) -> (z2,b,L)
(z2, ) -> (z1, ,R)
Die Befehle dürfen keine Leerzeichen enthalten.
4.4
Entscheidbarkeit
Man kann sich die Arbeit mit Turing-Maschinen durch die folgenden Prinzipien erleichtern:
• Jede k-Band-Turing-Maschine ist zu einer 1-Band-Maschine äquivalent. Genauer gibt
es zu einer k-Band-Maschine eine 1-Band-Maschine, die bei jeder Eingabe das gleiche
Ergebnis liefert.
• Es gibt eine Turing-Maschine, die eine natürliche Zahl in Primfaktoren zerlegen kann.
Damit kann die im ersten Abschnitt beschriebene Gödelisierung von einer TuringMaschine vorgenommen sowie das gödelisierte Wort durch eine Turing-Maschine
entschlüsselt werden. Daher ist es ausreichend, nur das Alphabet {1} zu betrachten.
Eine natürliche Zahl n wird dann durch n-maliges Schreiben der 1 dargestellt.
Sei L eine Menge von Wörtern (das Alphabet ist immer fest). L heißt entscheidbar,
wenn es eine Turing-Maschine gibt, die folgendes leistet: Nach Eingabe eines beliebigen
Wortes auf das erste Band bleibt die Turing-Maschine nach endlich vielen Schritten stehen
mit dem Kopf auf einem beliebigen Buchstaben, wenn das Wort zu L gehört bzw. auf dem
Leerzeichen, wenn es nicht zu L gehört. Auf diese Weise ”entscheidet” die Maschine über
die Zugehörigkeit des Eingabewortes zu L. Aufgrund des oben gesagten genügt das Alphabet {1} für diese Betrachtung. Das Entscheidbarkeitsproblem ist daher äquivalent zur
Endscheidbarkeit, ob eine Menge natürlicher Zahlen entscheidbar ist. Es gibt überabzählbar viele solcher Mengen, aber nur abzählbar viele Turing-Maschinen, daher werden die
”meisten” dieser Mengen nicht entscheidbar sein.
Wir können jeder Turing-Maschine eine Gödelnummer zuordnen. Wie oben dargestellt
ist es ausreichend, eine 1-Band-Maschine über dem Alphabet {1} vorauszusetzen. Wir
ergänzen dieses Alphabet um die Zustände der Maschine und eventuell Sonderzeichen,
z.B. {1, z0 , . . . , zm , (, ), →). Damit können wir die Befehlsliste hintereinanderschreiben und
Gödelisieren. Wir bezeichnen diese Zahl als Maschinenzahl N T der Turing-Maschine T .
Eine geeignete Turing-Maschine kann dann entscheiden, ob eine natürliche Zahl überhaupt
eine Turing-Maschine darstellt und in diesem Fall die Befehlsliste rekonstruieren.
20
Das Alphabet sei jetzt immer {1}. Wir hatten eine Menge L ⊂
wenn es eine Turing-Maschine TL gibt mit
entscheidbar genannt,
l ∈ L ⇔ TL bleibt nach Eingabe von l auf 1 stehen.
l∈
/ L ⇔ TL bleibt nach Eingabe von l auf ∗ stehen.
Sei nun
L = {l ∈
: l = NT ist eine Maschinenzahl und die zugehörige Turing-Maschine T
stoppt nach Eingabe von NT auf ∗}
Angenommen, L wäre entscheidbar. Dann gibt es eine Turing-Maschine T 0 , die nur nach
Eingabe von l ∈ L auf 1 stehen bleibt, sonst auf ∗. Aber was macht T 0 bei Eingabe von
NT 0 ? Bleibt sie auf ∗ stehen, so ist NT 0 ∈ l, was T 0 gerade verneint. Stoppt sie dagegen
auf 1, so ist NT 0 ∈
/ L; durch ihr Stoppen auf 1 behauptet sie aber gerade, daß N T 0 ∈ L.
Eine solche Maschine gibt es daher nicht. Damit ist der Nachweis von l ∈ L eine formale
Fragestellung, die nicht formal beantwortet werden kann.
Der Widerspruch wird mit einem Argument hergeleitet, das schon im Altertum als
Antinomie des Lügners bekannt war: ”Ein Kreter sagt, daß alle Kreter lügen”. Diese Antinomie ist allerdings nicht korrekt (warum?), man kann sie aber wasserdicht machen:
”Der Satz, den ich gerade sage, ist falsch”. Ist dieser Satz richtig, so behauptet er, daß er
falsch ist. Wäre er aber falsch, so behauptet er, daß er richtig ist. Man kann diesem Satz
keinen Wahrheitswert zuordnen, weil er selbstbezüglich ist. Im obigen Beweis wird die
Selbstbezüglichkeit erst herbeigeführt, indem man die Gesamtheit der Turing-Maschinen
betrachtet, die gesuchte Maschine muß sich daher unter diesen befinden. Insofern ist die
Schlußweise doch etwas komplizierter als die Lügner-Antinomie und wird Cantorsches
Diagonalverfahren genannt. Man kann damit auch zeigen daß die reellen Zahlen mächtiger sind als die natürlichen Zahlen oder allgemeiner, daß die Potenzmenge einer Menge
mächtiger als die Menge selber ist.
Gegen diese Betrachtungen kann man einwenden, daß wir von einem sehr eingeschränkten Begriff der Entscheidbarkeit, nämlich mit Hilfe von Turing-Maschinen, ausgegangen
sind. Dieser Einwand ist mathematisch nicht zu widerlegen, man muß aber bedenken,
daß es verschiedene Zugänge zur Berechenbarkeit gibt, die allesamt äquivalent sind. Die
Turing-Maschine kann sogar mehr als ein in einer beliebigen Sprache geschriebenes Computerprogramm und zwar deshalb, weil die Turing-Maschine mit einem unendlich langen
Band versehen ist, was man als einen potentiell unendlich großen externen Speicher ansehen kann, über den wegen der Endlichkeit des Universums ein normaler Rechner nicht
verfügt.
Präsenzaufgaben
Bei den Aufgaben wird immer das Alphabet {1} verwendet.
1. Skizzieren Sie die 1-Band-Turing-Maschine, die angesetzt auf den ersten Buchstaben
des Wortes w (das ist nur eine Folge von Einsen), dieses Wort kopiert. Bei Eingabe ist das
Band von der Form . . . ∗ ∗11 . . . 11 ∗ ∗ . . ., nach dem Stop der Maschine ist es
. . . ∗ ∗11 . . . 11 ∗ 11 . . . 11 ∗ ∗ . . ..
2. (Der fleißige Biber) Konstruieren Sie eine 1-Band-Maschine, die neben z 0 , z1 noch 2
(3) weitere Zustände besitzt und aufgesetzt auf das leere Band möglichst viele Einser
produziert und dann stoppt.
21
Der nächste Mathe-Samstag findet am
18. Februar 2006, 9–12 Uhr
statt.
Die Mathe-Samstage im Internet:
http://ifamus.mathematik.uni-wuerzburg.de/˜dobro/sam.html
Herunterladen