TIA: Turingmaschinen, Bandmaschinen und berechenbare Wortfunktionen (Lernziele KE3, Update II)
Update 3: Korrektur nach Einwand von Phil. Finde ich super, dass Ihr nach fast 3 Jahren immer noch Fehler aufspürt und in den Kommentaren helft, die zu entfernen. Danke!
Update 2: Bitte Kommentar von Steve beachten. Grafik habe ich nun ersetzt (Marke 9 hinzugefügt), aber die Punkte für die "Endlosigkeit" der Bänder in den Beispielen müsst Ihr euch noch dazu denken. Auf die habe ich der Übersichtlichkeit halber (ja, nur der Übersichtlichkeit wegen! Gegen den Einwand, dass meine Schreibfaulheit daran Schuld wäre, wehre ich mich entschieden(!)) in den Beispielen verzichtet 😉
Update: Flussdiagramm Lernziel 2 abgeändert. Danke Basti!
Nun kommen wir zu den Turing- und Bandmaschinen.
Wir nähren uns also der Essenz des ersten Teils der theoretischen Informatik. Die folgenden Beiträge wurden für diese Kurseinheit bereits erstellt und sind in den passenden Lernzielen entsprechend verlinkt.
Ich empfehle daher sich einfach mal entlang dieses Beitrags zu hangeln und die Details dann entsprechen der Verlinkung aus dem anderen Beitrag zu holen.
Lernziel 1
Erläuterung der Definition einer Turingmaschine
Das, was im oben verlinkten Beitrag steht, fassen wir hier noch einmal kurz zusammen, da wir dort nur die Einbandmaschine im Detail beschrieben haben.
Die Turingmaschine (Mehrbandmaschine) ist definiert als:
- Das der Turingmaschine ist unser Flussdiagramm
- sind unsere beliebig langen Worte über dem Alphabet , welche später auf die Bänder geschrieben werden.
- Die Turingmaschine operiert auf unendlichen Folge von Bändern als Datenspeicher mit dem darauf verwendeten Arbeitsalphabet .
- Die Turingmaschine hat folgende Eingabecodierung: , definiert als
Das bedeutet nichts anderes, als dass wir jedes Eingabewort auf jeweils ein Band schreiben und alle anderen Bänder leer sind.
Beispiel:
Initial steht also der Lesekopf über dem ersten Blank.- Die Turingmaschine hat folgende Ausgabecodierung : das längste Wort auf Band , welches direkt links vom Lesekopf steht und nur Zeichen aus dem Alphabet beinhaltet. Lesen wir die Ausgabe also zurück, so stoppen wir beim ; die bis dahin gelesenen Zeichen sind unsere Ausgabe.
- Die Turingmaschine besteht nur aus folgenden Befehlen:
- Lesekopf auf Band ein Feld nach links
- Lesekopf auf Band ein Feld nach rechts
- Schreibe auf Band das Zeichen unter den Kopf
- Teste auf Band , ob das Zeichen unter dem Kopf steht
Achtung:
sollte bei einer Links- oder Rechtsbewegung dann plötzlich ein unter dem Lesekopf stehen, wird ein Blank daraus, da nicht zum Alphabet gehört.Der Einwand vom Phil in den Kommentaren ist berechtigt. gehört nicht zum Alphabet und wird nur für die Darstellung als Tripel benutzt (siehe letzter Kommentar).
Ist doch nicht so schwer, oder. Beispiel?
Beispiel: Turingmaschine
Alphabet , besteht nur aus oder
Anzahl der Arbeitsbänder und somit auch unserer Worte:
Arbeitsalphbet , dass aus unserem und einem Blank besteht.
Die oben definierte Eingabecodierung
Die oben definierte Ausgabecodierung
Und unserem Flussdiagramm :
Download: JFLAP-Datei Turing-Maschine 111.
Sieht etwas kompliziert aus, ist es aber nicht. Sicherlich könnte man das alles auch etwas einfacher gestalten.
Was tut die Maschine? Es zählt die Einsen, die auf den Bändern und auf gleicher Position stehen und schreibt dann eine auf Band . Bei jedem Schritt werden die Zeichen auf Band und jedoch auch entfernt.
Würden wir die Maschine also mit und starten, so hätten wir am Ende die Ausgabe auf Ausgabeband . Würden wir als Eingabe aber und wählen, so wäre das Ausgabeband leer.
Formal ausgedrückt bedeutet es
Ihr kennt die -Notation ja bereits, aber dennoch zur Auffrischung: es bedeutet, dass ausgehend vom Marker mit einem leeren Ausgabeband und auf Band , sowie auf Band , wir am Ende in Marker (unsere -Marke) landen und dabei folgende Bandbelegung haben: auf Band steht eine , Band und sind leer.
Und so sieht der 2. Fall ( und ) aus:
Es befand sich keine auf der gleichen Position auf beiden Bändern, so ist Band am Ende der Berechnung ebenfalls leer.
Fertig!
Antwort zum Lernziel: das Flussdiagramm einer Turingmaschine besteht aus vier verschiedenen Befehlen (gehe links/rechts, schreibe Zeichen , prüfe ob Zeichen auf dem Band steht), die auf den Bändern ausgeführt werden können. Die initiale Belegung belegt immer nur Band , wobei das Ausgabeband leer bleibt und erst während der Berechnung beschrieben wird (oder eben nicht).
Die Worte, die auf den Bändern stehen können, sind über dem Alphabet gebildet. Zusätzlich zu den Zeichen aus wird auch noch das Blank-Zeichen im Arbeitsalphabet auf den Bändern verwendet.
Lernziel 2
Nachweis der Berechenbarkeit einfacher Wortfunktionen
Auch ist in diesem Beitrag bereits beschrieben, wie man das nachweisen kann. Das Verfahren ist ähnlich dem Beispiel für die Einzelschrittfunktion und dem Beweis der Addition mit einer Registermaschine, wo man Behauptungen aufstellt und diese durch vollständige Induktion beweist.
Formal ausgedrückt müssen wir zeigen, dass eine Wortfunktion dann berechenbar ist wenn es eine Turingmaschine gibt, die sie berechnet.
Eine Wortfunktion heißt berechenbar, gdw. es eine Turingmaschine gibt mit .
Beispiel:
Wir haben als Ausgabe der Wortfunktion einfach nur die Anzahl der Einsen aus dem Wort .
Um zu beweisen, dass die berechenbar ist, müssen wir also eine Turingmaschine angeben, die den gleichen Ausgabewert hat wie unsere Funktion, so dass am Ende eben gilt: .
Das ist unser Flussdiagramm für diese äußerst komplizierte Konstruktion:
Und nun stellen wir uns die Frage, was wir beweisen wollen:
Behauptung: Für alle gilt
Wir landen also beider Eingabe von nach endlich vielen Schritten in Marker und haben auf dem Ausgabeband die Anzahl der Einsen von , während auf Band links vom Kopf unsere Eingabe steht, die wir gelesen haben.
Beweis
, d.h. wir zeigen die Korrektheit über die Länge unserer Eingabe .
: dabei ist die Eingabe leer, d.h. und wir landen direkt in
: nun nehmen wir an, dass wir für alle Worte der Länge über , d.h. für alle die obige Behauptung gezeigt haben.
Jetzt können wir einen Schritt weiter gehen und setzen. Dann gibt es ein und ein aus mit mit
wenn und
wenn .
Damit gilt die Behauptung für alle . Und wir haben bewiesen.
Warum ist das so?
Es sieht zwar etwas kompliziert aus, ist es aber nicht wirklich. Schauen wir uns den ersten Fall doch mal genauer an:
Erklärung:
Wir haben ein , d.h. unser mit der Länge endet entweder mit einer oder einer . Mehr Möglichkeiten haben wir nicht, denn das sind die einzigen Zeichen in unserem Alphabet .
Nehmen wir unser , d.h. es ist um ein Zeichen länger, ändert sich an der Anzahl der Möglichkeiten etwas? Nein, unser "" endet immer noch entweder mit einer oder einer .
Jetzt kommt unsere Fallunterscheidung ins Spiel mit einem Zeichen aus , dass nur oder sein kann. Damit ist in jedem Fall , denn und .
Wie sieht denn unsere Ausgabe am Ende aus wenn wir haben? Auf dem Ausgabeband steht dann die Anzahl der Einsen von und , also . Und bei ? Genau! Nur die Anzahl der Einsen von , genau .
Wenn wir es nun genau nehmen, gilt noch nicht, denn
, während
Was tun? Hier hilft unsere Ausgabecodierung (Definition siehe oben), denn .
Jetzt erst gilt !
Antwort zum Lernziel: um eine Wortfunktion als berechenbar nachzuweisen, müssen wir eine Turingmaschine angeben, die sie berechnet. Der formale Nachweis wird mittels vollständiger Induktion erbracht, indem man zeigt, dass für alle Eingaben das passende Ergebnis am Ende der Berechnung (unser geliebtes Zeichen ) auf dem Ausgabeband steht.
Lernziel 3
Erläuterung der Definition einer Bandmaschine
Hier hatten wir auch bereits in diesem Beitrag Vorarbeit geleistet. Der Unterschied zu Turingmaschinen mit Arbeitsbändern ist nicht groß. Wir passen die Ein- und Ausgabecodierung an und ändern die Befehle so ab, dass sie nur auf Band arbeiten.
Aus der Eingabecodierung für Mehrbandmaschinen mit
wird ganz einfach
- .
Und nun zu den Befehlen:
Antwort zum Lernziel: die Befehle einer Turingmaschine (Mehrband) behalten auch bei Bandmachinen (Einband) ihre Gültigkeit. Nur arbeiten diese statt auf (Ausgabeband + Arbeitsbänder) Bändern nun auf einem einzigen Band .
Ebenso verhält es sich mit der Eingabecodierung, die angepasst werden muss. Für die Ausgabecodierung ändert sich nichts, es bleibt auf Band als das längste Wort links vom Lesekopf.
Lernziel 4
Erläuterung der Grundidee des Beweises Turing-berechenbar = Band-berechenbar
Das ist Turings ursprüngliche Konstruktion.
Wenn wir doch schon so schön mit Mehrbandmaschinen arbeiten könne, wozu dann Einband? Weil beide Maschinen von der Berechnungsstärke äquivalent sind und letztere weniger kompliziert sind. Persönlich finde ich, dass man mit den Mehrbandmaschinen einfacher hantieren kann, aber sei es drum.
Die Grundidee des Beweises habe ich bereits hier beschrieben, so dass wir uns nur noch um das Lernziel kümmern müssen. Formal ausgedrückt lässt sich festhalten:
Zu jeder Einbandmaschine gibt es eine Mehrbandmaschine mit dem gleichen Bandalphabet wie , so dass gilt: .
Zu jeder Mehrbandmaschine gibt es eine Einbandmaschine , so dass gilt: .
Damit haben wir uns auch schon enttarnt: wir können die Mehrbandmaschine durch ein vergrößertes Bandaphabet simulieren. Anders herum bleibt das Bandalphabet natürlich gleich, denn es ist ja bereits groß.
Antwort zum Lernziel: die Simulation der Mehrband- in einer Einbandmaschine erfolgt auf Basis eines vergrößerten Alphabets für die Darstellung der Position der Leseköpfe auf den simulierten Bändern.
Damit erhalten wir "Spuren" auf dem einen Band für die eig. Eingabe und zusätzliche Spuren für die Position der Leseköpfe um die getrennt beweglichen Leseköpfe auf den vormals Spuren zu simulieren.
Diese neuen Symbole, die wir für die Markierung der Leseköpfe brauchen werden Hilfssymbole genannt und bereichern unser Arbeitsalphabet wenn wir sie nicht durch eine Codierung eliminiert haben (siehe nächstes Lernziel).
Lernziel 5
Erläuterung der Grundidee des Beweises, dass man bei Bandmaschinen ohne Hilfssymbole auskommt
Auch hier ist im alten Beitrag die Grundidee bereits beschrieben worden. Ich fasse mich daher sehr schmallippig.
Antwort zum Lernziel: die neuen Hilfssymbole für die simulierte Kopfpositionen der Bänder einer Mehrbandmaschine werden anstatt durch Aufblähen des Arbeitsalphabets mit neuen Zeichen einfach durch eine erweiterte Länge der Wörter über dem alten Arbeitsalphabet codiert.
Dadurch ist es möglich, dass das Bandalphabet einer Einbandmaschine bei bleibt.
Diesen Beitrag habe ich etwas zügig getippt, es könnten sich also ein paar Fehler eingeschlichen haben. Wer etwas sieht: ab damit in die Kommentare. Danke!
Sie können zum Ende springen und ein Kommentar hinterlassen. Pingen ist im Augenblick nicht erlaubt.
Juli 27th, 2013 13:51
Hallo Anton,
sag mal, erreicht man dich auch direkt per E-Mail? Sorry, ich habe keine Möglichkeit gefunden, dich über diesen Blog direkt zu kontaktieren.
Wäre super, wenn du mir mal an [email protected] schreiben könntest.
Bin ja auch gerade dabei, den Kurs vorzubereiten und da wäre ein direkter Kontakt für Fragen sicher ganz gut.
Marco
März 27th, 2014 14:16
Hallo,
ich glaube in dem Flussdiagramm zu Lernziel 2 ist ein Fehler.
Wenn ich die Marken 1,2,3 durchlaufe, dann wird der Lesekopf von Band 1 nicht nach rechts bewegt, was bedeuten würde, wir würden bei einer 1 in unserem Wort immer in einer Endlosschleife hängen. Vielleicht einfach noch 1:R in Marke 3 mit reinpinseln :).
Viele Grüße,
Basti
April 2nd, 2014 10:18
Basti, Du hast Recht. Danke!
Mai 23rd, 2014 15:52
Hallo,
zunächst vielen Dank für dein Blog und Gratulation zur bestandenen Abschlussprüfung.
Ich glaube in dem Flussdiagramm zu Lernziel 1 ist ein Fehler. Wenn der Test in Marke 2 negativ ausfällt, wird anschließend in Marke 8 0:R ausgeführt. Nach meinem Verständnis sollte die Kopfbewegung auf dem Ausgabeband nur nach dem Schreiben, Marke 3, erfolgen.
An manchen Stellen fehlen die Punkte "...", die die unendliche Folge von Bändern darstellen.
-Definition Turingmaschine (Mehrbandmaschine)
EC(k)(x1,...,xk) + Beispiel
-Beispiel
Konfiguration
-Lernziel 2
Behauptung + Beweis, jeweils links der Konfiguration
-Lernziel 3
Eingabecodierung für Mehrbandmaschinen
Viele Grüße
Steve
Mai 23rd, 2014 15:57
Dein Blog hat das Wort spitzeKlammer_Korinthen-Modus_spitzeKlammer vor der Aufzählung geschluckt 😉
Mai 28th, 2014 15:49
Hallo Steve,
Grafik ist korrigiert. Punkte habe ich jetzt mal nicht hinzugefügt, da der ein oder andere Code-Block sonst umgebrochen wird. Es ist jetzt schon schwer das zu lesen 😉
Aber danke für den Einwand. Ich habe am Anfang des Beitrags noch einmal explizit auf den Umstand hingewiesen. Evtl. stolpert der ein oder andere ja auch drüber und wundert sich.
Gruß
Anton
Dezember 14th, 2015 18:24
Hallo und vielen Dank für die tollen Übersichten! Sehr hilfreich, um den Stoff nochmal zu wiederholen.
Sehr unpräzise finde ich allerdings das Folgende: "Achtung: sollte bei einer Links- oder Rechtsbewegung dann plötzlich ein ϵ unter dem Lesekopf stehen, wird ein Blank B daraus, da ϵ nicht zum Alphabet gehört."
ϵ gehört nicht zum Arbeitsalphabet und steht deshalb nicht unter dem Kopf! Wir verwenden das Zeichen nur in unserer Darstellung der Bandinhalte als Tripel (u, v, w), wobei das Band beschriftet ist mit ..BBBBBBBuvwBBBBBBBBB.... Wenn wir nun (ϵ, v, ϵ) als Bandbeschriftung angeben, heißt das, dass das Band wie folgt aussieht: ..BBBBBBBBvBBBBB.., d.h. zwischen unendlich vielen Bs und dem Zeichen v steht nichts, also ist das Zeichen links von v eines der unendlich vielen B's. Gleiches gilt für die rechte Seite.
Vielleicht kannst du das ja noch entsprechend anpassen.
Viele Grüße
Phil
Dezember 16th, 2015 11:08
Hallo Phil, danke. Ist korrigiert.