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