Heute Touring-Maschinen, so ein weiteres Automatmodell. Sie hat dann alles
den Lesestoff gelesen? Er lohnt sich ja das Schreiben,
das ist ja schon mal gut. Also wir machen so quasi das,
was im Lesestoff drinsteht und natürlich das Ganze irgendwie ein bisschen
formaler und mit Beispielen und so weiter.
DFAs kennen wir, PDAs kennen wir,
den kennen wir noch so ein bisschen, Varianten davon,
irgendwie NFAs mit Lambda-Kanten und vielleicht einen deterministischen PDA,
falls sich das einer irgendwie mal angeguckt hat.
Wir hatten das ja noch nicht so richtig.
Da kennen wir schon
so allerlei
Dann haben wir so Sprachfamilien kennengelernt, wo wir gesagt haben,
irgendwie alles, was so ein endlicher Automat akzeptieren kann,
ist eine reguläre Sprache.
Und das können wir auch irgendwie mit dem NFA akzeptieren.
Das können wir mit rationalen Ausdrücken ausdrücken. Das können wir
mit einer rechtslinearen Grammatik machen. Das war alles irgendwie reguläre
Sprachen. Dann haben wir diese kontextfreien Sprachen kennengelernt,
haben wir irgendwie den PDA kennengelernt,
der mit Leham Keller akzeptiert, den PDA kennengelernt,
der mit Endzustand akzeptiert und die kontextfreien Grammatiken.
Das war so dann, das waren die Kontextfreien.
Dann haben wir mit dem Pumping Lammer noch gezeigt,
dass es irgendwie Sprachen gibt, die nicht regulär sind,
aber die kontextfrei sind.
Typisches Beispiel irgendwie A hoch NB hoch N oder irgendwie sowas
wie alle Wörter, die gleich viele Nullen wie Einsen haben.
Oder auch Klammern,
kann man damit auch machen
Also korrekte Klamotte Ausdrücke. Dann haben wir mit dem
zweiten Pumping-Lämmer gezeigt, dass es auch wieder Sprachen gibt,
die da nicht mehr mehr kontextfrei sind.
Auch da klassisches Beispiel auch in Biochencehochen. Gibt ja noch
ein paar sinnvollere Beispiele, aber das ist irgendwie eins,
so ein ganz typisches. Und jetzt lernen wir ein weiteres
Automatenmodell kennen und das kann dann richtig, richtig viel.
Das kann nämlich quasi dann alles, was man sich so vorstellen kann.
Und das sind diese Touring-Maschinen. Und die sehen erstmal so ähnlich aus
wie ein DFA. Das war so dieses allererste Bild,
was wir hatten, als es um DFA ging.
Und man ändert jetzt eigentlich nur zwei Sachen.
Das eine ist, man erlaubt Dass man auf dem Band
nicht nur nach rechts geht. Also vorher hatten wir ja so
ein Eingabeband und man konnte das einfach nur von links nach rechts lesen.
Jetzt wollen wir sagen, ich will auf den Band sowohl
nach rechts gehen können, als auch nach links gehen können.
Dass die eine Änderung und die zweite Änderung ist,
dass man sagt, ich will auf den Band nicht nur lesen können,
so wie beim DFA oder auch wie beim PDA,
sondern ich will da auch drauf schreiben können.
Und die beiden Änderungen reichen schon, um dann quasi alles machen zu können,
was man sich auch so intuitiv vorstellen kann unter berechenbaren Funktionen.
Da kommen wir gleich nochmal zu. Aber mit Sonnenmodell
kann man dann beispielsweise eine Additionsfunktion machen, eine Multiplikationsfunktion,
teilen, ifst and else-Konstrukte,
alles,
was man
sich so vorstellen kann
Und weil die nachher alles kann,
illustriere das auch morgen nochmal so ein bisschen genauer,
warum die alles kann, die eben dazu,
sich tatsächlich Gedanken darüber zu machen, was ist mit dem Computer möglich,
was ist mit dem Computer nicht möglich.
Also wenn da irgendwas mit einer Touring-Maschine nicht machen könnt,
dann könnt ihr das so mit dem C-Programm nicht machen oder mit einem Java-Programm oder was auch immer.
Ja. Also da nochmal die Anmerkung von eben DFA und PDA konnten nur lesen,
die Touring-Maschine soll eben lesen und schreiben können,
deswegen hat die nicht nur so einen Lesekopf,
sondern eben so einen Lese-Schreibkopf,
das ist von der Idee her wieder irgendwie dieses Ding,
was auf dem Band irgendwie ist.
Und wenn ihr euch noch an die Definition vom DFA erinnert,
da trat dieser Lesekopf in der Formaldefinition nirgendwo auf. So,
man wusste zwar informal, der ist da irgendwie und das war ganz praktisch,
um sich irgendwie vorzustellen, wie das Ding funktioniert,
aber in der Definition war da eigentlich nicht drin.
Und hier ist das genauso, der tritt in der Definition nicht auf,
aber so von der Vorstellung her weiß man im Aya,
da habe ich so einen Leseschreibkopf,
der ist immer über dem aktuellen Symbol und das Eingabeband ist nach rechts hin unendlich.
Theoretisch war das Eingabeband beim DFA auch schon nach rechts hin unendlich,
man hat immer nur eine endliche, einen endlichen Teil gebraucht.
Also ich konnte ja Ein DFA, der A. Stern akzeptieren kann,
den kann ich ja das Wort A. hochtausend vorlegen,
das Wort A. hoch eine Million,
das Wort A. hoch eine Milliarde, ist ja völlig egal.
Also so gesehen war da das Eingewöhnbart auch schon unendlich und hat das nur halt insofern nicht gebraucht,
als wenn ich ein Eingabewort vorlege,
dann hat das eben eine endliche Länge und das ist dann eben auf dem Eingabeband,
während hier ist die Idee,
weil ich ja auch schreiben kann auf dem Band,
dass ich sozusagen anfangen kann und das Band irgendwie vollschreiben und da das Band nach rechts sind und endlich ist,
kann ich halt beliebig lange schreiben.
Damit modelliert man quasi in beliebig großen Speicher. So,
formale Definitionen, 1, 2, 3, 4,
5, 6, 7.
Also endliche Menge von Zuständen wollen wir
wieder haben
Endliches Eingabealphabet wollen wir haben. Und wir wollen so
ein endliches Alphabet von Bandsymbolen. Warum unterscheidet man das?
Aus dem gleichen Grund wie beim PDA auch.
Beim PDA haben wir auch gesagt, wir haben irgendwie eine
Menge von Eingabesymbolen, aus denen sind die Eingabeworte aufgebaut.
Und wir haben noch eine Menge von diesen Kellersymbolen,
damit ich irgendwie da vielleicht andere Buchstaben nehmen kann,
um das irgendwie ein bisschen schöner und eleganter zu machen.
Hier genauso, die Bandsymbole,
damit kann ich nachher eben auf dem Band wirklich dann arbeiten,
was eben zu so Sachen dient,
wenn ich irgendwie zum Beispiel A,
Hoch-N-B-O-Rennen akzeptieren will
Dann kann ich irgendwie über die As rüberlesen und mir beispielsweise markieren,
dass sich das A schon, irgendein Arsch schon abgearbeitet hat.
Dann führe ich mir als Symbol, keine Ahnung,
ein dickes A ein oder ein Arm mit dem Balken drüber oder sowas,
dann weiß ich immer noch, ja,
da steht sowas wie ein A,
aber ich kann mir das irgendwie merken,
dass ich das mir schon betrachtet habe.
Deswegen habe ich mir Bandsymbole, dann die Überführungsfunktion,
ein Pärchen aus Zustand und Bandsymbol wird abgebildet auf Bandsymbol,
LRH und Zustand. Das soll modellieren,
wenn ich in einem Zustand bin und ein Bandsymbol lese,
dann kann ich als Aktion dieses Bandsymbol durch ein anderes Bandsymbol
ersetzen.
Das ist also das hier
Kann den Lese-Schreibkopf nach links bewegen, nach rechts bewegen oder
auf der Position halten und kann Zustandswechsel machen.
Das ist die Dynamik bei der Touring-Maschine. Dann haben wir einen Staatszustand,
wir haben Endzustände und als spezielles Symbol, hier steht es auch schon,
die Bandsymbole sind echt mehr als die Eingabesymbole.
Eins, was da immer drin ist,
ist nämlich so ein Symbol für das leere Feld.
Wenn ihr irgendwie als Eingabe am Anfang A hoch NBUN habt und
das eingebebannt ist rechtzeitig unendlich, dann bedeutet das eben,
dass auf dem Eingabeband auch ein Bio entsteht und dann
unendlich viele von diesen Symbolen für das leere Feld,
von diesen Charps
Dann hier, diese Überführungsfunktion, ist ja eine Funktion,
die kann man auch wieder sich als so eine Kantenrelation vorstellen,
dass man eben sagt, okay, jedes Tupel bestehend aus Zustand,
Zustand und dazwischen eben Bandsymbol, das ich lese,
Bandsymbol, das ich schreibe und Aktionen,
die der Lese Schreibkopf machen soll,
kann ich dann auch als so ein Fünf-Tubel nehmen und in deterministischem Fall muss ich eben darauf achten,
dass ich zu jedem Pärchen ZX,
also zu jedem Pärchen hier vorne, Zustand und Bandsymbol,
das ich lese, darf ich eben nur ein Triebel haben,
sodass das hier dann in der Kantenrelation drin ist.
Wenn ich mehrere verschiedene Triebel hier hätte,
dann würde das bedeuten,
wenn ich in einem Zustand bin und ein A lese,
kann ich eine Aktion machen oder eben auch eine andere Aktion
und dass wir nicht die Terminismus,
das will ich am deterministischen Modell
nicht haben
Ja. Dann, da nochmal, was ich eben gesagt habe,
wenn ich jetzt so einen Übergang habe,
also vom Zustand Z, wenn ich das Bandsymbol lese,
wenn ich das mal ins UX lese, soll das hier passieren?
Damit ist gemeint, wenn ich im Zustand Z bin,
der lese Schreibkopf gerade über so ein Feld ist,
wo das Symbol X draufsteht,
dann wird dieses X durch X-Strich ersetzt, also das X-Strich hier.
Dann wird der Lese-Schreibkopf, führt dann diese Bewegung B aus,
wenn links, dann soll er sich einfällt,
nach links bewegen, rechts einfällt,
nach rechts und H der LSK bleibt an der Stelle,
wo er ist.
Und es wird eben in den Zustand Z-Strich gewechselt
Zwei Anmerkungen dazu, dass das Haar hier,
dass der LSK an der Stelle stehen bleibt, das soll nur bedeuten,
dass der Leseschreibkopf an der Stelle stehen bleibt.
Das bedeutet nicht, dass die Touring-Maschine anhält. Dem reführen wir
nachher auch noch ein. Also anhalten ist dann so wie beim DFA,
wenn der DFA blockiert oder so,
kann man auch bei der Touring-Maschine irgendwie sagen, okay,
hier stoppe ich jetzt oder so.
Das ist damit nicht gemeint, sondern eben nur,
dass der Leseschreibkopf an der Position auf dem Band bleibt,
wo er gerade auch ist.
Das war die eine Anmerkung, ich hatte noch eine zweite,
in den Halten Strich gewechselt
Ach so, genau. Und dieses nach links und rechts bewegen,
da muss man gleich bei den Zustandesdiagrammen so ein bisschen aufpassen,
weil bei den Zustandsdiagrammen ist es dann manchmal so,
ich habe einen Zustand, Z0,
ich kann mich irgendwie nach rechts bewegen,
also nach rechts intuitiv mehr bewegen und da steht der Zustand Z1 und auf der Bank in Schrift steht,
also auf der Kante steht irgendwie,
ich soll den LSK nach links bewegen,
also mit diesem links und rechts ist halt der Leseschreibkopfgemeinde und nicht irgendwie eine Bewegung innerhalb des Diagramms.
Das ist dann manchmal so ein bisschen verwirrend, sehen wir
auch gleich ein Beispiel. So, einmal zusammengefasst bis dahin,
endlich viele Zustände Eingabealphabet, aus dem die Eingabewörter aufgebaut sein sollen,
ein größeres Bandalphabet mit eben zusätzlichen Symbolen, damit ich irgendwie arbeiten kann.
Und auf jeden Fall ist da dieses spezielle Symbol Chart drin,
aber eben vielleicht auch noch sehr viel mehr.
Je nachdem, was man so zum Arbeiten braucht,
dann ist das eingebührt nach rechts hin unendlich und am Anfang
steht eben das eingebührt auf dem Band gefolgt, von ihm beliebig vielen von diesen Charps.
Und dann lesen wir nicht nur das eingebührt,
sondern können eben auf diesem eingeband auch irgendwie arbeiten.
Und anders als beim PDA,
da kamen wir eben ja bei dem Keller vom PDA immer
nur an das oberste Symbol heran und konnten das irgendwie löschen und dann kam das Zweitoberste heran,
können wir hier natürlich an jedes beliebige Symbol rankommen irgendwie.
Wir können beliebig den Leseschreibkopf über das Band bewegen und kommen
dann an alles ran
So, das informal bis dahin,
jetzt noch die Konfiguration und dann kommt ein Beispiel,
mit der Konfiguration wollen wir uns wieder irgendwie merken,
in welchem, ja, nicht Zustand,
sondern also insgesamt, wie das gerade aussieht,
wie gerade eben die Konfiguration der Touring-Maschine aussieht,
ähnlich auf wie beim PDA, da haben wir gesagt,
wir wollen den Zustand wissen,
wir wollen das Restwort auf dem Band noch wissen,
was wir noch lesen müssen und wir wollen den Kellerinhalt wissen.
Und hier wollen wir jetzt nur wissen,
in welchem Zustand wir sind und dann stehen hier links und rechts Gamma-Sterns,
da kommen wir gleich zu,
wenn wir nämlich so eine Touring-Maschine haben und wir haben
dann so eine Konfiguration UZW
Dann ist damit gemeint, dass die Touring-Maschine im Zustand Z
ist. Dass die Bandinschrift aktuell UV ist. Und das
links und rechts davon irgendwie noch beliebig viele Sharps sind.
Also rechts tatsächlich unendlich viele Links eben nur bis zum linken Rand.
Und dass das erste Symbol vom V da sitzt gerade der Leseschreibkopf drauf.
Deswegen diese Notation mit dem Z da irgendwie in der Mitte,
weil man jetzt das Z benutzen kann,
um sich zu merken, wo der Leseschreibkopf ist.
Also wenn ihr irgendwie wieder das Alkohol wollt,
auch in Bio-N habt und ihr lest am Anfang meinetwegen über alle As rüber,
dann habt ihr danach so eine Konfiguration A hoch N,
dann kommt der Zustand und dann die B hoch Ns.
Und dann merkt ihr euch damit eben, dass dadurch,
dass der Zustand bei den Bio-Ns ist,
merkt ihr euch,
dass da jetzt gerade der Leseschreibkopf über dem ersten B ist
So. Ja, und die Menge aller Konfigurationen nennen wir eben Conf M.
Gut, kann man machen. Beispiel. Eine etwas skurrile Touring-Maschine,
die ja auch nicht sonderlich viel tut, aber hier sieht man irgendwie,
wir fangen im Z0 an und jetzt gibt es zwei Kanten.
Die eine ist, dass wir, wenn wir ein A lesen,
dann wollen wir das A durch ein großes X ersetzen,
im Grunde genommen streichen wir es irgendwie.
Und mit dem Leseschreibkopf nach rechts gehen. Und wenn wir über Bs,
MB treffen, da lesen wir einfach rüber. So,
jetzt kann man hier sich schon überlegen, okay,
ich gehe hier also die ganze Zeit nach rechts Ja,
und irgendwann bin ich am Ende meines Eingebewortes angekommen,
was ich dadurch erkennen kann,
dass jetzt das erste Mal dieses Feld,
dieses Symbol für das leere Feld kommt.
Und dann kommt eben so ein Sharp hier. Wenn das kommt,
dann kann ich das lesen, schreibe es auch wieder,
also sprich, damit mache ich nichts.
Und ich bewege den Leseschreibkopf nach links.
Und ich wechsle den Zustand, Z1. Dadurch,
dass ich jetzt wieder nach links gegangen bin,
über welchem Symbol wird jetzt der Leseschreibkopf sein?
Mit welchem Symbol das Eingebewort ist? Bitte? Ja,
über B, ja, genau, aber noch genauer.
Es konnte ja auch ein A,
könnte ja auch mit einem A,
Bei welchem Symbol vom Eingewort wird er sein?
Ja, genau. Immer über dem Letzten. Hier liest
er über das ganze Eingewort irgendwie rüber. Und dann,
wenn er am Ende des Eingewortes angekommen ist,
dann bewegt sich der Leseschreibkopf ein Feld nach links.
Naja, und dann kann er nochmal gucken,
ob der irgendwie ein B ist. Und dann geht er
wieder ein Feld nach rechts und in einen Endzustand.
Folge der Konfiguration, als Beispiel hier dieses A-A-B. Achso,
du meintest bei den Beispielen, bei dem Beispiel stimmt das,
da ändert er bei B. Ja.
Beim Beispiel ist richtig, genau. Dann macht er aus
dem A so ein X und geht eben mit dem Leseschreibkopf
ein Feld nach rechts,
bleibt aber dem Zustand Z
Oder die Kante hier irgendwie genommen, die Kante und da oben das Oberste.
Die Bandinschrift jetzt ist Groß XAB und der Lese-Schreibkopf ist über dem A,
also über dem zweiten Symbol und ich bin dem Zustand Z0. Kann ich wieder gucken,
wenn ich im Zustand Z0 bin und ein A lese,
habe ich nur eine Möglichkeit, was ich machen kann,
das A durch ein großes X ersetzen und wieder mit dem Lese-Schreibkopf einfällt,
nach rechts gehen.
Jetzt kommt da so ein B, wir wieder hier gucken,
beim B mache ich irgendwie auf dem Band gar nichts,
aber ich bewege mich dem Lese-Schreibkopf nach rechts,
nicht irgendwie in der Konfiguration.
Jetzt kommt die Kante von Z0 nach Z1,
weil ich jetzt eben in Z0 bin
Und aktuell das Charpier lese. Und jetzt bewege ich mich eben wieder
ein Feld nach links. Und hier kann man schon sehen,
irgendwie dieses mit dem leeren Feld,
das kann man halt entweder dazu schreiben oder so wie hier bei den ersten Dingern,
da steht es da ja noch nicht,
weil da habe ich es nicht gebraucht.
Also der Charp schreibe ich dazu, wenn es relevant ist
und sonst lasse ich das einfach weg. So,
und jetzt ist er noch bei dem,
jetzt ist er in dem Zustand Z1 und er soll dann
B lesen und dann kann er eben das B lesen,
ein Feld nach rechts gehen und in den Zustand Z2 wechseln.
Und nachher werden wir dann sagen,
weil er jetzt in einem Endzustand ist,
akzeptiert er eben
dieses Wort
So, die Geschichte hier, also wir hatten ja jetzt die Konfiguration,
und das hier sind ja Konfigurationsübergänge,
das Symbol kennen wir ja schon so von DFAs und PDAs und so,
das wird hier jetzt umständlicher zu definieren als bei allen Modellen,
die wir vorher hatten, weil man eben auf so Sachen achten muss,
wie, wenn ich schon ganz links bin,
dann kann ich mich nicht weiter nach links bewegen,
das man soll ja nur einseitig unendlich sein,
also nur nach rechts unendlich.
Und um auf sowas eben alles aufzupassen,
deswegen wird die Definition ein bisschen umständlich,
aber die intuitive Idee hier ist eigentlich relativ klar,
also wenn man euch eine Touring-Maschine gibt, insbesondere die deterministische,
und man soll da irgendwie diese Folge von Konfiguration über Konfigurationsübergänge machen,
dann ist intuitiv relativ klar,
was man machen muss und man kann das auch gut ausführen,
ohne jetzt die Definition im Detail runter texten zu können.
Also, da steht es nochmal, wird verkompliziert dadurch,
dass dieses eingebewandt nach rechts und endlich ist,
nicht über den linken Rand bewegt werden soll und dass diese
Konfiration stets den relevanten Teil auf dem Eingebewandt darstellen sollen.
Mögliche Konfirmationen sind sowas da,
das haben wir eben auch alle schon so gesehen,
also irgendwie am Anfang Zustand,
dann kommt eben irgendwie das ganze Eingebewahrt oder der Zustand ist vielleicht irgendwo dazwischen,
sprich der LSK ist jetzt gerade auf dem B oder
wenn wir ganz nach rechts gewandert sind,
dann kommt als nächstes eben diese Sharp dazu
Mögliche Konfigurationen sind aber auch irgendwie sowas hier. Da habe ich dann,
also das nächste hier dieses Z-Sharp-Sharp-Sharp-A-X-X-B,
da habe ich vielleicht aus irgendwelchen Gründen das Wort erstmal nach rechts geschoben,
dann links ein Teil gelöscht oder so und da sind halt links vor dem Wort
leere Felder oder ich habe vielleicht die ersten drei Buchstaben des Wortes gelöscht oder irgendwie sowas.
Das hier geht auch,
da habe ich vielleicht irgendwie im Wort was gelöscht oder ich habe sowas gemacht wie,
vielleicht war das eingebewort A-A und ich wollte dann Sophie B schreiben,
wie ich As hatte und eins dazu und das habe ich nicht direkt dahinter gemacht,
sondern ich habe zwei Felder freigelassen oder irgendwie sowas,
dann kannst du das
auch machen
Oder da, da habe ich jetzt richtig viele Löcher drin.
So eine Konfiguration könnte auftreten, wenn man irgendwie A-Hoch-N-B-O-N-C-O-Rennen akzeptieren will.
Und dann löscht man immer ein A, ein B-1-C.
Und dann geht man wieder ganz am Anfang, dann spielt er
ein A-N-B-1-C oder so, dann entstehen da so Lücken.
Oder irgendwie sowas hier, dass das Z irgendwie zwischen irgendwelchen Lehrsymbolen ist. Und das,
was jetzt in der Konfiguration eben drin sein muss,
ist, dass in so einem Fall wie hier,
bei dem A-A-B-B-Z-Sharp, da ist es jetzt egal,
dass rechts davon noch weitere Sharps kommen.
Ich weiß, dadurch,
dass ich eins gemacht habe und keine weiteren aufschreibe,
weiß ich,
dahinter kommen eh
nur noch Lehrsymbole
Hier aber ist es irgendwie wichtig,
dass ich hier genau zwei Charps habe und da genau eins,
damit ich irgendwie weiß,
der lese Schreibkopf ist gerade an einer Position,
wo er sich erst mal zwei Felder nach links bewegen muss,
um wieder bei einem wirklichen Symbol anzukommen.
Also ich kann diese Lehrsymbole nicht beliebig sparen oder so,
sondern ich muss halt darauf aufpassen,
dass die zu dem Content des Eingebebandes passen.
War das klar, ihr guckt das gerade so zweifelnd.
Wem war das gerade nicht klar?
Jetzt kommt was total spannendes, Gegenfrage.
Wem war das gerade klar
Mal zwei, drei, vier Leuten. Also die Idee ist,
ihr habt so ein Eingabeband mit Feldern,
so ähnlich wie wenn ihr im Speicher irgendwie sagt,
ich habe ein Array von was auch immer,
ein Array von Integers.
So, jetzt habt ihr irgendwie 100 Integers. Und wenn
ihr jetzt irgendwie die ersten fünf Integers, in dem Array freilasst,
dann sind die ja trotzdem in dem Array drin.
Die werden nur gerade nicht benutzt. Und wenn ihr euch gerade
das sechste Feld anguckt, dann ist es halt wichtig,
dass das das sechste Feld ist und die anderen fünf davor leer sind.
Und hier ist es auch so,
ihr habt halt ein eigener Beband mit irgendwie unendlich vielen Cha-Variablen,
auch jeder kann irgendwie ein Symbol stehen oder eben dieses leere Feld.
Und das füllt ihr halt irgendwie
So, formal, jetzt kommen zwei fiese Folien,
auf die ich auch gar nicht so doll eingehen will.
Von allem fängt das dann nämlich an, sieht so aus.
Da steckt im Grunde genommen nur das drin,
was wir eben bei diesen Konfitionsübergängen schon einfach gemacht hatten.
Und man versucht eben, alle diese Fälle zu erwischen,
dass irgendwie, wenn ich in so einer Konfiguration bin,
P ist jetzt ein Zustand,
links von dem P steht irgendwie UY,
rechts von dem P steht XV.
Und es können halt so unterschiedliche Fälle auftreten.
V kann Lamda sein, V kann nicht Lamda sein,
Y kann das Schabsymbol sein oder nicht und so weiter.
Und um all diese Fälle abzudecken, gibt es eben,
ich glaube, 16 verschiedene Fallunterscheidungen.
Da sind schon mal vier
Wer mag, kann sich das zu Hause mal im Detail angucken,
wenn ihr das einfach ausführen könnt, reicht das völlig.
Also das, was wir eben an dem Beispiel gemacht haben.
Das geht dann nämlich noch weiter. Ja,
dann gibt es noch solche Fälle, dass hier die beiden untersten,
der zweite und dritte auf dieser Folie,
das sind die Fälle, die man braucht,
damit der Zustand nicht vom linken Rand weiterwandern kann,
damit das Band einseitig unendlich ist.
So, wie gesagt, könnt ihr euch zu Hause angucken,
wenn ihr mal wollt, könnt ihr mal gucken,
dass irgendwie tatsächlich alle Fälle abgedeckt sind.
Ansonsten geht es jetzt nicht darum,
dass man die Definition irgendwie auswendig weiß oder so,
sondern dass man die einfach benutzen kann und das ergibt sich
schon aus der intuitiven Benutzung
Dann, damit wieder die reflexive, transitive Hülle,
sprich, wenn wir mehrere Schritte auf einmal darstellen wollen,
dann so eine Folge von Konfiguration heißt Rechnung.
Und jetzt der spannende Teil, eine Erfolgsrechnung,
wenn ich hier starte, Startzustand und irgendwie ein Wort,
was aus Eingabesymbolen besteht, dann nochmal, um das zu betonen,
am Anfang stehen da eben nur Symbole aus diesem Siegma drauf.
Und wenn ich jetzt irgendwie rechne und zu einer Konfiguration komme,
in der ich einen Endzustand erreicht habe,
dann nenne ich das schon Erfolgsrechnung
Also Anfang starten, irgendwie zu einem Endzustand kommen, nenne ich Erfolgsrechnung.
Und jetzt wichtige Anmerkung, wenn ihr euch das hier anhört,
da oben steht es auch, ne?
Genau. Wenn ihr euch das hier anguckt,
die Erfolgsrechnung, jetzt wird nur gesagt,
ich soll da starten und ich soll zu diesem KN kommen.
Das KN sieht dann so aus, dass ich irgendwie links,
rechts davon irgendwie, also das U und das V,
ja, das U und das V,
es ist zusammen irgendwie die Bandinschrift,
ZE ist ein Endzustand
Und jetzt sieht es mehrere Sachen, die da ganz wichtig sind.
Erstens, ich muss das Eingebewort gar nicht komplett gelesen haben.
Da steht da ja nirgends. Das Wort kann sowas sein
wie A hoch NB hoch N. Das ist eingebewortet, irgendwas.
Und vielleicht sage ich schon, nachdem ich das erste A gesehen habe,
oh ja, will ich akzeptieren, ist alles gut.
Muss ich mir das Wort gar nicht komplett ansehen.
Steht hier auch nicht drin, dass ich das müsste.
Hier steht nur das, hier muss eine Startkonfiguration sein.
Und meine Endkonfiguration muss so aussehen, dass ich irgendwie in
einem Endzustand bin. Da wird nichts gefordert für das,
was dann auf dem Band steht. Da wird auch nichts gefordert,
wie viele Schritte ich gemacht haben müsste oder irgendwie sowas.
Da wird nur gesagt, wenn ich in eine Konfiguration komme,
in der ein Endzustand ist, ist alles okay.
Das ist das erste. Und das zweite ist,
da wird auch nicht gefordert,
dass dann Schluss wäre
Es könnte durchaus sein,
dass es nach dieser Konfiguration KN noch beliebig lange weitergeht.
Aber dann akzeptiere ich trotzdem schon und ich akzeptiere das eingabe Wort.
Also ich muss das nicht vollständig betrachten und sie akzeptiert,
sobald sie nach ihrem Zustand gelangt. Ja, genau.
Wenn ihr das heute mitnehmt, dass wir durfte.
Da nochmal die akzeptierte Sprache. Jene W aus Sigmar Stern,
bei denen ich eben in Z0W starten kann,
so wie wir das eben auch gesehen haben und dann irgendwie
über Konfigurationsübergänge zu einer Konfiguration komme,
in der
ein Endzustand auftritt
Das U und das V aussieht, ist völlig egal.
Die können leer sein, eins davon kann leer sein,
die können noch aus Eingabesymbolen bestehen.
Das Eingabewort kann komplett irgendwie durch Groß-IX ersetzt worden sein oder
komplett gelöscht worden sein oder was auch immer, ist egal.
Solange ich im Endzustand bin, akzeptiere ich das Wort.
Und was ich akzeptiere, ist, das wie,
was ursprünglich auf dem Band stand. Ich akzeptiere nicht das,
was ich danach vielleicht irgendwie daraus gemacht habe oder so,
sondern das wie, was am Anfang auf dem Band stand. Begründung,
wenn ihr irgendwie programmiert und ihr wollt irgendwie einen Algorithmus implementieren oder der soll korrekt sein oder so,
dann wollt ihr auch sagen, dass wenn die Eingaben stimmen,
dann tut mein Algorithmus was Korrektes,
was er dabei tut und ob er irgendwelche temporären Variablen mit Daten füllt und ob die danach richtig gelöscht sind oder was auch immer, ist alles egal erstmal.
Man will nur wissen, ob die Eingabe, der Eingabe zu der Ausgabe passt.
Da nochmal, nochmal in Ruth. Also, sie akzeptiert,
sobald sie in den Endzustand erreicht. Und sie akzeptiert das
ganze Eingabewort. Hätte ich eigentlich mehrere Ausrufezeichen setzen müssen. Erstens,
sie akzeptiert das ganze Eingabewort, ja, egal,
wie viel sie sich davon angeguckt hat und sie akzeptiert
vor allem das Eingabewort und nicht irgendwas anderes.
So, jetzt dürft ihr. Der Automat,
die hatten wir ja eben schon. Und das Wort A-A-B-B-A
akzeptiert er das.
Ja oder nein
Ihr dürft das anonym machen, dann kriege ich mehr Antworten.
A, B,
B. Ich glaube nicht
Musik Genau. Kann er nicht akzeptieren,
wenn er A, A, B, B,
A, wenn wir ihm das vorlegen,
dann bleibt er die ganze Zeit irgendwie,
also er liest das A, hier,
dann liest er nochmal das A, dann liest er das B,
dann liest er das B,
dann liest er das A,
jetzt am Ende des Wortes angekommen
Bewegt den Lese-Schreibkopf nach links. Und über welchem Symbol befindet
er sich jetzt? Überall was? Was war das?
X, ne? Genau. Das letzte A hier,
das wurde durch ein großes X ersetzt.
Das heißt, wenn ich mich dann wieder einfällt,
zurückbewege, befinde ich mich über einen großen X.
Da kann ich gar nichts mehr machen. Das heißt,
die Rechnung endet tatsächlich, aber ich bin dann im Zustand Z 0,
das ist kein Endzustand, also akzeptiere ich nicht.
Bitte? Ja, genau, bei Z1 bin ich.
Ist jetzt bin ich selbst in diese Falle gelaufen.
Also dieses Links da bedeutet nur,
dass der Lese-Schreibkopf sich nach links bewegt
Genau. Also das akzeptiert er nicht.
Er bleibt in Z1 und kann das nicht akzeptieren.
Nach der Diskussion von eben dürfte das
relativ einfach sein
Ja, genau. Jetzt liest er in dem Zustand Z0,
zwei As, zwei Bs,
dann steht da das Wort XXBB auf dem Band und erst gerade am Ende des Wortes,
also bei dem ersten Feld, nach dem Wort,
beim Schweine über dem Sharp,
damit ich dann in diesen Schreib komme nach links,
dann ist er wieder über dem B und dann liest er dieses B und geht zu dem Zustand Z2. Genau.
Also A-A lesen, Baby lesen,
ganz recht sein auf dem Wort und dann eben eins
links nach links machen
Da akzeptiert er
das Wort XXBB
Genau, ist auch richtig, also bei der Mehrheit,
akzeptiert er nicht, weil,
wenn ich ihm das als Wort vorlegen würde,
also wenn das ein Eingabewort wäre,
dann könnt er mit dem großen X gar nichts anfangen.
Es gibt hier nirgendwo einen Übergang,
wo als erstes Symbol ein X stehen würde.
Hier steht ein A, da steht ein B,
da steht ein Charpe und da steht auch ein B.
Also das große X kann ich
gar nicht lesen
Wenn das das Eingabewort wäre. Normalerweise würde man hier,
also wenn man nur das Zustandsübergangsdiagramm sieht,
dann würde man ohnehin davon ausgehen,
dass die Menge der Eingabesymbole die Menge A,
B ist und die Menge der Bandsymbole A, B,
Groß X und das Sharp.
Aber wenn das Eingabesymbol aus A,
B und Groß X bestehen würde, könnte man auch machen,
das Angewaltverbiet, dann könnte man das Wort gar nicht lesen.
Und wenn man, so wie eben sagt, naja,
das Wort kann ja aus dem kleinen A,
kleinen A, Groß B, Groß B hervorgegangen sein.
Und das akzeptiere ich ja, dann stimmt das zwar,
aber ich akzeptiere eben das Eingabewort und nicht irgendwie etwas,
was beide Rechnungen entstanden ist
Deswegen akzeptiere ich nicht dieses XX-Baby,
sondern eben das ursprüngliche Eingabewort.
Akzeptiere ich
das Wort
Natürlich das Wort ja, nein.
Okay. Und das
Mal gucken für die Ebene auf verbliebenen 11 Prozent.
Also jetzt füge ich noch die Kante,
jetzt füge ich noch von Z0 nach Z1 eine Kante dazu
mit den beiden Schafs wieder und bewegt ihnen diese Schreibkopf nach rechts,
akzeptiere ich jetzt
Ja. Ist nicht weniger geworden, ist ja spannend.
Weniger, die ja gesagt haben. Wer hat denn bei beiden Nein gesagt?
Echt jetzt? Waren das nur die Klicker in der Box,
die irgendwie so liegen, dass sie so klicken?
Würde es denn helfen, wenn ich sagen würde,
dass Nein richtig war bei beiden?
Wer hat jetzt bei beiden da eben gesagt,
oh ja, dann war ich das.
Also hat irgendjemand bei beiden Nein gesagt und kann gründen,
Der, der, der, der. Also bei
beiden Fragen eben war nein richtig, ne? Also,
der Unterschied hier ist ja auch nur, dass ich,
wenn ich diese Kante noch hinzufüge, dann lese ich zuerst das AABB.
Jetzt bin ich wie bei diesem Sharp. Lester Sharp,
geh wieder weiter nach rechts und jetzt kann ich
das letzte B lesen und ein Feld nach rechts gehen.
Das heißt, würde das ganze eigene Wort lesen,
mit der er Kante. Es ist aber, wie gesagt,
egal, ob ich das ganze Eingewort lese oder nicht,
es ist nur wichtig, ob ich in einen Endzustand komme.
Und bei beiden würde ich ja in einen Endzustand kommen.
Trotzdem sage ich, beide würde ich nicht akzeptieren.
Und immerhin 10, 11, 12 Prozent haben mir
ja zugestimmt, dass man das nicht akzeptieren würde.
Warum nicht? Ja, das ist so der Moment,
wo ihr jetzt alle faule Tomaten dabei haben müsstet,
um sie auf mich zu schmeißen.
Ja? Ja
Ja, warte, jetzt muss ich kurz nachdenken.
Nee, nee, nee, nach links gehen,
er bewegt hier nur den Lese-Schreibkopf nach links.
Er geht nicht von Z1 nach Z0, sondern er
bewegt hier nur den Lese-Schreibkopf nach links. Das heißt,
du bist bei dem, du landest hier bei diesem B,
landest bei dem Sharp, gehst jetzt mit dem Lese-Schreibkopf nach links,
bist dann wieder bei diesem B vor dem Sharp,
aber du bist immer noch im Zustand Z1.
Das heißt, du kannst dann nach rechts gehen mit
dem B und bist im Endzustand.
Er zitiert aber trotzdem nicht, warum
Ja. Ja, hier müsste es stehen,
wenn diese Kante ersetzt wird durch die.
Aber das ist nicht das, was ich meine.
Du hast recht, aber es ist nicht das, was ich meine.
So ist ein nicht deterministisches Modell. Stimmt. Warum kann ich
das Wort nicht akzeptieren? Ich bin auch gerade am Überlegen,
löse ich das noch auf oder nehme ich das einfach als Klausuraufgabe?
Ja, genau, brillant. Das ist überhaupt kein Eingabewort.
Das blöde Charpter ist ja gar nicht im Eingabealphabet drin.
Das heißt, sowas hier kann nur... So was
hier kann nur dann auf dem Eingabewald stehen,
wenn ich schon mal irgendwie gerechnet habe
Also, das ist deswegen nicht drin, weil das gar kein Angabewort ist.
Der Sharp soll explizit so ein Sondersymbol sein,
was nur beim Bandalphabet drin ist und nicht beim Eingabealphabet.
Wenn ihr... Genau, genau. Die Aussage eben war,
es ist am Anfang nicht drauf, ich kann es aber draufschreiben, genau.
Es ist am Anfang insofern drauf, als dass das Eingabewort
und dahinter nur Sharps. Wenn ihr jetzt sowas machen wollt,
wie, dass ihr ein Eingabewort haben wollt mit Blanks dazwischen,
also irgendwie Hallo-Welt und dazwischen Leerzeichen oder so,
dann müsst ihr euch halt in das Eingabealphabeten-Symbol reinschreiben,
was explizit als Leerzeichen gedacht ist und dann ist im Bandalphabet
aber eben ein Symbol drin,
was für das leere Feld gedacht ist und nicht für dieses
leere Zeichen
So, genau, deswegen, das soll immer ein spezielles Symbol sein, ne?
So, dann noch das. Welche Sprache akzeptiert die Touring-Maschine
eigentlich? Also wir hatten ja jetzt noch ein paar Wörter,
die sie akzeptiert, ein paar Wörter,
die sie nicht akzeptiert, welche Sprache akzeptiert die denn?
Es ist etwas irritierend,
dass ich gerade ein paar Leute mit dem Klicker gesehen habe,
so welche Sprache
A-Stern-B plus. Ja, also ganz viele As,
gefolgt von beliebig vielen Bs.
Fast. Fast. Also alles, was du gesagt hast,
kann sie, aber sie kann noch mehr.
A-Stern-B plus ist so fast. Auch fast. Also da war
die Antwort A-B-Stern, also A plus B-Stern und dann ein B,
auch fast. Wo ist sie denn dann,
wenn sie ein Wort aus A plus B-Stern gefolgt
von einem B gelesen hat,
wo es
ihm dann
Genau. Achso, ja, ist richtig. A plus B Sternen-B
plus, genau. All die Wörter, die auf B
enden. Genau. Ist richtig. Weil sie liest hier
im Grunde genommen einmal über das Wort komplett rüber,
setzt kleine As durch Xe und Bs lässt sie.
Hier geht sie jetzt auf das letzte Symbol. Ja,
jetzt guckt sie halt nochmal, ist das ein B oder nicht.
Und wenn das ein B ist, dann gehe ich in Endzustand und bin fertig.
Genau. Also A plus B Stern, B,
genau richtig. All die Wörter, die auf B enden.
Und es steht nur noch Herz. Nee, Moment, Moment.
Die Asia, das ist die Bewegung, die du mit
dem Leseschreibkuchen hast. Also du hast bei dem Wort,
du hattest vorher ein Eingebewort, das aus As und Bes besteht,
und jetzt für die As X,
so sieht das Wort jetzt aus.
Und bei der Touring-Maschine,
welche Sprache akzeptiert die denn?
Da dürft ihr klickern
Ja. Das Alphabet besteht aus irgendwas,
also ein B ist auf jeden Fall drin,
vielleicht noch ein bisschen mehr so A,
B,
Ja. AWCD Ja, sehr schön. Habe ich das B-Ständer hingeschrieben?
Wie Stern. Oh, Weiher. Da habe ich,
da habe ich gestern was falsch gemacht. Da ist ja
gar keine Antwort richtig, ist mir eben erst aufgefallen.
Oh, oh, oh. Wenn ich es richtig gemacht hätte,
wäre drittens richtig gewesen, weil ich dann über dem B
hier keinen Stern gemacht hätte
Also richtig ist, B-Sigmar Stern. Also alle Wörter,
die mit B beginnen. Warum? Wenn Wort mit B
beginnt, dann kann die Touring-Maschine dieses B lesen.
Geht halt nach rechts mit dem Lese-Schreibkopf, aber ist relativ egal.
Und sie ist dann in einem Endzustand. Das heißt,
egal wie das eigene Wort aussieht, wie es danach aussieht, es wird akzeptiert.
Also sobald es mit B beginnt, akzeptiert es.
Hier ist gerade das Problem, also das hier klappt deswegen nicht,
weil ich aus den B-Sternen ja auch das Lamm da rausnehmen könnte,
also das leere Wort.
Das heißt, die dritte ist eigentlich, bei der dritten
steht eigentlich das gleiche wie Sigmar Stern und Sigmar Stern akzeptiert sie nicht.
Nur B akzeptiert sie auch nicht,
weil sie akzeptiert zwar das B,
aber sie akzeptiert dann eben auch B gefolgt von irgendwas
völlig Beliebigen
Nur Bestern akzeptiert sie auch nicht,
sondern eben auch so was wie B-A-A oder so.
Und das hier geht gar nicht,
weil sie halt vorneweg nicht was völlig Beliebiges lesen kann.
Also sie liest das erste B, den ersten Buchstaben B und dann akzeptiert sie.
Bitte? Naja, also das hier akzeptiert sie zwar,
aber das ist nicht die von der Touring-Maschine akzeptierte Sprache.
Sie akzeptiert sie noch viel mehr. Sie akzeptiert es ja
nicht nur das Wort B, sondern auch B-A,
B-A-B und so weiter.
Aber drei, auch wenn ich die anlasse,
akzeptiert sie ja auch
Nee, war jetzt gerade die Bemerkung, aber drei wäre doch auch richtig.
Schön wäre es gewesen, hätte ich ja keinen Fehler gemacht,
aber nein, bei dem diese Sprache hier, diese dritte.
Das ist das Gleiche wie Sigma Stern. Jedes Wort,
was hier drin ist, ist auch in Sigma Stern, das ist klar.
Und ich kann aber auch jedes Wort in Sigma Stern in
dieser Menge wiederfinden, indem ich nämlich aus dem ersten,
hier aus dem B-Stern das leere Wort nehme.
Dann habe ich leeres Wort verknüpft mit Sigma Stern,
also Sigma Stern. Das heißt,
das hier ist komplett Sigma Stern und komplett Sigma Stern
akzeptiert die Touring-Maschine aber auch nicht,
weil sie Wörter,
die mit A beginnt,
nicht akzeptiert
Ähm... B plus... Ja, weil B plus
Siegmar Stern wieder das Gleiche ist wie B-Sigmar Stern.
Das könntest du machen. Genau. Also eins und zwei
ist zu wenig, drei und vier ist zu viel.
Bitte? Eins ist eine sehr kleine Sprache, ja.
Bitte? Nee, welche Sprache akzeptiert diese Touring-Maschine?
Damit ist gemeint eine Sprache M, sodass gilt,
die von Naturenmaschinen akzeptierte Sprache ist,
Nicht, ob das hier Teilmengen der von der Toury-Maschine
akzeptierten Sprache sind, sondern ist es das genau?
Das ist immer gemeint, wenn man sagt, welche Sprache explodiert sie.
Also, dass es genau diese Sprache sein muss.
Genau. Also, das ist die Toury-Maschine für W beginnt mit AMB.
So, jetzt, wie spielst du das eigentlich? 13.07 Uhr.
Jetzt haben wir die ganze Zeit zur Sprachen akzeptiert.
Hatten wir mit den anderen Modellen ja auch immer,
dass wir irgendwie auch in Beochin akzeptiert haben oder A,
Stern-B-Stern oder solche Geschichten.
Und Touring-Maschinen können aber noch irgendwie was viel schöneres.
Touring-Maschinen können nämlich
Funktionen berechnen
Und wenn wir sagen, am Anfang habe ich ja gesagt,
irgendwie eine Touring-Maschine dient als Modell für Moment,
dient als Modell für Algorithmen,
dann winkt ihr euch gegenseitig oder mir oder wo denn?
Bitte? Nee, bei dem lieben Wort kommt er ja nicht in Endzustand.
Beim leeren Wort könnte es... Hier ja,
also hier ist ja, also in diesem L,
meinst du jetzt, was im Älteren ist oder was
von der Touring-Maschine akzeptiert wird
In L. In L sind jene Wörter aus A,
B Stern mit der Eigenschaft, das W auf B endet.
Ja. War da noch eine Frage? Nee. Also
, jetzt Funktion berechnen. Und wenn wir halt sagen,
dass eine Turing-Maschine irgendwie das abstrakte Modell eines beliebigen Computerprogramms oder Algorithmus ist oder so sein wollen,
soll, dann geht es eben nicht nur um Sprachen akzeptieren,
sondern eben auch darum, irgendwie Dinge zu berechnen.
Also Additionsfunktionen, so Praktionsfunktionen, kompliziertere Dinge.
Und Turing-Maschinen können das. Und wir gucken uns jetzt nochmal
an,
wie sie das macht
Und zwar, wir nehmen uns ein Alphabet Sigmar und gucken uns erstmal so
eine Wortfunktion von Sigmar, Sternen nach Sigmar Stern an.
Also beispielsweise die Funktion, die ein beliebiges Wort nimmt und
hinten ein A ranhängt, ist eine Wortfunktion.
Oder die ein Wort nimmt und alle As rausstreicht,
dann wird eben aus dem Wort A, A, B,
B nur noch das Wort B, B, das ist eine Wortfunktion.
Und die sollen dann Touring berechenbar heißen oder eben kürzer berechenbar
, wenn Folgendes gilt. Man kann eine Touring-Maschine bauen,
nennen wir die mal A,
mit der Eigenschaft Wenn ich in der Startkonfliktion Z0W starte,
dann lande ich genau dann in so einer Konfliktion ZEV mit der Eigenschaft,
dass ZENN-Zustand ist, wenn FW gleich V ist.
Sprich, ich tue irgendwas in diese Funktion rein,
ich tue das weh in die Funktion rein,
F von W gleich V kommt raus und die Turing-Maschine kann eben,
wenn ich ihm weh vorlege, rumrechnen und denke,
man steht dann V auf dem Band.
Und dann eben noch mit dem zusätzlichen,
mit der zusätzlichen Eigenschaft,
dass der Leseschreibkopf ganz links bei dem Wort noch stehen
soll und ich dann in einem Endzustand bin
Also Endzustand ist ja irgendwie klar, dass man irgendwie,
man will ja ausdrücken, hey, ich bin jetzt fertig,
also ich will aus dem W wirklich das Foul gemacht haben und dass ich ganz links stehen soll,
das ist nur sowas, das hat man mal definiert,
weil das irgendwie einfacher ist.
Kann man aber immer relativ schnell machen,
wenn ich in einem Endzustand bin und weiß,
ich bin fertig, dann gehe ich jetzt quasi halt,
bevor ich in diesen Endzustand gehe, noch in so einen Zustand,
in dem ich ja ganz nach links gehe auf dem Band,
dann ist fertig.
Dann wollen wir sagen, sie berechnet so eine Wortfunktion.
So, jetzt kann sie auch solche Funktionen von N hoch
R nach N hoch S berechnen,
also von R natürlichen Zahlen auf S natürliche Zahlen,
typisches Beispiel Additionsfunktion,
F von XY ist gleich X plus Y. Oder F von X Quadra,
F von X gleich X Quadrat.
Solche Dinger. Und zwar machen wir das dann so,
dass wir in dem Staatszustand Z0 starten.
Und jetzt ist eben für... Es kriegt als Argumente M1
bis MR. Und die kodieren wir quasi unnäher.
Also für M1 schreiben wir M1 viele Nullen hin.
Oder in dem Fall plus eins,
damit man sich auch die Zahl Null merken kann.
Und dann trennt man das immer durch eine Eins
Also wer sich gerade hier an der Null stört,
der schreibt sich da ein großes X hin, das geht auch,
dann würde man sich die Zahl M1 eben durch M1 viele Xe merken.
Und damit ich mir auch die Zahl M1 gleich Null merken kann,
muss ich eben mit einem Meer anfangen,
dass ich sozusagen ein X hinschreibe,
wenn ich die Null meine, zwei Xe hinschreibe,
wenn ich die eins meine, drei Xe hinschreibe,
wenn ich die zwei meine und so weiter.
Und dann hier hat man halt Null hingenommen,
eins immer als Trennsymbol und rauskommen soll dann eben,
ich bin im Endzustand,
bin da auch ganz links und hier wieder die UNER-Kodierung des Ergebnisses.
Null von null hoch,
Nhoch-1 plus 1, null hoch, Nhoch-2 plus 1
und so weiter
So könnte man dann eine, so eine Funktion berechnen.
Als Beispiel, wenn man da die Additionsfunktion hätte,
dann würde man eben starten mit diesem,
mit M hoch 1 vielen Nullen und M2 vielen Nullen nochmal.
Und dann würde man einfach das eins in der Mitte streichen und einen Block,
also die Blöcke halt aneinander schieben und dann hat man da
genau M1 plus M2 plus 2 viele Nullen stehen.
Also genau die Summe. Ja. Und weil das aber
ein bisschen umständlich ist mit diesen UNER-Kudierungen,
üblicherweise arbeitet man ja auch im Computer irgendwie mit Vinär-Kudierung,
macht man das hier eben auch so.
Wir arbeiten oft nicht mit dieser Union-Kudierung, sondern eben mit
binärer Kodierung. Das heißt, die Zahl 9 wird durch
das Wort 1001 ausgedrückt
Und hier ist es ganz wichtig, da ist es jetzt ein Wort.
Ich drücke halt die Zahl 9 durch dieses Wort aus.
Und dann trenne ich noch mehrere Argumente eben durch irgendein spezielles Symbol. Das heißt,
ich kann zum Beispiel diese Funktion hier F von XY,
soll X plus Y sein, die kann ich als Wortfunktion ausdrücken,
die dieses Wort hier nimmt.
Da habe ich jetzt XS 9 und Y ist 4. Und
dann eben den Wert 13 daraus berechnet,
sprich dieses Wort muss dann irgendwie rauskommen.
Das macht man üblicherweise,
wenn man Wortfunktion berechnet.
Wenn man Funktionen berechnet
Also so ähnlich auch wie beim, in Main-Methoden,
in Java und C oder so,
wo ich irgendwie so eine Folge von Strings habe oder in Every von Strings oder sowas,
kriege ich hier jetzt eben auch so eine Folge von irgendwie Eingabeargumenten,
immer schick getrennt durch irgendein Symbol.
Ich habe jetzt das Dollar genommen, könnt ihr auch eigentlich ein anderes nehmen.
Und dann müsst ihr irgendwie mit diesen Argumenten rechnen und dann
muss eben das Ergebnis rauskommen und der Leseschreibkopf ist ganz links
und ihr seid in einem Endzustand.
Klar. Oder Fragen
Dann überlegen wir uns mal sowas hier. Eine TM,
die die Funktion F von X gleich X minus 1 berechnet.
X ist eine natürliche Zahl in Binärkodierung. Und wir wollen
jetzt die Wortfunktion von X nach F von X berechnen.
Das heißt, wir wollen beispielsweise von 1-0,
was ja die Zahl 2 modelliert, wollen wir zu 1 kommen,
was denn die Zahl 1 modelliert.
Und von 1-0-0,
was irgendwie die Zahl 4 modelliert,
wollen wir zu 1-1 kommen, was die Zahl 3 darstellt.
Wie würdet ihr das machen? Ich würde mal sehen,
das Wort zu Ende lesen, dann eins ist am links,
Also. Warte. Also, du liest das Wort,
du liest einmal komplett über das Wort rüber.
Aber da könnt ihr auch schon eine Null gestanden haben.
Nee, dann hättest du ja aus 1-0,
1-0-0 gemacht.
War schon fast richtig. Die Hälfte der Zahlen erwischst du schon.
Ist fast richtig, ja? Ja, genau.
Aber genau das machst du. Wenn dann der einsteht,
machst du eine Null raus,
bist fertig
Wenn er null steht, machst du eine Eins raus,
gehst einen Schritt nach links und machst halt weiter.
Genau. Und dann ist fertig. Also, wir fahren zum
weitesten rechtsstehenden Zeichen. Wenn das eine Einzel schreibt, eine Null,
und wir fahren ganz nach links und gehen in den Endzustand.
Und wenn es eben keine Eins ist,
sondern wenn es eine Null ist, dann schreiben wir dafür eine Eins,
gehen ein Feld nach links und machen bei Schritt zwei weiter.
Was machen wir dann immer so weiter? Eine Sache noch,
auf die man hier aufpassen muss, wenn das hier mit der,
ist dies eine Einschreibe eine Null und hör auf,
wenn das ganz zum Schluss auftritt,
dann hätte man jetzt gerade
beispielsweise aus dem
Nee, was hat man da gemacht? Dann... Ach so,
genau, da macht man zum Beispiel aus 1-0-0-0,
also aus der Zahl 4,
hätte man jetzt 0-1-1 gemacht,
sprich, wenn die allererste Zahl eine 1 ist,
würde man aus der eine Null machen.
Und die könnte man auch wegschmeißen. Also,
jetzt kann man sich darüber streiten, ob man sagen will,
dass 0-1-1-Äquivalent zu 1-1 ist oder nicht.
Sprich, da kann man noch so was machen.
Wie ist dies eine 1 und ist das das erste Symbol?
Dann lösche es einfach oder irgendwie sowas. Dann hat man
keine führenden Nullen. Welches Problem tritt auf,
wenn man F von X gleich X plus 1 rechnen will?
Das würde man ja so ähnlich machen.
Ich fahre ganz nach rechts und jetzt mache ich aus einer
Null eine Eins und hör auf oder ich mache aus einer Eins eine Null
und mache das weiter. Das ist eine Eins, das ist eine Eins.
Genau. Beim Erhöhen um eins, wenn ich bei so einem Wort bin,
das nur aus Einsen besteht und ich will das um eins erhöhen,
dann brauche ich eben links ein Feld mehr. Das heißt,
wenn ich plus eins rechne, dann kann man sich überlegen,
dass man vielleicht erstmal einmal rübergeht, guckt,
ob das Wort nur aus Einsen besteht und falls ja,
dann schiebt man es erstmal ein Feld nach rechts,
macht dann aus allen Nullen und schreibt vorne die Einzelnen oder
man macht das immer mit diesem Einfeld nach rechts schieben,
kann man sich halt aussuchen,
aber das ist halt das Problem bei plus eins
So, wie würdet ihr denn sowas machen?
Eine Touring-Maschine, die X plus Y berechnet. X und Y
und wieder binäre Zahlen. Wieder natürliche Zahlen im Binärkulierung.
Und wir wollen jetzt diese Wortfunktion von X Dollar Y,
also wie gesagt, X und Y irgendwie als Binärkulierung gegeben,
nach F von XY berechnen.
Wie macht ihr das denn? Naja,
so wie ihr halt Binärzahlen kodiert,
Binärzahlen addiert
Hat er die doch bestimmt in Rechnerstrukturen? Ich bin mir
relativ sicher. Problem ist halt, dass kann tierischer Nervkram werden,
weil man halt gucken muss, wie lang das Ergebnis wird. Man kann jetzt anfangen,
liest das erste Symbol von X und das letzte Symbol von Quatsch liest das letzte Symbol von X und das letzte Symbol von Y,
merkt sich irgendwie, dass man die sich angeguckt hat,
beispielsweise indem man aus einer Null null mit dem Dach macht und aus der 1 auch eine 1 mit dem Dach,
dann hat man sich markiert,
dass man sich die Zahlen schon mal angeguckt hat.
Jetzt merkt man sich im Zustand, was das für Zahlen waren,
sprich, man geht in unseren Zustand fett 0-0,
wenn es beides Nullen war, Z0-1,
wenn 0-1 war, Z1-0 und so weiter,
hat man sich das gemerkt.
Und jetzt fährt man irgendwie ganz weit nach rechts und schreibt da dieses Symbol einmal hin,
das, was bei der Summe da rauskommt.
Und dann fährt man wieder nach links, nimmt sich das
nächste Symbol von X und Y und fährt wieder nach rechts,
schreibt das Ergebnis dahin.
Und dann braucht man eben noch ein paar mehr Zustände,
damit man sich merken kann, ob man einen Überhang hat oder nicht.
Und dann kriegt man das hin. Das ist ziemlich ein Nervkram,
wenn man dafür auch wirklich so ein Diagramm angeben will,
dann ist das eine enge Arbeit.
Aber man kann sich halt überlegen, dass das irgendwie
gehen muss
So, jetzt berechnet von Funktionen und Akzeptieren von Sprachen
ist ähnlich. Bei diesem Berechnen von Funktionen,
da sind wir ja immer irgendwie ausgegangen davon,
dass wir ein Eingebewort kriegen,
wir irgendwie damit rumarbeiten und wir ein Ausgabewort quasi kriegen und wir im Endzustand ganz link sind.
Bei einer Sprache, die wir akzeptieren wollen,
haben wir gesagt, da will ich eigentlich nur irgendwie auf
dem Eingebewort arbeiten und in einen Endzustand kommen.
Trotzdem ist das im Grunde genommen das Gleiche. Deswegen konzentriert man
sich nachher gar nicht mehr so sehr auf das Berechnen von Funktionen,
sondern immer auf das Akzeptieren von Sprachen,
weil man da eben leichter mit so Ja-Nein-Antworten arbeiten kann.
Entweder ist ein Wort in der Sprache oder eben nicht
Warum ist das das Gleiche? Akzeptieren einer Sprache,
M ist im Grunde genommen das Berechnen der charakteristischen Funktion.
Hier unten steht nochmal die charakteristische Funktion,
wenn ich eine Menge M habe,
dann tut die charakteristische Funktion von M folgendes, wenn,
wenn X in M ist,
dann bilde ich X auf 1 ab und wenn X nicht in M ist,
dann bilde ich es auf null ab.
Also. Ski von X ist eins genau dann,
wenn X in M drin ist.
Deswegen auch charakteristische Funktionen. Eins ist sozusagen Ja sagen,
null ist Nein sagen
Eine Touring-Maschine, die diese Funktion berechnet,
tut das Gleiche wie eine Touring-Maschine, die die Sprach-M akzeptiert.
Die würde nämlich bei Vorlage dieses Wortes wie aus M irgendwie rechnen.
Und jetzt kommt entweder 1 oder 0 raus und ich bin halt in einem Endzustand.
Und ich bin halt genau dann in einem Endzustand,
wenn eins rausgekommen ist und das bedeutet dann ja auch,
dass das Wort in M drin sein soll.
Also tut die Funktion, tut die Touring-Maschine genau das Gleiche.
Und wenn ich eine Funktion berechne,
wenn ich so eine Funktion M nach N berechne,
dann ist das im Grunde genommen das Gleiche wie,
wenn ich diese Sprache hier, wenn ich die akzeptiere.
Immer die Toupel X, F von X mit X
ist in
Muss man ein bisschen aufpassen, M&N müssen eventuell geeignet,
kodiert sein. Und wenn die Funktion nur partiell ist,
dann gibt es halt nicht für jedes X in Amson Tupel.
Also hier müsst ihr eigentlich stehen, X in M und geeignet
kodiert und nur, wenn F von X dann auch existiert.
Und dann ist das aber auch wieder das Gleiche.
Sprich, eine Touring-Maschine, die diese Funktion F berechnet,
die könnt ihr quasi ganz schnell in einen umwandeln,
die die Sprache ja akzeptiert.
Und eine Touring-Maschine, die diese Sprache akzeptiert, könnt ihr
ganz schnell in eine umwandeln, die die Funktion berechnet.
Beispiel, wenn wir dieses F von XY,
F von XY gleich X plus Y haben,
berechnen geht wie oben,
also wie wir das eben kurz diskutiert haben,
wir haben dann Rechnungen dieser Art irgendwie
Ich fange in dieser Konfiguration an und ich ende irgendwie in der Konfiguration,
wobei das FXY jetzt eben die Binierkodierung dieses Ergebnisses ist.
Und wenn ich so eine, wenn ich eine Touring-Maschine habe,
die das tut, dann kann ich mir daraus eine basteln,
die diese Sprache hier akzeptiert.
Wie mache ich das? Ich nehme die ersten beiden Elemente aus dem Tupel.
Also ich kriege ja so ein Triple XYZ vorgelegt.
Jetzt nehme ich mir die ersten beiden Elemente raus,
X und Y. Berechne mit der Touring-Maschine,
die die Funktion berechnet, die Summe, F von XY.
Und jetzt vergleiche ich, ob die Summe eben
dem dritten Element im People entspricht oder nicht
Und dann bin ich fertig, dann habe ich eine Touring-Maschine,
dann habe ich aus der Touring-Maschine, die diese Funktion berechnet,
eine Touring-Maschine gebastelt, die diese Sprache akzeptiert.
Und da steckt eben als Subroutine sozusagen die Touring-Maschine drin, die Funktion da oben berechnet.
Ja, und im Grunde genommen programmieren mit einer sehr, sehr eingeschränkten Programmiersprache.
Also ihr habt das eben schon so ein bisschen gemerkt,
wenn man nicht mehr ganz auf dem Level ist,
dass man sagt, irgendwie von links nach rechts sich bewegen oder so,
sondern wenn man schon irgendwie damit arbeitet,
ich habe eine Touring-Maschine, die diese Funktion berechnet,
so,
und dann benutze ich die als Subroutine,
dann nähert sich das immer mehr
dem eigentlichen Programmieren an
Aber so im Kern ist das eben sehr, sehr eingeschränkt.
So. Genau. Jetzt noch mal zwei weitere Beispiele für Sprachen akzeptieren.
Eine Touring-Maschine für A auch NBON. Wie würdet ihr das
machen? Also ihr kriegt als Eingabewort auch ein BON,
was muss die Touring-Maschine tun, um so ein Wort zu akzeptieren.
Ihr könnt einen Keller simulieren, aber das ist ein
bisschen viel Arbeit. Oh, ihr könnt auch
ganz viele andere Sachen machen
Na, was würdet ihr machen? Na,
ihr trefft auf das erste A, was macht ihr?
Ihr gebt auf. Keine Lust mehr.
Oder wie würdet ihr ein C-Programm dafür schreiben?
Ist mir
auch recht
Nicht. Genau. Sondern durch die Gegend fahren. Jetzt kann man sich,
also die Antwort eben war,
ich streiche das erste A oder mache da einen Arschstrich raus oder so,
dann gehe ich zu den B, streiche mir da ein B raus,
fahre wieder zu den Arsch, streiche mir da ein A raus.
Und jetzt kann man halt Unterschiede, kann man sich beispielsweise überlegen,
dass man das erste A streicht und das letzte B und
dann das zweite A und das vorletzte B und das dritte A und das drittletzte B,
so dann wächst das so nach innen oder man kann auch irgendwie das erste A und das erste B streichen,
dann wieder da gehen, das zweite A,
das zweite B streichen oder so,
das kann man halt unterschiedlich machen.
Aber das ist so die Kernidee, genau.
Und dann muss man halt darauf aufpassen, dass man irgendwann,
wenn keine As mehr da sind,
dann dürfen auch keine Bs mehr da sein,
Eventual muss man das nochmal checken oder so.
Aber das ist so
die Kernidee
Alternativ kann man auch sowas machen, wie sich rechts ein Zähler bauen,
also rechts von dem A, auch in B hochN,
mache ich mir nochmal einen Dollarzeichner mit.
Ich weiß, da ist die Grenze und dann danach kommt
ein Zähler. Und jetzt kommt das erste A,
ich streiche das durch, ich erhöhe meinen Zähler um eins.
Jetzt kommt das zweite B, ich streiche das durch,
erhöhe meinen Zähler um eins und so weiter.
Jetzt habe ich irgendwann gezählt, wie viele Asters sind.
Wenn jetzt die Bs kommen, dann gehe ich wieder zu
meinen Zähler und für jedes B verringere ich den Zähler um eins.
Und dann muss ich irgendwie auf Null kommen.
Das kann man auch machen. Dann hat man viel umständlicher,
aber dann hat man so eine,
während man die Tour im Maschinen für plus eins und minus eins
benutzt.
Ja, genau. Nee,
also die Aussage war gerade das leere Wort,
muss man ja auch akzeptieren, genau,
das würde man einfach mit einer Extrankeit, das ist ja sozusagen ein Spezialfall,
die machst du mit einer extra Kante aus dem Staatszustand,
wenn gleich das erste gelesene Wort, das Sharp ist,
sprich, wenn nichts auf dem Band steht,
akzeptiere ich, fertig, lass du das, ne,
wenn du aus dem Staatszustand gleichen Endzustand machst,
dann akzeptierst du alles,
du müsst ja quasi aus der Startkonfiguration in null Schritten
zu einer Endkonfiguration gekommen,
das willst du ja nicht machen
Eine Touring-Maschine, die F von W gleich wie Reverse berechnet.
Also, ihr kriegt ein Wort 0011. Genau.
0011 und da soll das Wort 1100 rauskommen.
Wie macht ihr das denn? War das eine Meldung?
Wie macht ihr das?
Ja.
Warte, du willst jede Zahl invertieren. Also aus Null
in der Eins machen, aus 1-0. Nee,
dann drehst du es ja nicht um.
Jetzt würdest du aus 1-1, 1-1,
das Wort 0-0, 0-0 machen.
Jetzt würdest du die Sprache entscheiden, bei der W Gleich-WREF ist.
Du sollst aber die Funktionen berechnen, bei der F von W,
also Christenwort W, vorgelegt und du willst das umdrehen.
Sonst hast du recht, für das,
was du machen wolltest,
ist richtig
Ihr fangt irgendwie mit dem Wort an,
nehmt das erste Symbol, streicht das weg. Eigentlich,
ihr fangt mit dem Wort an, geht ganz nach rechts,
merkt euch da irgendwie mit so einem Marker, okay,
hier, Dollarzeichenmarker oder sowas.
Jetzt geht ja in den Anfang des Wortes, streicht das erste Symbol weg.
Nee, warte, funktioniert das? Nee,
ihr geht an das Ende des Wortes, streicht das letzte
Symbol weg und schreibt das als erstes hinter den Marker.
Dann geht ihr wieder über den Marker rüber,
liest das vorletzte Symbol und schreibt das als zweites Symbol
rechts von dem Marker hin und immer so weiter.
Also, ein Marker links und rechts vom Wort setzen,
damit man immer weiß, wo irgendwie das Wort,
das ursprüngliche Wort W ist.
Letztes Symbol von W lesen durch Sharp ersetzen,
sprich es löschen nach rechts über das Dollar rüberwandern und das Symbol,
was man eben gelesen hat, dort speichern.
Und hier wichtig, das Symbol, was wir hier lesen,
lese letztes Symbol von W oder setzt es durch Sharp.
Wir müssen uns ja irgendwie merken, welches wir da gelesen haben.
Das merken wir jetzt einfach im Zustand. Also entweder ist der Zustand Z0,
das heißt, wir haben gerade 0 gelesen oder Z1,
das heißt, wir haben eine 1 gelesen.
Und wenn wir dann über das Dollar rübergewandert sind, dann wissen wir,
weil wir das im Zustand mit uns durch die Gegend schleppen,
was wir schreiben wollen.
Nach rechts darfst du es mit den Fälle genau aus rechtsseitig unendlich.
Hier muss man halt,
wenn ich einen Marker sowohl links als auch rechts von dem eigenen Wort W setzen will,
dann muss ich halt das Wort einmal um ein Feld komplett
nach rechts verschieben und jetzt kann ich links einen Dollar zahlen,
den rechts ein Dollar zeichnen
Das ist auch einer der Gründe,
warum man üblicherweise mit Touri-Maschinen eigentlich keine Zustandsdiagramme mehr macht,
weil das ja irgendwie für solche Sachen brauchst du irgendwie ewig,
sondern das dann so angibt und dann ist jedem eigentlich klar,
dass das funktioniert.
Genau, so was kommt jetzt. Genau,
das wiederholen wir einfach die ganze Zeit. Das heißt,
wir löschen dieses Wort W von rechts nach links und bauen
das Wort WREF von links nach rechts auf. Ja,
und da müssen wir noch so ein bisschen aufpassen,
bei wem müssen wir über diese gelöschten Buchstaben rübergehen,
wenn wir das von rechts nach links löschen,
dann stehen da immer mehr Charps,
lesen wir immer weiter rüber,
bis wir irgendwann beim zweiten Dollar-Zeichen sind und bei WREF muss
über das schon geschriebene Teilwort rüber
gelesen werden
Wie zu Ende, wenn wir auf das zweite Dollar treffen.
Die beiden Dollars noch löschen und den Kopf an den Anfang von VRF machen. Weil hier,
wenn das VR zu Ende gelesen wurde und man auf das zweite Dollar trifft,
dann sieht die aktuelle Bandinschrift so aus,
dass ich ein Dollar-Zeichen habe,
dann so viele Sharps wie vorher V-Buchstaben hatte.
Dann kommt noch ein Dollar-Zeichen, dann kommt das Wort VRF,
um eine Funktion zu berechnen, will ich ja in einem
Endzustand sein und dahinter kommt nur noch das Wort VRF.
Also lösche die beiden Dollars und bewege den Kopf in der
Hand von VRF. Als Zustandsübergangsdiagramm sieht das richtig übel aus,
das sieht dann irgendwie so aus
Hausaufgabe implementieren Sie das in Assembler. Also, wenn ihr Lust habt,
könnt ihr euch mal zu Hause angucken, wie das funktioniert.
Das soll nur einmal einen Eindruck davon vermitteln,
dass diese Zustandsübergangsdiagramme so ein bisschen grüne werden,
dass man die im Grunde genommen ohne gute Dokumentation auch nicht mehr lesen kann.
Also, das sieht wirklich ein bisschen aus wie das Hemler-Code
so. Ist ja noch cool, ist netter.
Ah. So sieht das halt irgendwie aus.
Mit einer guten Erklärung ist auch relativ gut zu sehen,
was da passiert. Irgendwie hier wird, glaube ich,
erstmal nach rechts über das ganze Wort rüber gelesen,
um halt diese Dollarzeichen rechts und links zu setzen.
Und hier guckt er jetzt immer,
trifft er auf eine Eins oder auf eine Null
In Z1 merkte sich die 1 in Z0,
merkte sich die Null und er geht da halt irgendwie rüber,
um die richtige Stelle, in dem bisher aufgebauten Reverse Ward
zu finden und mit der Kante hier sagt er so,
jetzt bin ich, jetzt suche ich wieder den nächsten Buchstaben.
Und irgendwann ist er halt fertig und dann löscht er
hier noch irgendwie die beiden Dollarzeichen und geht in Endzustand.
Und hier ist die Kante für den Sonderfall,
dass wir mit dem leeren Wort anfangen, von diesem ZS nach ZE direkt.
So, nochmal drei Fragen, glaube ich, für,
ja,
Also, eine Funktion sieht man nach Sigmar Stern,
das Brechen war genau dann,
wenn es eine Touring-Maschine A gibt mit Z0W geht es nach ZV,
genau dann, wenn FW gleich V ist.
Fehler in Zeile 1,
2,
3 oder
Eins, zwei, drei oder vier, ja.
1, 2, 3 oder vier.
Genau, in der zweiten ist ein Fehler.
Was ist da falsch
Genau. Das Z, da muss ein Endzustand sein.
Das ist der Fehler. Bei den anderen drei Zeilen ist vielleicht ein Kommafehler drin,
weiß ich nicht, aber inhaltlich sind die richtig.
Wenn ich die beiden Funktionen F und G,
also ich habe zwei Funktionen, F und G,
die von den natürlichen Zahlen auf die natürlichen Zahlen abbilden und
die sind jetzt beide Touring berechenbar.
Wieder so irgendwie, die natürliche Zahl als Binärkodierung gegeben,
sind dann auch F-Plus G und F-Mal-G-Touring berechenbar,
ja oder nein
Musik Ja, genau. Sind sie. Wenn ich eine Touring-Maschine für F
habe und eine Touring-Maschine für G und ich will jetzt die Summe ausrechnen. Ja,
dann mache ich mir eine Touring-Maschine drumherum,
die ruft erstmal die Touring-Maschine für F auf,
dann habe ich ein Ergebnis,
dann rufe ich die Touring-Maschine für G auf,
habe ich noch ein Ergebnis,
muss mir halt irgendwie aufs Band irgendwie weit nach rechts schreiben oder so,
aber so mit rumschieben kann ich das ja immer machen.
Und dann agiere ich die beiden.
Und bei der Multiplikation genauso. Also Touring-Maschinen einfach
als Subroutinen benutzen
Ja. Geht F-Kringel-G. Also F von G von X.
Kann man
das berechnen
Ja. Bei Nein sind es mehr geworden,
das ist aber nicht schön. Die ist auch Turing berechenbar
. Ihr berechnet erst G von X und dann packt ihr
das Ergebnis halt einfach als Eingabe für F rein und berechnet
F von G von X.
Da geht das auch
Genau, aber die Touring-Maschine für F ist ja so gebaut,
dass die das eben dann macht,
wenn F von X auch berechenbar ist.
Ja. Beziehungsweise die checkt das halt.
Also die muss das irgendwie überprüfen und dann ist gut.
Also auch da ja. So, jetzt noch die obligatorischen
zehn Minuten vor Ende, alles wird unruhig und so.
Es sind auch nur noch drei Folien. Drei ganz einfache
Folien. Zwei Touring-Maschinen A und B sind Äquivalent,
wenn LA gleich LB gilt.
Das hatten wir auch schon bei DFAs und bei PDAs und so.
Also wenn die Touring-Maschinen die gleichen Wörter akzeptieren,
dann nennen wir
die Äquivalent
Das, was wir jetzt machen können, ist,
wir können uns weitere Touring-Maschinen-Modelle definieren,
mit denen man besser arbeiten kann, die aber eben äquivalent sind.
Die eine ist, bisher hatten wir so ein einseitig unendliches Band,
man kann auch eine definieren,
bei der das Band in beide Richtungen unendlich ist.
Startkonfiguration weiterhin, so ein Z0W, aber ich kann auch sofort
mit dem Leseschreibkopf beliebig weit nach links wandern, wenn ich das möchte.
Macht zum Beispiel diese Additionsgeschichte von vorhin irgendwie leichter,
weil ich dann nicht gucken muss,
weil ich das Wort nicht erst nach links oder rechts verschieben muss.
Noch eine Variante, so eine K-Band Offline-Touring-Maschine, fieses Wort,
eigentlich Sie hat K beidseitig unendliche Arbeitsbänder mit jeweils einem eigenen Leseschreibkopf.
Sprich, ich habe mehrere Speicher auf dich zugreifen kann.
Und... Genau, außerdem habe ich ein Eingabeband,
auf dem ich nur lesen kann. Den Lesekopf, aber
in beide Richtungen bewegen kann. Und ich habe ein Ausgabeband,
auf dem ich nur schreiben kann und den Schreibkopf auch tatsächlich
nur von links nach rechts bewegen darf.
Gut. Kann man so machen, dass man das auf
dem Ausgabeband nur nach rechts bewegen darf, ist kein großes Hindernis.
Man könnte beispielsweise eins der Arbeitsbänder benutzen,
um erstmal komplett die Ausgabe zu berechnen.
Und irgendwann, wenn man es fertig ist,
überträgt man das einfach direkt von links nach rechts
auf das Ausgabeband
Da kann man auch zeigen, dass die Äquivalent sind,
also zu jeder DTMA mit einseitigem und endlichem Band gibt es eine,
mit beidseitig umendlichem und zu jeder K-Band-Offline-Touring-Maschine gibt es eine DTM mit nur ein Band.
Sind Äquivalent, das heißt, man kann stets
die Touring-Maschine Art nehmen, die einem gerade mir zusagt.
Also wenn wir vorhin bei diesem WWREF waren,
dann geht das natürlich tierisch schnell, wenn man mehrere Bänder hat.
Dann gehe ich auf einem Arbeitsband so weit nach rechts,
wie ich auf dem ersten Band eben Symbole habe.
Und jetzt kann ich immer auf dem ersten
das Symbol lesen und das auf dem zweiten schreiben,
und dann bin ich fertig.
Geht dann viel,
viel schneller
Genau, findet ihr im Skript oder eben in dem Buch von Hauptcraft Ulmen.
Das war eigentlich die dritte Folie. Ich will aber
auf der 42. enden. Da machen wir morgen weiter.
Nicht die terministische Touring-Maschinen, gucken wir uns morgen an.
So wie wir das vorher auch immer hatten,
diese Übergangsfunktion bildet dann jedes, jedes Pärchen aus Zustand und Bandsymbol
ab, auf möglicherweise mehrere Nachfolgezustände.
Das machen wir morgen,
große Gosche Goschel