Also irgendwie Zustände, Kantenübergänge. Und dann hat er hier irgendwie dieses Eingabeband,
was ja im Grunde genommen auch beliebig lang war.
Je länger die Eingabe war, desto länger war quasi das Eingabeband.
Und bei der Touring-Maschine sagt man jetzt einfach,
statt dass ich auf diesem Band immer nur ein Symbol lese und nach rechts gehe,
kann ich jetzt auch, wenn ich möchte, nach links gehen.
Das ist die eine Eigenschaft, die man in der Touring-Maschine gibt. Und dann,
das hatten wir beim DFV auch schon mal so angetatscht,
sich zu überlegen, naja,
man kann ja auch den Lesekopf irgendwie in beide Richtungen gehen.
Und dann sagt man hier noch,
ich möchte auf dem Band nicht nur lesen können,
ich will auch schreiben können.
Das sind die einzigen beiden Änderungen. Also ich sage hier
unten auf dem Band nach rechts und links
gehen können und auf dem Band lesen und schreiben können
Jetzt muss man sich noch einmal ganz kurz fragen,
wenn ich auf dem Band nach rechts und links gehen kann,
trotzdem nur so viel wie hier das Eingabewort lang ist oder vielleicht mehr.
Und die Idee da ist, dass man sagt,
das Band ist prinzipiell unendlich lang.
Also ich kann da irgendwie so viel Platz benutzen,
wie ich möchte. Und dann werde ich so mächtig,
dass ich im Grunde genommen alles machen kann,
was jede Beliebige vom Menschen gebastelte Maschine machen kann oder auch was jeder Mensch machen kann.
Warum? So von der Idee her, wenn man sich überlegt,
naja, wenn ein Mensch zum Beispiel schriftlich addiert,
dann schreibt er sich auf dem Blatt Papier,
vorzugsweise eins mit Kästchen, schreibt er sich irgendwie die zwei Zahlen.
Darunter schreibt er sich
die Summe
Jetzt kann man sich erst mal überlegen, als Abstraktion,
statt dass man so ein zweidimensionales Papier hat,
schneidet man das eben in ganz viele Linien und tut das alles hintereinander.
Das sieht ein bisschen behämmert aus, aber ist egal,
dann ist man in dem Modell. Und alles,
was der Mensch dann macht, ist ja sich irgendwie nach
einem vorgegebenen Rezept sich irgendwie zwei Ziffern anzugucken, die zu addieren,
sich vielleicht irgendwie den Übertrag zu merken und dann weiter zu arbeiten im nächsten Schritt.
Und das kann man da auch reinkodieren. Ich gucke mir zwei Ziffern an,
ich schreibe mir irgendwo weiter rechts auf dem Band das Ergebnis hin,
ich scrolle wieder nach links auf dem Band,
nehme die nächsten zwei Ziffern und so weiter.
So prinzipiell von Idee sollte man das auch machen können.
Und kann man tatsächlich auch Deswegen gilt die Touring-Maschine als
so ein Modell oder so ein abstraktes Modell dafür,
was man, Mensch oder Maschine, was alles berechenbar ist.
Umkehrschluss, was eine Touring-Maschine nicht kann, kann auch kein Mensch.
Also die Church-Touring-These werden wir nachher noch mal genauer uns angucken.
Deswegen ist das Modell so bedeutsam,
weil wir im Grunde genommen an einem sehr einfachen formalen Modell,
ich habe ein Band und ich kann irgendwie nach links und rechts gehen und ich kann Buchstaben lesen und schreiben,
kann ich mir Gedanken darüber machen,
was kann ich algorithmisch lösen und wo sind meine Grenzen
Und wir werden später sehen, in der übernächsten Veranstaltung,
dass diese Grenzen hier, also Möglichkeiten haben eine Menge, aber die Grenzen, die treten leider auch schon sehr, sehr früh auf. Also schon so bei Problemen,
wo man sagt, Mensch, das Problem kann ich formulieren,
ich finde, das klingt auch so, dass es wichtig ist,
also nicht sowas wie irgendwie A, hoch, NB,
hoch, ND, hoch, ND, hoch, N, E,
hoch, N, wo man sich dann vielleicht fragt,
naja, so wichtig kann das Problem nicht sein,
sondern so wirklich Probleme, wo man sagt, hey,
das ist ein technisches Problem, das will ich lösen können und boomen, da ist eine Grenze, ich kann es nicht lösen.
Also weder ich noch irgendeine Maschine, die ich bauen kann.
Jetzt ist das natürlich so, deswegen hier auch These,
Das kann man ja schwer beweisen. Ich kann ja nicht beweisen,
dass alle Maschinen, die die Menschen jemals bauen werden,
von der Touring-Maschine simuliert werden können.
Ich kann das nur behaupten. Es ist aber so,
dass sie sich diese These als erstaunlich robust erwiesen hat,
dass also auch alles, was wir uns in letzter Zeit so überlegt haben,
so Multikor-Maschinen, Parallelarchitekturen, verteilte Architekturen, Quantencomputer,
bla bla bla bla, lässt sich alles mit Touring-Maschinen simulieren.
Sprich, wenn ich sage irgendwie, es gibt diese Grenze von der Touring-Maschine,
dass die irgendwas nicht kann, dann weiß ich auch,
all die anderen Modelle können das nicht.
Und das ist eine ziemlich fiese Grenze, werden wir
später sehen
So, das zur Einleitung und zur Motivation für dieses Modell.
Es geht jetzt also wirklich dahin, dass man sagt,
wie bisher wollen wir zur Abstraktion uns mit Sprachen beschäftigen,
also auch wieder gucken, sowas wie auch in BORN und sowas,
aber dann eben auch tatsächlich Funktionen berechnen und Probleme lösen.
Das kann die Touring-Maschine dann. Von der Idee her,
ich kann hier auf dem Eingabeband irgendwie, wie auch immer,
kodierten Grafen geben oder mehrere Zahlen und dann kann sie
damit rechnen und ein Ergebnis ausspucken.
Also das Ergebnis auch aufs Band schreiben. Sowas kann ich
dann formalisieren und dann habe ich im Grunde genommen Algorithmus formalisiert.
Ja, da noch mal kurz, bevor es gleich
zur Definition geht. Wir haben hier diesen Leseschreibkopf,
abgekürzt LSK
Und so wie auch beim DFA tritt er halt in der formalen Beschreibung nicht auf,
ist in der informalen Vorstellung wichtig und tritt nachher auf,
wenn man die Konfigurationsübergänge definiert.
Wenn man definiert, die halt genauso, dass das mit der Vorstellung,
dass da so ein Leseschreibkopf ist, übereinstimmt.
Der ist immer auf dem aktuellen Symbol,
auf dem Band positioniert, kann das Symbol dann irgendwie lesen,
ändern und sich nach links und rechts bewegen.
Das ist so die Idee. Genau, und da
noch das Eingehüllband ist links und rechts hin, unendlich.
Ja, formale Definition. Jetzt kann man sich mal überlegen,
vor aller Definition endliche Zustände will ich wieder haben.
Endliches Eingabealphabet will ich auch wieder haben
Jetzt kann man sich kurz überlegen,
wenn ich so ein endliches Eingabealphabet habe und die Touring-Maschine irgendwie rumrechnen soll,
vielleicht ist das okay, wenn die irgendwie noch mehr Symbole haben kann,
so wie ja auch.
Wenn ihr irgendwie mit dem Blatt Papier rechnet und ihr macht
irgendwo am rechten Rand euch Notizen, vielleicht benutzt ihr da irgendwelche anderen Symbole.
Also will man der Touring-Maschine auch erlauben, hey,
die darf mehr Symbole haben. Was haben wir noch? Über Führungsfunktionen,
da müssen wir jetzt darauf achten,
dass wir den Kopf nach links und rechts bewegen können und dass wir ein Symbol schreiben können,
Staatszustand, Endzustände und sind wir auch schon fast fertig.
So sieht es aus,
ein Sechs-Dubel
Endliche Mengen von Zuständen. Endliches Alphabet von Eingabesymbolen,
das heißt ein Wort, ein Eingabewort besteht aus Symbolen des Eingabealphabets,
genauso wie bei DFAS auch.
Dann haben wir hier zusätzlich dieses endlich Alphabet von Bandsymbolen,
dass alle Eingabesymbole enthält. Und hier steht sogar schon echt
größer, das wird gleich mit dem letzten Item klar.
Ich will nämlich auf dem Band die Möglichkeit haben zu sagen,
diese Zelle des Bandes ist gerade leer.
Und damit ich das formalisieren kann, brauche ich ein Symbol,
das bei den Bandsymbolen dabei ist, aber nicht beim Eingabelalphabet.
Wenn ich zum Beispiel sagen will,
das Eingabewort ist AAB, so,
dann steht da AB und links und rechts davon ist ja
das Band leer und um das auszudrücken,
brauche ich noch
ein Symbol
Genau, und hier noch sieht man auch schon irgendwie Gamma geschnitten,
Set soll leer sein. Also es soll keinen Zustand geben,
der auch als Bandsymbol benutzt werden kann oder so.
Das hat nachher den Vorteil bei der Konfiguration, dass man
sich ein Wort, das auf dem Band steht, hinschreiben kann.
Und an der Stelle, wo man den Zustand hinschreibt,
da steht der Leseschreibkopf. Sehen wir dann auch gleich im
Beispiel. Aber erstmal so zu merken, endliche Zustände,
endliches Eingabealphabet und endliche Bandsymbole, das sind halt mehr.
Überführungsfunktionen, abhängig vom Zustand, in dem ich bin und vom Bandsymbol,
das ich lese, also abhängig vom Zustand Set und vom Bandsymbol aus Gamma, das ich lese.
Und jetzt hier schreibe ich halt was Neues hin,
also schreibe ein neues Bandsymbol dahin.
Wenn ich das Gleiche dahin schreibe, dann passiert da nichts.
Also wenn da ein X stand und ich schreibe ein X hin,
das halt nichts passiert. Dann hier LR und H für
Leseschreibkopf bewegt sich nach links, bewegt sich nach rechts oder hält seine Position.
Das hier ist nicht zwingend nötig mit den Positionen halten,
das könnte man auch durch die anderen beiden simulieren,
indem man sagt, wenn ich nach links gehe,
dann gehe ich in so einen Sonderzustand,
mit dem ich sofort wieder nach rechts gehe,
dann habe ich das Halten simuliert,
aber es ist ein bisschen einfacher, damit zu arbeiten und Nachfolgezustand.
Staatszustand, Mengen von Endzuständen und diese spezielle Gattersymbol für das Leerefeld,
das ist eben das eine Symbol,
was auf jeden Fall ein Gamma drin sein soll und nicht in Sigma.
Wenn ich also in Sigma sowas machen möchte wie keine Ahnung,
Strings übergeben, wo auch ein Lehrsymbol dabei sein soll,
dann nehme ich für das Lehrsymbol eben irgendwie wieder ein spezielles Symbol.
Dass das einfach dafür da wirklich aussagen zu können,
hier steht noch nichts auf dem Band,
nicht mal nicht mal, wie soll man es aussuchen,
nicht mal das Symbol für leer im String oder irgendwie sowas.
Das ist ja in der, wenn ihr programmiert ist,
das ja auch, hat ja auch einen bestimmten Aski-Code. Ja,
jetzt kann man hier noch kurzer Exkurs für diese Überführungsfunktion,
kann man auch wieder eine Kantenrelation einführen,
wenn man das möchte, Zustände, indem ich bin,
Symbol, dass ich lese, Symbol, dass ich schreibe,
Bewegung,
die ich mache und zuständig,
indem ich gehe
Und im deterministischen Fall zu jedem Pärchen,
vorne gibt es genau Eintriebel oder maximal Eintriebel hinten.
Das als Exkurs, dass man das auch machen kann.
Wir arbeiten jetzt gleich nur mit dieser Überführungsfunktion. So,
da nochmal zusammengefasst, was gemeint ist. Wenn ich also irgendwo bin,
ich bin jetzt in irgendeinem Zustand und der Leseschreibkopf ist gerade über so ein Symbol X,
dann gucke ich halt nach, was sagt mir die Überführungsfunktion,
was soll ich jetzt machen, was ist Delta ZX.
Und wenn er jetzt steht X-Strich B, Z-Strich,
dann ist gemeint, ich bin im Zustand Z,
lese Schreibkopf gerade über dem Symbol X. X
wird durch X-Strich überschrieben
Kann auch das gleiche Symbol sein, aber erstmal wird es
durch den Strich überschrieben. Und dann wird der Lese-Schreibkopf,
je nachdem, was die Bewegung eben sagt, bewegt.
Nach links, nach rechts oder er hält die Position und
die Touring-Maschine wechselt in diesen Zustand Z-Strich.
Und das ist der Ablauf. Also fast so wie beim DFA,
nur dass wir eben auch schreiben können und nach links gehen können.
Da schon mal für später dieses, wenn ich hier sage,
der Lese-Schreibkopf hält seine Position. Damit ist nicht gemeint,
dass die Touring-Maschine anhält, sondern nur,
dass der Leseschreibkopf sich eben nicht bewegt,
dass der in seiner Position
gerade stehen bleibt
Nochmal zusammengefasst, endlich viele Zustände, Eingabealphabet,
größeres Bandalphabet mit weiteren Symbolen, für Nebenrechnungen, was auch immer.
Eingabeband ist beidseitig unendlich und zu Anfang steht das Eingabewort auf dem Band.
Fragen soweit? Frank, ja. Ob wir
immer nur einen Schritt nach links oder rechts machen können,
Aber du könntest dir, wenn du zum Beispiel, nehmen wir an,
du liest eine Zahl zwischen 0 und 9 und du weißt,
genauso viele Schritte will ich jetzt nach rechts machen oder so.
Dann kannst du ja im Grunde genommen einen Zustand einführen,
wo du dir merkst, jetzt muss ich noch neun Schritte machen,
jetzt muss ich noch acht Schritte machen,
jetzt muss ich noch sieben Schritte machen, sechs und vier.
Und die Zustände sind für nichts anderes da,
außer Position Zustand behalten oder irgendwie nach rechts gehen oder sowas.
Würde man dann später so machen, dass man sagt,
naja, es gibt eine Touring-Maschine,
also ich kann die Touring-Maschine so manipulieren, dass sie das machen kann.
Das ist im Grunde genommen eine Subroutine und dann sagt man,
das passiert hier an dieser Stelle neunmal nach rechts gehen,
fertig.
Sonst noch
Gut. Dann Konfiguration einführen, David jetzt auch wichtig,
jetzt kommt die Dynamik rein,
bisher hatten wir es nur statisch und wir haben die Dynamik halt versucht zu beschreiben,
jetzt fassen wir die Dynamik formal und hier wird jetzt wichtig,
warum Gamma und Z nichts gemeinsam haben,
also warum der Schnitt von Gamma und Z leer ist,
damit man eben, wenn man jetzt so ein Wort hat,
hier aus Gammastern, Z Gammastern,
dann kann man eindeutig die Position finden, wo der Zustand ist,
weil das eben kein Bandsymbol sein kann,
also das ist der Zustand.
Das ist ein Wort,
wollen wir Konfiguration nennen
Und die Idee ist, wenn ich das fordere oder das Wort,
was links von Z steht und das Wort,
was rechts von Z steht, wenn ich das nehme und zusammenschreibe,
dann habe ich den aktuellen Bandinhalt.
Z ist der Zustand, in dem ich bin.
Und der Leseschreibkopf ist eben über dem ersten Symbol des rechten Wortes.
Das ist die Idee. Also bei so einem Wort WUZV,
Z ist der Zustand, UV sind die Bandwörter,
ist eben die Touring-Maschine im Zustand Z,
die Bandinschrift des UV
Und links und rechts von U&V sind halt nur noch Blank-Symbole.
Das sind nur noch solche Gatter. Und das erste Symbol von V ist unter dem Leseschreibkopf. Und das,
was hier jetzt so in Klammern kommt,
das ist nur noch so ein bisschen,
um das formal ganz korrekt zu machen,
wenn V eben das leere Wort ist, also Lamda,
dann kann Lamda ja nicht unter dem Leseschreibkopf sein,
sondern das bedeutet eben,
dass rechts von der aktuellen Leseschreibkopf-Position nichts mehr steht,
außer Blanksymbude, das heißt, unter dem diese Schreibkopf ist das Blank-Symbol.
Und wenn V eben nicht Lamda ist,
dann ist V eben streng genommen nicht einfach nur aus Gamma Stern,
sondern aus dieser Menge hier,
sprich ein Wort aus Gamma Stern und das weiteste Rechtstehende
ist dann eben
kein Blank
Und ebenso bei, uh, das weitest Linkstehende,
kein Blank. Sprich, wenn man eine Konfiguration hat,
schreibt man sich den Zustand auf und links und rechts so
viel bis links und rechts davon nur noch Blank-Symbole kommen.
Dann hat man die Konfiguration, in der die Touring-Maschine ist, genauer fast. Beispiel dazu,
um das ein bisschen klarer zu machen hier,
das ist eine Touring-Maschine,
die kannten hier die Leuten an,
wenn ich hier beispielsweise den Zustand Z0 bin und ein kleines A lese,
dann mache ich daraus ein großes X,
bewege den Leseschreibkopf nach rechts
und mache die Zustandswechsel nach
Und wenn ich in Z1 bin, dann kann ich ein B lesen,
schreibt das B aber auch wieder hin,
also habe mich da sozusagen nichts getan,
bewegt den Leseschreibkopf nach rechts und gehe in diesen Zustand Z2. Start- und Endzustände genauso wie beim DFA markiert,
diese Kante hier, die keinen Ursprung hat,
die markiert den Startzustand, seit null ist der Startzustand,
doppelte Kreise markieren Endzustände, einziger Endzustand Z2.
Und jetzt startet man in der Konfiguration hier immer,
also Startzustand, gefolgt von dem Eingabewort.
Links von dem Z0 stehen noch beliebig viele Gatter,
so die notiert man aber halt nicht mit
Weil A-A-B ist gerade das Eingabewort links davon, ist alles Gatter,
rechts davon ist alles Gatter, weil das Band halt komplett leer ist.
Und jetzt kann man halt gucken, wenn ich also in Z0
bin und der lese Schreibkopf ist also gerade über dem A,
dann gibt es hier halt diese eine Kante,
die ich entlang gehen kann.
Dann wird aus dem A und X, ich behalte den Zustand bei,
aber ich bewege die in diese Schreibkopf ein nach rechts.
Das wird dann so symbolisiert hier bei den Konfirmationsübergängen,
dass das Z0 sich eben einfällt nach rechts bewegt.
Jetzt weiß ich halt, der lese Schreibkopf ist als nächstes
direkt über dem Arm. Jetzt mache ich das wieder,
wieder das A durch den X ersetzen,
Z0 ein nach rechts schieben,
weil der lese Schreibkopf sich eben bewegt und
keinen Zustandswechsel machen
Da gibt es hier wieder eine Kante. Wir lesen,
wir schreiben und nach rechts gehen. Und jetzt habe ich
quasi das ganze Eingabewort gelesen und bin mit dem Leseschreibkopf über
dem nächsten Symbol, was nach dem B kommt,
was eben dieses Blank-Symbol ist für leeres Bandfeld.
Das notiere ich mir hier noch mit diesem Gutter. Dann wird hier gesagt,
wenn man jetzt einen Gutter lesen soll, dann schreibt man das auch,
bewegt ihn diese Schreibkopf nach links und wechselt in den Zustand Z1.
Also muss hier aus dem Z0 in Z1
werden und ich musste in diese Schreibkopf nach links bewegen.
Das heißt, ich gehe wieder vor das B.
Da bin ich da
Und zu guter Letzt, jetzt bin ich hier in Z1,
jetzt kann ich irgendwie das B lesen, wir schreiben,
mich nach rechts bewegen, dann bin ich da.
Und später werden wir sagen, weil ich jetzt in
einem Endzustand bin, will ich das ursprüngliche Eingabewort akzeptieren.
Da kommen wir dann gleich nochmal zu. Ich will also,
wenn ich irgendwann in so einen Endzustand komme, dann will ich dieses ursprüngliche Eingabewort,
zwei As und ein B hier, das will ich akzeptieren. Nicht das, was ich da so umgerechnet habe und umgewandelt habe, sondern das ursprüngliche Eingabewort. So,
jetzt sieht man hier schon so diese Konfigurationsübergänge,
das wird gleich ziemlich hässlich, das formal zu definieren,
von der Idee her ist ist aber nicht sonderlich schwierig eigentlich,
sondern man guckt halt,
wo steht dieses, der Zustand gerade und das Symbol,
was direkt rechts von dem Zustand ist, das ist eben das Bandsymbol,
was ich gerade lese und dann guckt man eben bei den Kanten des Zustands,
in dem man gerade ist, gibt es da eine Kante,
die dieses Symbol lesen soll, falls ja,
gehe ich die Kante halt entlang, dann mache ich irgendwie,
schreibe da ein neues Symbol hin,
bewege den lese Schreibkopf entsprechend und mache den Zustandswechsel.
Also das informal auszuführen ist relativ einfach,
das jetzt formal zu fassen, ist deswegen schwer,
weil man immer die Fälle mit abdecken will, wenn ich irgendwie,
wenn ich beispielsweise hier das B lösche und dann nach rechts gehe,
dann steht da irgendwie XX, Gatter und dann kommt der Zustand,
wenn ich es einfach nur lösche,
dann würde da XX und dann eigentlich nichts mehr stehen,
dann soll da eigentlich auch kein Gatter mehr stehen.
Also dadurch, dass diese Konfiguration ständig neu geschrieben werden müssen,
damit man eben nicht links und rechts irgendwie zu viel stehen hat,
das macht die Definition schwierig. Wenn man das jetzt also,
wir gucken uns das einmal kurz zwei Folien lang an,
braucht ihr jetzt aber nicht so super verinnerlichen, sondern wenn ihr damit arbeiten könnt,
dann ist das an der Stelle völlig in Ordnung.
Nur damit ihr es einmal seht, stets den relevanten Teil,
das hier sind zum Beispiel typische Konfigurationen, das macht auch Sinn,
Aber eben auch die ganzen Dinger hier.
Hier sind diese drei Gatter deswegen relevant,
weil er lese Schreibkopf über dem ersten Gatter von Dreien ist.
Also da muss ich die alle dazuschreiben, weil ich weiß,
prinzipiell sind da jetzt drei Felder frei, wo ich was machen kann.
Hier sind die Gatter auch wichtig, weil es halt ein Unterschied ist,
ob ich in dem Wort A-Quadrat B hoch 3,
ob ich das auf dem Band habe oder ob ich das Wort A-Quadrat 2 Blanks B hoch 3 habe, macht halt einen Unterschied.
Hier genauso, hier auch. Und was man jetzt in der formalen Definition macht,
ist, dass man eben darauf achtet,
dass hier rechts von sowas und wo habe ich das noch irgendwo,
hier auch, da auch rechts,
dass diese Gatter da eben eigentlich nicht mehr stehen sollen,
sondern ich nur den Bandinhalt haben will von Letztes Nicht-Blank-Symbol auf der linken Seite bis Letztes Nicht-Blank-Symbol auf der rechten Seite,
das will ich haben.
Wir wollen das aber trotzdem so machen, dass in Fällen,
wo wir das angenehm finden, wie hier rechts und links, quasi beliebig viele Gatter noch dazuschreiben können.
Das wird nicht richtig durch die Definition nehmen erfasst,
aber für die Notation ist das angenehm, also fürs Verständnis,
nicht für die Notation, fürs Verständnis ist es angenehm,
wenn man da irgendwie beliebig viele Gatter noch dazuschreiben kann.
Deswegen da nochmal. Aber gucken wir uns einmal die formale Definition an. Bumm. Hier,
Schrittrelation definieren, und zwar so, dass man sagt,
ich komme von dem Wort weh, zum Wort wie Strich,
wenn einer der gleich folgenden vier Fälle erfüllt ist,
Und zwar erstens, wenn das Wort so aussieht,
u ist irgendwas aus Gamma Stern,
V ist irgendwas aus Gamma Stern,
Y und X sind Bandsymbole aus Gamma und P ist der Zustand,
in dem ich gerade bin.
Und jetzt wird hier quasi die Nachfolgekonfiguration definiert für allerlei Fälle,
für so Fälle, wie wenn ich nach links gehe,
wenn ich nach rechts gehe, wenn ich die Position des LSKs halte.
Und dann muss ich immer gucken,
ist das V gerade Lamda oder ist das V nicht Lamda?
Und all diese Fälle muss ich irgendwie versuchen abzudecken. Weil es halt hier zum Beispiel einen Unterschied macht,
wenn das V halt schon Lamda ist und ich bewege den Leseschreibkopf nach links,
ich ersetze X durch, Paos Lamda,
X wird durchs Gatter ersetzt und ich bewege den Leseschreibkopf nach links,
dann brauche ich halt hier das X und das V nicht mehr hinschreiben, weil das X,
das habe ich gerade gelöscht, das V war gar nicht da, also brauche ich den ganzen Rest nicht.
Deswegen will man da halt nicht haben, UQ, Y,
ZV, weil Z und V eigentlich nicht mehr da sein sollten.
Das verkompliziert die ganze Definition und das muss man jetzt für so allerlei Sachen,
hier ist das P direkt in der Mitte,
jetzt kann das P auch ganz links sein,
das P kann ganz rechts sein oder das P kann alleine stehen und all die Fälle muss man abdecken.
Das klappt auch schon nur noch mit einem sehr viel kleineren
Font als eben
Ist auch in den, in den Vorabfolien von vorgestern,
da ist das auch noch falsch, da habe ich hier diesen Haltefall vergessen.
Also so wie es jetzt da steht, ist das okay.
Aber da sieht man schon, dass das irgendwie ziemlich ätzend,
das genau zu definieren, läuft aber darauf hinaus,
dass man einfach damit so arbeiten kann,
wie du das eben im Beispiel gesehen haben.
Genau, da nochmal die Anmerkung,
dass das im Grunde genommen darauf hinausläuft
Fragen. Nee, wenn du sämtliche Gatter mitschreiben willst, dann schreibst du sehr lange.
Also ist halt unendlich nach links und rechts. Ja,
nee, also wenn du,
deswegen ist die Definition halt so umständlich,
damit halt solche Fälle nicht passieren, dass sich irgendwann sehr,
sehr viele Gatter oder eben unendlich viele schreiben muss,
weil das würde sich
nicht vermeiden lassen
Aber wie gesagt, informal ist es relativ einfach. Informal läuft es darauf hinaus,
dass das, was links und rechts von Z steht,
zusammengeschrieben, genau die Bandentschrift ist und man eben irgendwie links bei dem letzten relevanten Bandsymbole aufhört und rechts auch bei dem letzten relevanten Bandsymbol.
Nochmal. Wo der Leser,
also wenn du so eine Konfiguration,
hier steht ja auch einer, dieses UZV,
das ist eine Konfiguration und der Lesekopf ist dann über dem ersten Buchstaben von V. Also in dem beispielsweise in so einer Konfiguration hier,
XXXZ1B, die vorletzte,
da ist der Leseschreibkopf über dem B. Und weil man dann hier bei der Kante von Z1 nach Z2 mit dem R sagt,
ich will den ein Feld nach rechts bewegen,
ist man dann in dieser Konfiguration und der Leseschreibkopf ist jetzt über dem Gatter.
Und wenn man die Definition,
falls ihr das irgendwie so super im Detail ausführen wollt,
wenn man sich die Definition genauer anguckt,
dann wäre dieses Gatter hier nicht da,
weil das ja quasi nicht relevant ist.
Das ist jetzt nur deswegen dahin geschrieben,
weil es fürs Lesen und fürs Verstehen jetzt einfach ist,
finde ich, zu sehen,
ah ja, okay,
ich lese jetzt also gerade im Bandsymbol
Andererseits, wenn es da nicht stünde, wüsste man auch,
ja, also lese ich gerade im Bandsymbol, ne,
aber ich finde das immer ein bisschen angenehmer.
Sonst noch Fragen. Zum ersten. Genau, dann noch
eine Folie und dann kommen, glaube ich, Fragen.
Jetzt haben wir ja hier diese Schrittrelation definiert.
Und genauso wie wir das bei DFAs gemacht haben,
will man jetzt halt mit dem Stern andeuten,
dass man mehrere auf einmal macht.
Dass sich also irgendwie vier Aktionen auf einmal ausführe und
nur irgendwie Start und Ende angebe
Und diesen Index A für die Touring-Maschine, den kann man eben auch weglassen.
Und wenn man jetzt so eine Folge hat hier von
mehreren Konfigurationen hintereinander, dann heißt das halt Rechnung.
Und wenn die vorne K1, wenn das eine Startkonfiguration ist,
sprich Staatszustand, gefolgt von Eingabewort, das ich lesen will,
also sowas hier, keins Element aus Z0-Sigma Stern.
Und wenn KN aus so einer Konfiguration ist, Gamma Stern,
ZN Gamma Stern, dann nenne ich das Erfolgsrechnung,
bei Erfolgsrechnungen wissen wir,
ich wollte das ursprüngliche Eingabewort akzeptieren
Was fällt euch da auf bei dieser Erfolgsrechnung anders als bei DFAs und so?
Das ist der zweite, dann der vierte.
Du, du, du. Hast du eine Kamera?
Mach mal ein Foto von deinem Nachbarn. Stell das bei Facebook
rein. Und der alle so, huh. Nein,
ist okay, ist mir auch schon mal passiert,
in der Vorlesung einzuschlafen.
Also, was ist das Problem bei den Erfolgsrechnungen?
Was ist das Problem bei den Erfolgsrechnungen
Ja. Nicht du. Es gab mehrere, die geschlafen haben,
ich sehe mehrere Köpfe, die rot angelaufen sind.
Das ist der Grund, das mache ich jetzt immer so.
Das ist geil. Habt ihr gestern James Bond gesehen,
Casino Royale? Nee, ein Quantum Trost war das, ne?
Ja, ein Quantum Trost. Da gibt es doch auch diese Szene,
wo er in der Oper ist und dann nur sagt so,
haha, ich habe euch alle und dann stehen Idioten alle auf und gehen raus.
Das ist super. Genauso mache ich das auch. Also
ohne das mit dem erschießen dann, aber... So,
was fällt euch auf? Was ist der Unterschied zu DFA
Nochmal. Genau, das Band muss nicht leer sein,
noch mehr. Das fällt schon mal auf, ja.
Genau, das Wort muss nicht zu Ende gelesen werden,
ist auch irgendwie komisch. Ja, fällt einem noch mehr auf.
Das Wort muss nicht mal mehr auf dem Band stehen,
da kann jetzt irgendwas völlig Beliebiges stehen. Die Idee dahinter ist quasi,
dass man sagt, auch wenn ein Mensch ja vielleicht,
wenn ihr jetzt irgendwie, keine Ahnung,
ich gebe euch einen Grafen und ihr wollt da irgendwie einen kürzsten Pfad von A nach B bestimmen,
dann macht man vielleicht auch so Sachen wie irgendwie,
Knoten durchzustreichen oder anders anzumalen oder was auch immer.
Auf jeden Fall sieht das unter Umständen danach anders aus,
als es ursprünglich mal aussah. Ich kann aber raus extrahieren,
vielleicht, wie jetzt die Lösung ist oder sowas.
Und genauso soll die Touring-Maschine das auch machen können. Sprich,
wenn die irgendwie startet und in einen Endzustand kommt,
dann sage ich alles klar, egal wie das vorher aussah,
die Eingabe will ich akzeptieren.
Und ich will die mir auch gar nicht komplett ansehen müssen,
weil ich vielleicht vorher schon weiß, dass ich fertig bin.
Auch beim Grafen, wenn ich einen kürzen Pfad bestimme,
muss ich unter Umständen ja gar nicht mehr alle Knoten angucken,
sondern nur bestimmte, bis ich den kürzen Pfad habe.
Und das erreiche ich alles mit
Der Bedingung hier, dass ich sage,
wenn ich einen Endzustand erreiche, dann ist das eine Erfolgsrechnung.
Und dann ist es eben, also dann ist es
gleich auch in der akzeptierten Sprache drin.
Da steht es nochmal, was wir jetzt eben kurz diskutiert haben.
Einige Bewortung muss gar nicht vollständig betrachtet werden.
Ich akzeptiere, sobald ich in einen Endzustand gelange.
Auch wenn hier, auch wenn ich vielleicht noch weiterrechnen könnte.
Im Grunde genommen könnte ich beim Endzustand alle Kanten,
die da rausführen, wegschmeißen, aber macht man nicht.
Und da akzeptierte Sprache,
wenn ich also in so einer Konfliktion starte und da hinkomme,
in einen Endzustand,
dann akzeptiere ich
das ursprüngliche Eingabewort We
Auch wenn es vielleicht gar nicht mehr auf dem Band ist und so weiter und so weiter.
Also Eingabewort wird aufs Band gestellt, ich gehe in den Staatszustand,
ich rechne irgendwie, wenn ich bei diesem Konfigurationsablauf,
also bei der Rechnung irgendwie in Endzustand komme,
dann ist es eine Erfolgsrechnung und dann akzeptiere ich.
Fragen? Doch haben wir gerade, deswegen hier diese Geschichte,
die auf der vorherigen Folie irgendwie stand,
selbst wenn ich noch weiterrechnen könnte,
ist es egal fürs Akzeptieren
Aber es wäre äquivalent dazu, wenn du einfach beim Endzustand gar keine Kanten mehr rausführen lässt.
Also das ändert nichts mehr an der akzeptierten Sprache,
will man aber bei der ursprünglichen Definition nicht drin haben.
Man will bei der ursprünglichen Definition nicht reinschreiben müssen,
Delta ist so und so, aber wenn Z einen Endzustand ist,
dann gibt es da keine und bla bla,
das willst du nicht reinschreiben, sondern du sagst einfach,
ja, so akzeptiert er und als Nebenbemerkung merkst du dir,
ah ja, okay,
wenn es weitergehen könnte,
ist es egal.
Sonst noch
Dann für euch. Akzeptiert sie das Wort A-A-B-B-A.
Auch meine Übungskumpelleiter müssen mitmachen
Das stimmt,
aber jetzt wäre es ja anonym
Warum nicht? Wo endet die? Also in... Oh
ja, das ist eine schöne Frage. In welcher Konfiguration
endet die? Also die endet tatsächlich in der Konfiguration,
aus der sie dann nicht mehr raus kann, in welcher?
X. Du hast ja alle Ars durch X ersetzt.
Also XX, BBB X, das macht man
die ganze Zeit bei
Und jetzt mache ich aus Z0 diesen Wechsel nach Z1
und schiebe nochmal den lese Schreibkopf ein Feld zurück.
Das heißt, das ist jetzt über dem letzten Symbol.
Das war mal ein A, ist jetzt aber ein X,
also bin ich irgendwie in der Konfirmation X, X,
B, B, Z1,
X. Und für das X gibt es dann da keine Kante raus.
Also bin ich fertig und akzeptiere das Wort nicht,
weil ich die ganze Zeit nur erst in Z0 war,
dann Z1 besuche, beides keine Endzustände.
Also akzeptiere ich nicht. Das hier?
Ähnliche Frage, ne? Nur das letzte A-Field
Genau, auch da ja, ich mache die beiden As zu Xen,
dann lese ich über die beiden Bs rüber.
Und wenn ich dann bei dem Gatter bin,
dann bewege ich mich wieder einfällt nach links,
links bin, also auf dem letzten Symbol,
das ist ein B weiterhin,
ich bin jetzt in der Konfiguration
Und dann mache ich diesen Übergang nach Z2
und akzeptiere da das Wort. Da blockiere ich auch,
kann auch nicht weiterlesen,
aber da bin ich halt fertig
In welcher Konfiguration ende ich? Nein, in welcher Konfiguration
nenne ich, ja? Arvin. Fast, ne,
die beiden As sind X, Aber sonst,
ich wandle ja, die As dann X so.
Also X, X, X, oh Gott,
X, X, B, B, Z 2,
Gatter B, ja, genau.
Es sieht gut auseinander, das ist eine Konfiguration,
in der ich akzeptieren will.
Trotzdem ist die Antwort, nein, warum?
Ja. Die Anfangskonfiguration ist immer Z0 und dann das Eingabewort.
Ich bin also, genauso wie beim DFA,
auch ganz links auf dem ersten Symbol des Wortes und arbeite dann.
Die neuen Leute, die hineingedrückt haben, gewinnen aber,
das Wort wird tatsächlich nicht akzeptiert.
Warum nicht
Fiese Fangfrage. Warum wird das Wort nicht akzeptiert?
Genau. Genau. Das Gatter darf da gar nicht drin
sein, ne? Wir haben ja gesagt, Worte,
die akzeptiert werden, sind immer aus Sigmar Stern,
also bestehen aus Eingabesymbolen.
Gatter sollte explizit
dieses Symbol sein für leeres Bandfeld
Also kann das Wort da, das Wort ist kein Eingabewort,
also kann die Turing-Maschine das auch nicht akzeptieren.
Eine Rechnung, die er auf dem Wort irgendwie starten würde,
die würde irgendwie in Endzustand führen,
aber das ist kein Wort, das ich akzeptieren kann.
Wenn ich sowas ausdrücken möchte, wenn ich also sagen können möchte,
irgendwie das eingebewortetes A-A-B-B, leeres Feld B,
also so wie ein Space im String oder so,
dann muss ich mir dafür halt ein Symbol einführen.
Dann führe ich mir irgendwie, was weiß ich,
Underscore ein oder sowas. Und dann kann ich sagen,
das ist ein Symbol und damit kann sie dann arbeiten.
Dann kann es auch ein Wort sein, das sie liest.
Also wenn man irgendwie Hello Blank World sie lesen lassen will,
kriegt man das hin, aber dann muss man eben das Blank irgendwie einführen.
Das ist einfach nur so eine technische Maßnahme,
damit man ein Symbol hat, das tatsächlich dafür steht,
dass auf dem Feld nichts ist.
Und es ist halt ein Unterschied,
ob auf dem Feld nichts ist oder ob auf dem Feld
ein Blank ist
Genau, das nur, um euch dafür zu sensibilisieren.
Genau. Welche Sprache akzeptiert ihr jetzt? Nach dem,
was wir eben so durchgespielt haben, was meint ihr,
was akzeptiert die?
Alle Worte mit speziellen Eigenschaften, nämlich welchen oder welcher,
welcher oder welchen?
Die. Achso,
oh Gott
Kannst du schneller ausdrücken? Wörter, die auf... Genau,
Wörter, die auf B enden, ne? Ich war mir noch nicht sicher,
ob du Arschstein-B-Stern meintest oder A, B-Stern oder so,
also Wörter, die auf B enden einfach, ne?
Genau, hier, ich lese ja über das Wort,
das Wort besteht irgendwie aus As und Bs, da lese ich rüber,
mache aus allen A und Xe und aus die Bs lasse ich stehen,
so, sprich, ich schmeiße die As quasi raus,
ne, ich kreuze die irgendwie weg.
Das heißt,
wenn ich das Wort zu Ende gelesen habe und irgendwann so ein Gatter sehe,
da habe ich im Grunde genommen immer noch das gleiche Wort auf dem Band stehen,
nur statt As Xe,
dann gehe ich hier einen Schritt nach links mit dem Leseschreibkopf,
das heißt,
ich bin dann auf dem letzten Symbol
Und das gucke ich mir halt an. Und wenn es
ein B ist, dann akzeptiere ich und sonst blockiere ich eben.
Also akzeptiere ich genau die Sprache, wie endet auf B.
Und die hier
Soll ich auch noch mal darauf schulen,
was für Worten, also wann die Touring-Maschine akzeptiert?
Zeit abgelaufen. Ein weites Bild. Nochmal,
die Touring-Maschine akzeptiert genau dann,
wenn sie in einen Endzustand kommt
Sie muss sich das Wort nicht bis zum Ende ansehen und so weiter.
Das heißt, sobald diese Touring-Maschine in den Endzustand kommt,
akzeptiert sie das Wort. So, wann kommt ihr in Endzustand,
wenn ihr im B lest, ne? Das heißt,
sobald ihr ein B lest, sagt ihr, cool,
ich akzeptiere. Jetzt kann man sich noch fragen,
wenn das Wort nicht mit dem B anfängt, naja,
dann blockiere ich sofort, weil dann kann ich gar nicht weiterlesen.
Also Worte, die nicht mit B anfangen, sind doof.
Ein Wort, das mit B anfängt, führt mich direkt
in den Endzustand und ich akzeptiere, egal was danach kommt.
Ich bin dann halt in der Konfiguration B, Z1,
Restwort. Und wie das Restwort aussieht,
ist mir egal
Das als beim DFA,
wo ich jetzt noch irgendwie da eine AB-Schlaufe dran machen müsste,
damit ich das Wort zu Ende lesen kann,
kann ich hier einfach sagen, hey,
ich habe gesehen, dass das Wort mit B anfängt,
also bin ich fertig.
Würdet ihr, wenn ihr einen Algorithmus implementiert, genauso machen?
Ihr würdet nicht sagen, hey, ich gucke mir den ganzen String an,
nachdem ich schon weiß, dass der mit B anfängt.
Sondern ihr sagt, ah, cool,
der fängt mit B an, dann bin ich fertig.
Ergo, erstens, ist zwar richtig,
dass er das B akzeptiert, aber halt nicht nur.
Er akzeptiert B und dann was beliebig weiteres, also B. Sigmar Stern.
Die sind also alle falsch. Die sind irgendwie,
das erste ist zu wenig, das ist nur das B,
das zweite ist sowohl zu wenig als auch zu vielen.
Da ist noch das Lamm da drin,
Lamm da akzeptiere ich aber nicht und dann fehlen da die ganzen Worte,
die nach dem B noch was anderes kommt.
Drittens, B-Stern, Siegmar Stern, welche Sprache ist das?
Kürzer, was ist B-Stern-Sigmar Stern kürzer? Genau, B-Stern-Sigmar
Stern ist Siegmar Stern. Ich nehme aus B-Stern das leere Wort,
leeres Wort verknüpft mit irgendwas aus Sigmar Stern,
da gibt dieses irgendwas, also kriege ich alle Worte aus Sigmar Stern.
Also Sigmar Stern klappt aber auch nicht,
weil ich ja nicht alle Worte aus Sigmar Stern haben will,
sondern nur die,
die mit B anfangen
Viertens ist auch wieder zu viel, weil ich vorne
aus dem Sigmar Stern auch irgendwie Ars rausnehmen kann.
Es sei denn, ich beschränke mich darauf, dass ich sage,
Sigmar ist nur die Menge, die B enthält.
Dann wäre viertens richtig. Nee, auch nicht. Doch,
doch, doch. Worte, die nur aus Bs bestehen,
dann ist es viertens. Zweitens nicht, drittens nicht.
Viertens, genau, dann wäre es viertens. Man müsste
also noch sagen, akzeptiert diese TM über dem Alphabet AB.
Also viertens könnte man noch so durchgehen lassen.
Was? Viertens könntest du noch durchgehen lassen,
wenn du sagen würdest, es geht nur um das Alphabet,
Sigmar gleich
Ja, die Frage aber ein bisschen sinnvoller formuliert wäre,
wie welche Sprache akzeptiert diese TM über dem Alphabet A,
B, dann wären die alle falsch.
Deswegen hier auch irgendwie weh aus A, B,
Stern, mit wehbeginnt mit A. Ja, dazu Nachbereitung.
So, genau, jetzt haben wir Touring-Maschinen gesehen,
wir können damit arbeiten und wir wissen, wie die Sprachen akzeptieren.
Ist das bei Touring-Maschinen so,
haben wir ja eingangs auch schon so ein bisschen kurz andiskutiert.
Man möchte halt gerne auf Funktionen damit berechnen,
man möchte nicht einfach nur Wort vorgelegt,
dieses Wort akzeptieren,
ja oder nein
Sondern man will beispielsweise zwei Zahlen vorgelegt, die Summe ausrechnen können.
Also Funktionen damit berechnen. Und das ist jetzt eigentlich auch gar nicht so überraschend,
dass das geht, weil wir ja eben schon gesehen haben,
ich kann da so viel rummanipulieren, wie ich will.
Also wenn ich jetzt irgendwie zwei Zahlen kriege,
dann kriege ich die zum Beispiel als Binärkodierung und dann sage ich,
okay, jetzt habe ich die beiden Zahlen als Binärkodierung,
lese die irgendwie ein, rechne die Summe aus,
schreibe die Summe irgendwie weiter rechts aufs Band und dann habe ich eben diese Funktion berechnet.
Formal kann man das auch ausdrücken, sagt man erstmal für Wortfunktionen,
wenn ich so ein Alphabet-Siegma habe und ich habe eine Wortfunktion von Sigmar Stern,
das sieht man Stern,
dann nenne ich diese Funktion eben Turing berechenbar oder einfacher,
einfach brechenbar, wenn Es ist eine DTM gibt,
die eben aus einer Konfiguration Z0W in eine Konfiguration ZEV kommt,
genau dann, wenn FW gleich V ist.
Also wenn die Funktion F das Wort WAV abbildet,
dann soll die Turing-Maschine gestartet in der Anfangskonfiguration Z0W irgendwie rumrechnen,
sodass sie letztendlich in dieser Endkonfiguration hier startet,
ZEV endet in die Stadt, das soll sie enden.
Und wenn F halt auf einem Wort W gar nicht definiert ist,
Dann ist gar nicht genau gesagt, was sie machen sollen.
Nur sie soll halt dann tunlichst nicht in so einer Konfiguration ZEV enden,
weil das ja gerade bedeuten würde, das FW-Gereich faul ist.
Üblicherweise führt man sich dann einfach irgendeinen Fehlerzustand ein und auf den Wörtern,
wo sie nicht drauf definiert, ist die Funktion,
da geht die Tour immer stehen und dann in diesen Fehlerzustand und akzeptiert halt nicht.
Das ist Funktion berechnen. Wenn man, hier ist das mit Wortfunktion,
wenn man das jetzt machen möchte mit Funktionen auf die natürlichen Zahlen,
also eher natürliche Zahlen werden auf irgendwie ein Tupel aus Essen natürlichen Zahlen abgebildet,
dann kann man das, wenn man möchte,
so wie hier machen, dass man eben sagt,
Zahlen, hier, die Zahlen, M1,
M2 bis MR, die drücke ich immer aus durch,
gerade M1 plus 1, viele Nullen.
Also ich kodiere die Unäher, relativ aufwendig, also von der Komplexität, aber egal.
Nur damit man sehen kann, dass das geht,
ich kodiere die irgendwie unnäher. Hier dieses Plus 1 immer,
damit ich auch die Zahl null kodieren kann,
null kodiere ich durch eine Null,
eins kodiere ich durch 2-0,
zwei kodiere ich durch 3-0 und so weiter.
Dann habe ich die Zahlen dort 1 halt immer einfach als Trennsymbol.
Üblicherweise macht man das aber nicht so,
sondern man arbeitet halt mit dieser Wortfunktion hier und kodiert die
eher vielen natürlichen Zahlen einfach pinär.
Dann hat man irgendwie eine binäre Zahl,
dann von mir aus ein Dollar-Zeichen als Trenner,
noch eine minäre Zahl,
Dollar-Zeichen als Trainer,
noch eine binäre Zahl und so weiter
Steht hier nochmal. Oft berechnen wir aber nicht mit Unähe,
sondern mit einer binären Kulierung. Zahl 9 wird dann durch
das Wort hier ausgedrückt und dann kann man beispielsweise F von XY
gleich X plus Y so ausdrücken, dass man als Eingabe dieses Wort kriegt.
1-0-0-1-1-0
-0 für 9-4s, 13 und er wird eben dieses Wort berechnet.
Da könnt ihr die Touring-Maschine eben einfach immer,
sowohl bei X als auch bei Y,
sich das letzte Symbol angucken, Summe ausrechnen, sich das irgendwo hinschreiben,
die beiden letzten Symbole streichen und dann wieder die letzten Symbole von dem,
was jetzt noch übrig ist, nehmen, Summe ausrechnen,
ganz nach Rechtsfahren hinschreiben und so weiter.
Und währenddessen sich eventuell noch den Übertrag irgendwie merken und mit einrechnen.
Und dann hätte man das
Das ist Rechnen mit Funktionen. Kurzes Beispiel, wenn ich eine Touring-Maschine machen will,
die F von x gleich x minus eins berechnet.
x eine natürliche Zahl, die es irgendwie als Binärkulierung gegeben
und ich will x gleich x minus eins rechnen.
Jetzt starte ich also in dieser Startkonfiguration Z0X und ich will
irgendwie in einen Endzustand kommen und rechts davon soll dann eben der Rest stehen,
also x minus eins, nicht der Rest, sondern x minus eins soll da stehen.
Jetzt überlegt man sich, wie würde man als Mensch irgendwie eins abziehen?
Man fängt halt irgendwie rechts bei der Zahl x an,
guckt, wenn da schon der einen steht,
dann mache ich da eine Null draus und bin fertig,
wenn da eine Null steht, schreibe ich da eine einzeln,
merke mir die eins im Übertrag,
gehe ein Feld nach links und arbeite weiter
Und genauso kann die Tour möchte ich das auch machen.
Ich fahre am weitesten recht stehende Zeichen. Wenn das eine
Einzelne ist, schreibe ich eine Null, fahre fort.
Also bin fertig. Fort bei Schritt 4 heißt,
ich gehe gleich in Endzustand. Wenn es eine Null ist,
also fahre ganz nach links, GNN-Zustand.
Und wenn es eine Null ist, dann schreibe ich einen Einzelnen,
gehe und fällt weiter nach links und mache bei Schritt 2 weiter.
Und immer so weiter, bis ich irgendwann mal hier bei zweitens
den Abbruch habe und dann hier bei viertens angekommen bin.
Hier noch ganz wichtig, ich fahre ganz nach links
und gehe in einen Endzustand. Das ist deswegen wichtig,
weil So die Definition war, dass man gesagt hat,
von Z0W will ich nach ZEV.
Deswegen gehe ich immer noch mal ganz nach links unter einen Endzustand.
Ich habe alles gerade nicht abgedeckt. Ja,
welcher Fall ist denn nicht abgedeckt?
Bitte? Ja, genau, sowas wie null.
Dann nervt das
Da hilft es auch nicht so was wie 0-0
hinzuschreiben oder so, das bringt dann auch nichts.
Dann gehe ich da irgendwie ganz nach rechts,
mache aus beiden eine Eins und dann blockiere ich da auch irgendwie.
Also da müsste man noch einmal kurz aufpassen,
was passiert bei einer Null und man müsste sich Gedanken darüber machen,
einmal kurz, ob ich sowas erlauben will,
wie als Eingabe 0-0-1 oder irgendwie sowas.
Ob das auch erlaubt sein soll, um eins zu courdieren,
also beliebig viele führende Nullen.
Das wäre in dem Fall ja, glaube ich, kein Problem.
Nee, das wäre in dem Fall kein Problem,
aber die Zahl Null ist halt einfach ein Problem.
Das würde man dann einfach abfangen. Dass man sagt,
am Anfang lese ich einem über das Wort rüber,
ob das nur aus Nullen besteht, falls ja,
lasse ich so oder ich gebe einen Fehler aus oder irgendwie sowas.
Der Fall ist da
nicht abgedeckt
Genau. Und entweder kann man jetzt da draußen Zustandsübergangsdiagramm machen und sagen,
okay, so sieht die Touring-Maschine aus und dann beschreibt man
noch ein bisschen, wo man die Idee da wiederfindet.
Oder, was man sehr häufig bei Touring-Maschinen macht,
man belässt es später auf diesem Level, das man nur beschreibt,
was die Touring-Maschine tun müsste, um Wort zu akzeptieren.
Das wird nachher auch beliebig abstrakt,
weil man halt quasi einfach nur sagt, naja,
ich weiß, dass die Touring-Maschine das machen kann,
dann brauche ich es nicht so genau beschreiben.
Beispiel, wenn man das machen will, eine Touring-Maschine für
X plus Y X und Y wieder als Binärkodierung gegeben.
Das heißt, man will gegeben so eine Eingabe hier X-Dollar-Zeichen Y,
will man danach eben FXY auf dem Band stehen haben.
Also X plus Y. Dann hatten wir eben schon mündlich,
man geht halt bei X ganz nach rechts, merkt sich,
was das für eine Tal ist im Zustand oder findet Ziffer und streicht die weg.
Dann geht man bei Y ganz nach rechts, merkt sich da auch,
was das für eine Ziffer ist, streicht die auch weg.
Dann schreibt man sich rechts vom Y nochmal ein Dollar-Zeichen hin,
da will man das Ergebnis aufbauen und schreibt da dann eben
die Summe dieser beiden Ziffern hin.
Merkt sich eventuell den Übertrag. Dann geht man wieder an das
jetzt letzte Symbol von X und das letzte Symbol von Y,
liest die beiden raus,
geht nach rechts
Und schreibt da wieder das Ergebnis hin und so weiter.
Habt das Problem, wenn man das so rummacht,
wie ich es gerade beschrieben habe,
dass man die Zahl X plus Y falsch herum aufbaut,
dass ich irgendwie die von links nach rechts aufbaue.
Das heißt, danach muss man die nochmal umdrehen, kriegt man aber auch hin,
sehen wir gleich, wie man diese Umdrehfunktion schreiben kann.
Das, worauf es hier hinausläuft, im Grunde genommen Programmieren
mit einer sehr, sehr, sehr, sehr eingeschränkten Programmiersprache.
Und da kommt dann eben auch diese Church-Touring-These her,
dass man eben sagt, alles,
was intuitiv berechenbar ist, also alles,
was ein Mensch berechnen kann oder eine vom Menschen konstruierte Maschine,
das kann ich
auch mit der Touring-Maschine machen
Für alles, was es bisher so gibt auf der Welt,
hält die These. Also alle Rechner, die wir haben,
keine mit Touring-Maschinen simulieren, geht alles. Alles, was
ein Mensch irgendwie algorithmisch ausführen kann, kann die Touring-Maschine ausführen.
Ist noch keinem Weg eingefallen, da irgendwie so drumherum zu kommen.
Also außer mit Fantasiekonstrukten, aber jetzt so mit einem
wirklich technischen Konstrukt ist da noch nichts drumherum gekommen.
Und im Umkehrschluss, was die Touring-Maschine nicht kann,
können wir eben auch nicht.
Und das wird dann später nochmal wichtig und bedeutsam.
Fragen. Funktionen berechnen
Flugmaschine fragen, lass uns, drittens.
Habt ihr noch Kraft? Wir haben das so spät angefangen,
wir haben doch gerade mal, wann haben wir angefangen, 35?
Naja, doch, wir haben schon fast eine Stunde,
da kann die Kraft irgendwie ausgehen.
Fragen. Erstens, zweitens, drittens, okay,
dann nochmal kurz Fragen für euch.
Die Definition hierfür berechenbar, wo ist dein Fehler
Die Frage hatte ich letztes Jahr auch gestellt,
da musste ich irgendwie gestern,
als ich die Folien vorbereitet habe, dreimal hingucken,
dass ich selbst den Fehler gesehen habe.
Der versteckt sich da
ganz gut
Welcher Fehler versteckt sich denn? Was meint ihr denn?
Weil Zeile ist ja so ein bisschen,
kommt ja darauf an, wo man es jetzt hinschreibt,
aber was meint ihr denn, was ist denn der Fehler?
Genau, das Set hier, das da, das muss
ein Endzustand sein, also ZV mit Z soll ein Zustand sein.
Also entweder in die zweite Zeile, da sagen Z soll
ein Endzustand sein oder vor dem genau dann wenden die dritte.
Genau dann, wenn hier ist übrigens okay, ne?
Man könnte höchstens sagen,
dass man da vorher noch stehen haben will mit Satisan Endzustand,
aber sonst, dass genau dann,
wenn es ist,
völlig in Ordnung
Wenn ich zwei Touring-berechenbare Funktionen F&G habe,
kann ich dann
auch F-PlusG ausrechnen und
Gibt eine längliche Antwort und es gibt eine ganz schnelle.
Bei der länglichen würde man jetzt erklären, wie das so
passiert und so. Bei der schnellen würde man sagen,
naja, wenn das beides Tool ihm rechenbar ist,
dann kann ich das auch ausrechnen.
Und ich fühle mich in der Lage, eine Addition auszuführen,
also kann die Touring-Maschine das auch fertig.
Weil Multiflikation genauso, wenn die Touring-Maschine irgendwie zwei Sachen berechnen
kann, dann kann ich das auch machen.
Ich kann also F von N und G von N
einen Strich ausrechnen, die multiplizieren,
fertig.
Das geht also immer
Und bei der hier,
wenn man sagt, die sind wieder beide Touring berechenbar,
geht es jetzt auch die Hintereinanderausführung, Touring berechenbar zu machen.
Auch da gleiche Aussage. Ich kann das, kann Schulmaschine das auch.
Gut. So, bevor ihr jetzt zum Mittagessen entfleucht,
einmal noch kurz einen Exkurs und dann sehen wir noch uns zwei Beispiele an.
Wir haben jetzt hier das Berechnen von Funktionen eingeführt und vorher
das Akzeptieren von Sprachen. Im Grunde genommen, naja,
die sind nicht fast gleich, aber die sind sehr,
sehr,
sehr ähnlich
Später wollen wir primär mit dem Akzeptieren von Sprachen arbeiten,
weil das Einfache ist, darum eine Theorie zu bauen,
als um das Berechnen von Funktionen. Deswegen ist es schön,
wenn man sagen kann, wenn ich eine Funktion berechne,
dann kann ich im Grunde genommen auch eine Sprache akzeptieren.
Wie macht man das? Wenn ich eine Sprache akzeptiere,
Sprache M,
also ich habe eine Touring-Maschine X mit 11 von X gleich M,
dann ist das im Grunde genommen nichts anderes als die charakteristische Funktion von M zu berechnen.
Das heißt, die Funktion hier, die eins zurückliefert,
wenn XNM ist und null zurückliefert, wenn X nicht in M ist.
Wenn die Touring-Maschine akzeptieren würde, also im Endzustand ist,
dann sagt sie, okay, dann lösche ich das ganze Band,
schreib noch eine einzelne fertig,
dann habe ich
charakteristische Funktion berechnet
Null klappt das nicht ganz so, aber so für uns
reicht das erst mal. Wichtiger, wenn ich eine Funktion berechne,
das hier, dann kann ich auch einfach sagen,
es geht mir darum, diese Sprache zu akzeptieren.
Ich kann also das Problem Funktionen zu berechnen,
zurückführen auf das Problem, spezielle Sprachen zu akzeptieren.
M&A nur noch geeignet codieren und dann geht es hier gerade darum,
die Tubel X F von X auszurechnen oder zu akzeptieren und
dafür muss ich eben F von X ausrechnen.
Und das ist ganz praktisch,
weil man dann nämlich einfach hier wieder davon reden kann,
ich kriege ein Eingabewort, akzeptiere ich das ja oder nein,
ich muss da nicht so viel mit berechnen sagen und sowas.
Das ist meistens angenehmer, um sich zum Beispiel
über Abschlusseigenschaften und sowas Gedanken
zu machen
Da sieht man halt, dass es im Grunde genommen das Gleiche ist.
Hier nochmal als Beispiel für dieses X plus Y,
wenn ich die Funktion berechnen will, dann mache ich das wieder genau so.
Ich habe am Anfang XY auf dem Band stehen mit irgendwie
einem Trenner und ich will irgendwie in so eine Konfluation kommen,
wo ich im Endzustand bin und F von XY auf dem Band ist.
Und stattdessen kann ich auch einfach sagen, statt X plus Y zu berechnen,
will ich halt eine Touring-Maschine basteln, die diese Tupel akzeptiert, XYZ.
Auch wieder alles geeignet, codiert. Und die würde dann,
wenn ich schon eine habe, die das berechnet,
dann kann ich da einfach sagen, hey,
ich nehme mir die ersten beiden Elemente aus dem Tupel,
ich rechne die Summe raus
Und vergleicht das dann mit dem dritten Element im Tupel.
Wenn das identisch ist, akzeptiere ich, wenn nicht,
lehne ich ab. Und dann hat man gezeigt,
dass Akzeptieren von Sprachen und Berechnen von Funktionen im Grunde genommen gleich ist.
Und man kann sich später auf das Akzeptieren von Sprachen beschränken.
Und weiß aber, dass eben immer, wenn ich eine Funktion berechnen will,
kann ich das zurückführen auf Akzeptieren von Sprachen.
Wenn ich also nachher so Aussagen habe wie,
es gibt unentscheidbare Sprachen, dann bedeutet das eben auch,
dass quasi die zugehörige Funktion nicht berechenbar ist.
So, zum Abschluss, zwei Beispiele.
Turing-Maschine für A auch NBON,
wie geht das
Nach den beiden Beispielen machen wir Feierabend,
aber nehmen wir mal zuerst das da, wie geht das?
Frage oder? Ja, erzähl. Bitte? Stimmt,
damit könnte man es machen. Man könnte einfach sagen,
wir haben schon Kellerautomaten, das kann ich mit Naturingmaschine simulieren, fertig.
Trotzdem, Touringmaschine, wie würde das, wie könnte man
das machen? Also bitte? Nochmal. Ach so,
zwei Leseköpfe, oh Gott, ja, nein,
ich will eine Touringmaschine,
mach da einfach
eine Touringmaschine hier
Das ist so gemeint, so der zentrale Sprech, das passiert. Genau,
irgendwie, also entweder er meint jetzt zum letzten A,
da streichen zum letzten B, da streichen zum vorletzten A,
das streichen, zum vorletzten B,
das streichen oder Umständen muss man, ne,
weiß ich nicht genau, also vielleicht muss man kurz aufpassen,
dass man nicht irgendwie bei irgendeinem Band ewig lange nach rechts geht oder so,
was man machen kann,
ist, man fühlt sich links und rechts Marke ein,
dann passiert das nicht oder so,
also am Anfang das Bandlesen Marker setzen oder man wandert nach innen,
erstes A und letztes B streichen,
zweites A und zweites B, drittes A und drittes B,
also immer von links und rechts, deins klappt aber auch,
muss man halt nur gucken,
dass man immer über die Gatter,
die man schon gelöscht hat,
irgendwie rüberfährt
Oder, also das ist eine Variante, für die kann man schönen Zustandsübergangsdiagramm machen.
Oder das ist nicht mehr so schön, Zustandsübergangsdiagramm zu machen.
Man macht sich rechts davon einen Zähler,
wird mit null initialisiert und dann streiche ich immer ein A
weg und erhöhe den Zähler um Einschlag.
Wieder ein A erhöht den Zähler um Eins und so weiter.
Irgendwann sind die As alle weg und mein Ziel hat einen
bestimmten Wert und danach streiche ich die Bs weg und verringere
den Zähler um Eins und irgendwann ist der Zähler hoffentlich null.
Oder ich zähle erst die As, dann die Bs und gucke,
ob die Zähler gleich sind, irgendwie solche Sachen.
Genau, aber normalerweise würde man das genauso machen mit irgendwie streichen.
Und die hier, eine Touring-Maschine, die soll jetzt keine
Sprache akzeptieren, sondern die soll die Funktion WWREF berechnen.
Das heißt, die startet irgendwie mit dem Wort weh.
A, B, B und rauskommen soll das Wort BBA,
also genau das Wort umgedreht. Wie könnte man das machen? Okay,
Zwischenspeicher könntest du entweder auf dem Band dir machen oder im Zustand dir merken.
Also wenn du dir immer nur das letzte Symbol merken willst,
was du gelesen hast, könntest du ja auch einen Zustand merken.
Genau, und jetzt müsste man die Idee von eben noch
ausbauen. Also wenn man das jetzt nämlich gleich,
also die kommt gleich ins Zustandsdiagramm, das wird erstaunlich kompliziert,
weil man irgendwie, man geht an den rechten Rand von weh,
streicht das Symbol und merkt sich das im Speicher, was du gemeint hattest.
So, jetzt geht man ein Feld nach links,
wo man vielleicht sich noch ein Dollarzeichen hingemacht hat als Begrenzer oder so und schreibt da das Symbol hin.
So, jetzt muss man wieder über,
jetzt muss man erst mal über alles,
was man hier schon so aufgebaut hat, rüberlesen,
über das Dollarzeichen rüberlesen, dann über die Sachen,
die man gestrichen hat, rüberlesen,
bis man es bei dem letzten Symbol ist,
das man noch nicht gestrichen hat.
Streichen, merken im Zustand wieder über alles rübergehen,
über das Dollarzeichen rübergehen, über alles,
was man schon aufgebaut hat, rübergehen, hinschreiben,
wie er über alles rüfergehen,
über das Dollarzeichen rübergehen
Nee. Ja, wir fangen an, wir fangen an
und so weiter, ne? Beschreibung der Idee erstmal,
ich setze mir Marker links und rechts, lese das letzte Symbol von W,
ersetzt es durch das Gatter, also sprich, ich lösche es.
Wann dann nach rechts über dieses Dollarzeichner rüber, speichert das Symbol dort.
Wiederholen? Bing, bing, bing, bing,
bing, bis nichts mehr übrig ist, ne? Zu,
bei wem ist über die schon geleuchten Buchstaben,
das heißt über eine, genau, da steht das,
was ich eben gesagt habe, und dann,
deswegen hat man am Anfang diese Marker gesetzt,
links und rechts von W,
man hat W dann zu Ende gelesen,
wenn man eben bei diesem Vorgang auf das zweite Dollarzeichen trifft
Könnte man auch so machen, dass man merkt, oh,
ich komme da irgendwie auf den, nee, kann man das machen?
Nee, genau, deswegen braucht man hier diesen Marker.
Wenn man die Zeichen nämlich sonst durch Gatter löscht,
dann würde man da nachher immer weiter bis in die Unendlichkeit rüberlesen.
Also entweder braucht man hierfür das Löschen ein anderes Symbol,
damit man merkt, weil man will gerade verlassen hat oder man muss sich einen Marker setzen.
Ich habe so gemacht, dass ich Marke gesetzt habe.
Und dann, um das vollständig zu machen, der Definition entsprechend,
die beiden Marker löschen und den Kopf an den Anfang von VRF setzen.
Ratet mal, wie viele Zustände das hat? Drei,
vier, fünf, sechs, sieben, acht,
neun, 10, 11, 12, 13,
14, 15, 16, 17, 18,
19,
20 steht alles zur Auswahl
Einer steht auch zur Auswahl, ist aber falsch.
Was meint ihr? Bitte? Oh ja,
nehmen wir mal an, dass es 0-1 oder Abi,
eins von meinen, ich weiß gar nicht,
0-1, nimmer 0-1. Bitte?
Sechs. Wer sagt mehr als sechs?
Weniger als sechs, wie heißt sechs?
Mehr, mehr
Meine Variante hat erstaunlich viele Zustände, was daran liegt,
dass man, dass dieser ganze Kram vorne weg, ne,
mag er sowohl links als auch rechts setzen und dieser Kram hier hinten das nochmal machen,
das kostet alles Aufwand. Man sieht gleich sehr schön,
dass dieses, das Eigentliche, die eigentliche Arbeit,
dieses Wiederholen von, ich streiche hier, wander nach rechts,
setzt da was hin, das sieht man sehr schön,
das sieht man auch sehr schöne Naturingmaschine,
dass das so ein Kreislauf ist, macht ja auch Sinn,
ne, von Programmieren her wäre es eine Schleife,
eine Schleife im Programmieren sollte, irgendwie so im Kreislauf in der Touring-Maschine entsprechend,
die ich immer wieder mache.
Sieht dann so aus, 1, 2, 3,
4, 5, 6, 7, 8,
9, 10, 11,
11 Zustände,
mehr als
Wer mag, kann ja mal probieren, das mit weniger zu machen.
Ich will nicht behaupten, dass das minimal wäre.
Hier bei den Dingern, LB, der setzt den linken Marker,
RB setzt den rechten Marker, also Left Boundary, Wright Boundary.
Und hier der Kram, also Z-Z-1, Z-1-Strich und Z-Z-0,
Z-0-Strich, die sind gerade dafür da, die eigentliche Arbeit zu machen.
Und bei Z1 merke ich mir eben,
dass ich eine Eins gesehen habe, bei Z0 merke ich mir,
dass ich eine Null gesehen habe.
Könnt ihr im Detail nochmal im Skript nachlesen,
warum das dann auch klappt und so?
Können wir auch morgen nochmal durchgehen, wenn ihr möchtet.
Aber da sieht man halt, dass dieses Zustandsübergangsdiagramme zu malen,
dass das bei Turing-Maschinen schon mal einfach ein Beispiel relativ aufwendig
wird.
Also die
Die Grammatik dafür wären Klacks, ne?
Also wenn man eine Grammatik angeben will, für WWRF.
Das ist ja nicht ganz die Funktion berechnen,
aber für WWRF eine Grammatik anzugeben, das wäre richtig einfach.
Und die Tourmaschine ist halt schon ziemlich schwer. Ja,
steht als Beispiel im Skript, könnt ihr da nachlesen.
Zusammenfassung für heute. Wir haben sie definiert,
wir haben uns angeguckt, wie sie dynamisch arbeitet
und haben dann akzeptieren von Sprachen und Berechnen von Funktionen
eingeführt.
Die Fragen.
Na mal
Ohne das Haar zu verwenden. Also ich habe den Leseschreibkopf
immer bewegt, meinst du? Weiß ich nicht, habe ich
. Könntest du auch, ja, macht ja nichts.
Ändert ja nichts. Also die Frage drehte sich gerade darum,
dass da nirgendwo der Leseschreibkopf gehalten wird,
wenn ich dich richtig verstanden habe. Ist richtig,
könnte sogar sein, vielleicht ist es an irgendeiner Stelle,
vielleicht kann man sich an irgendeiner Stelle
was sparen,
wenn man den mal hält
Aber würde jetzt an der eigentlichen Funktionsweise nicht so viel ändern.
Und bei der Kante, die du genannt hast,
da ist ziemlich egal, der landet dann halt einfach über dem Götter.
Super. Dann... Dann war ich so... Dann... Blablabla,
blabla. Das ist schön, wie alle da sitzen.
Nein, okay, ist Feierabend. Wir machen morgen
weiter.