Also, Touring Machine Teil 2. Gestern haben wir die eingeführt,
uns ein bisschen angeguckt, wie die sind taktisch definiert sind,
dann wie die semantisch definiert sind, also sprich,
wie die irgendwie auf dem Band arbeiten.
Und dann haben wir gesehen, dass die Sprachen akzeptieren können und
Funktionen berechnen können und haben uns zwei, drei Beispiele angeguckt.
Und da knüpfen wir heute wieder an und betrachten vor allem
drei Varianten von der Touring-Maschine, also wo man sagt,
naja gut,
jetzt habe ich diese Touring-Maschine,
wie kann ich die jetzt irgendwie wahlweise aufmotzen oder irgendwie reduzieren
und konnte da irgendwie was anderes raus
Und die ersten zwei, die wir uns ansehen,
die werden wir nur so streifen, damit man weiß,
dass man die benutzen kann, anstelle der ursprünglichen deterministischen.
Und dann werden wir zu dieser nicht-deterministischen Touring-Maschine kommen,
so wie wir das bei DFAs und NFAs auch gemacht haben.
Und da werden wir uns dann eine Weile noch aufhalten.
Und das war es dann eigentlich auch schon für heute.
Also so sinngemäß ein bisschen wiederholen und dann drei Varianten von
der Touring-Maschine angucken und schauen, was da so passiert.
Erstmal zur Wiederholung. Ausgegangen waren wir vom DFA und haben gesagt,
okay, wir wollen das Band nicht nur von links nach rechts lesen,
sondern wir wollen irgendwie auf dem Band in beide Richtungen gehen können mit dem Lesekopf.
Und dann wollen wir aus dem Lesekopf noch einen Leseschreibkopf machen,
indem wir sagen, wir dürfen auf dem Band
nicht nur Symbole lesen,
sondern eben auch schreiben
Und dann kam man schon bei dieser Touring-Maschine an,
wo man eben gesagt hat,
so wie wir es ja auch endliche Mengen von Zuständen,
endliches Eingabealphabet und dann eben,
damit die Touring-Maschine irgendwie sich auch Notizen machen kann,
irgendwie noch so ein endliches Alphabet von Bandsymbolen, Staatszustand,
Endzustände, auch so wie wir das kennen,
spezielles Symbol für das leere Feld und dann eben hier die Überführungsfunktion,
die eben sagt, Zustand, in dem ich bin,
Symbol, das ich lese auf dem Band und dann eben Symbol,
das ich schreibe, Kopfbewegung,
die ich mache und Zustände, in denen ich wechsle.
Und das reicht dann eben schon,
um irgendwie bei dieser Touring-Maschine anzukommen,
die eben alles kann nach der Church Touring-Tier,
so was
so ein Mensch auch kann
Da ist nochmal, wie das funktioniert mit der Semantik von der Touring-Maschine.
Ich bin im Zustand Z und lese gerade in X.
Und wenn ich dann so einen Toupel-X-B-B-Z-Strich habe,
dann schreibe ich eben X-Strich, bewege den Leseschreibkopf,
seine, da steht ein Haar und wechsel den Zustand.
Und dann kann man wieder, so wie man das bei DFAs
und so auch gemacht hat, Konfigurationen einführen und Konfigurationsübergänge und so.
Und bei der Konfiguration hatte man hier eben so ein,
naja, kein Triebel, aber eben so eine Folge von Wortausgama,
Stern, Zustand und noch ein Wortausgamastern,
wenn man dann eben so ein UZV hat,
dann schreibt man das Z deswegen an die Stelle,
damit man eben weiß,
der Leseschreibkopf ist gerade über dem ersten Symbol von
Also wenn ich so ein Wort habe, A ist im Zustand Z,
Bandinschrift ist UV und links und rechts vom Fausen eben irgendwie nur Blenksymbole.
Dann konnte man darauf aufbauen, wieder diese Schrittrelation einführen.
Hat man ja gesehen, das war eine recht langatmige Definition,
aber irgendwie händisch leicht auszuführen.
Und dann kann man eben wieder eine Rechnung einführen und eine Erfolgsrechnung.
Und bei Turing-Maschinen war es eben so,
dass sich schon dann eine Erfolgsrechnung habe, wenn ich anfange,
beginnend bei so einer Startkonfiguration irgendwie in eine Konfiguration komme,
wo ein Endzustand dabei ist.
Und dann akzeptiere ich eben das ursprüngliche Eingabewort. Beispiel,
Fragen? Nein. Beispiel, die Touring-Maschinen von gestern,
startet irgendwie mit dem Eingebewort zwei As und ein B. Ja,
dann guckt man eben immer, was man für Kanten hat.
Und bei der deterministischen Touring-Maschine ist das noch schön einfach,
weil es maximal eine immer gibt. Hat man ja keine
nicht deterministische Wahl. Also gucke ich irgendwie, okay,
wenn ich im Zustand Z0 bin, was gibt es für A-Kanten?
Es gibt ja die eine oben, sprich A lesen,
ich schreiben und den lese Schreibkopf nach rechts bewegen.
Da bin ich irgendwie da, dann mache ich das nochmal.
Wieder dieser Schreibkopf nach rechts bewegt, x geschrieben.
Und bei dem B wird hier gesagt, da macht man gar nichts. Also B lesen,
B schreiben,
aber den lese Schreibkopf nach rechts bewegen und dann ist der
eben haben wir über das Eingabewort rüber gelesen und ist jetzt am rechten Rand,
also sprich beim ersten Blenk-Symbol und kann da dann diesen Übergang von Z081 machen und in diese Schreibkopf wieder ein Feld nach links bewegen.
Was sind wir da? Und dann mache ich mit der letzten Kante hier den Übergang,
in die Konfiguration, wo Z2 dann eben ein Endzustand ist,
also akzeptiere ich das, ursprüngliche Eingabewort.
Ich akzeptiere jetzt nicht irgendwie XXB, sondern ich akzeptiere eben AB.
Und das war so die Schreibweise und da nochmal die akzeptierte Sprache.
Und wie gesagt, die Worte,
die ursprünglich drauf sind, akzeptiert man,
sobald man in ein Endzustand gelangt
Dann haben wir gesehen, dass man neben diesen Sprachen akzeptieren,
auch Funktionen berechnen kann, also erst noch die zwei Beispiele,
die hatten wir gestern, all die Worte,
die auf B enden,
weil ich eben hier vorne über die As und Bs rüberlese und aus den As X mache,
aber die B ist so lasse und wenn ich dann eben am rechten Rand des Wortes angekommen bin,
mache ich einen Schritt nach links und dann bin ich eben,
wenn ich im Zustand Z1 bin,
über dem letzten Symbol des Eingabewortes oder das dann auf dem Band stehenden Wortes und wenn diesen B ist,
oder früher mal B war,
dann ist es immer noch ein B,
also kann ich den Übergang machen.
Das sind also die,
die auf B enden und das waren die,
wo man gesagt hat,
all die Worte,
die mit B beginnen.
Ja, und jetzt mit den Funktionen,
dann hat man gesagt, naja,
wenn ich so eine Wortfunktion habe von Sigmar Stern nach Sigmar Stern,
dann möchte ich die mit einer Touring-Maschine berechnen können,
und zwar so, dass ich sage,
wenn hier irgendwie F von W gleich V ist,
also wenn die Funktion F das Wort W auf das Wort V abbildet,
dann soll die Touring-Maschine eben in so einer Konfiguration Z0W gestartet,
irgendwie eine Konfiguration kommen,
wo das V auf dem Band ist und links davon eben der Leseschreibkopf ist und ich in einem Endzustand bin.
Dann berechne ich die und dann kann man sich überlegen,
statt das hier irgendwie mit Wortfunktionen zu machen,
kann man das eben auch irgendwie für Funktionen über den natürlichen Zahlen machen,
was sie so ein bisschen anstrengend eigentlich ist,
weil all die Zahlen jetzt umnäherkuliert sind.
Üblicherweise macht man das doch so, dass man die binär
kodiert und dann im Grunde genommen immer mit solchen Wortfunktionen arbeitet.
Genau, dann haben wir uns dafür Beispiele angesehen,
so F und X gleich X plus 1 oder, nee,
F und X gleich X minus 1 und F von W gleich WRF,
das haben wir uns beides angeguckt.
Und bei der zum Beispiel war das ja so,
jetzt will ich hier irgendwie eins abziehen bei der binärkodierung und
dann gehe ich eben bei dem Wort ganz nach rechts,
wenn dann da einsteht,
schreibe ich eine Null und bin fertig und wenn da eben eine Null steht,
dann schreibe ich eine Eis und gehe wieder ein Feld nach links.
Das kann man jetzt eben auch im Zustandsübergangsdiagramm machen
Jo. Dann hatten wir, dann konnte man sehen,
ja okay, Subtraktion geht, Addition geht,
dann kann man das auch mit sowas machen wie X plus Y und X minus Y und sowas.
Und dann kann man zu dieser Church-Touring-These kommen,
dass man irgendwie sagt, okay, alles,
was irgendwie von Maschinen geht, kann die Maschine,
die Touring-Maschine machen, alles, was für Menschen geht auch.
So, ich glaube, das war's, ne?
Nee, immer noch nicht. Dann haben wir noch gesagt,
berechnend von Funktionen und Akzeptieren von Sprachen ist im Grunde genommen
das Gleiche
Ich eine Sprache akzeptieren will, berechne ich im Grunde genommen die charakteristische Funktion.
Und welche Funktion berechnen will, dann kann ich das auch
so verstehen, dass ich diese Sprache versuche zu akzeptieren.
Und insbesondere dieser letzte Punkt ist wichtig,
weil uns das nachher hilft, statt über Berechnung von Funktion zu reden,
immer nur davon zu reden, dass ich irgendwie Sprachen akzeptieren will.
Und das macht es dann leichter zu sagen, irgendwie,
das ist eine Sprache, die ich gar nicht akzeptieren kann.
Dann ist die unentscheidbar nachher und solche Geschichten. Deswegen gibt
es diesen Punkt. So, jetzt bin ich da,
wo ich sein wollte. Das waren die Sachen,
die wir gestern gemacht haben, plus halt ein paar mehr Beispiele.
Ob die Touring-Maschine mächtiger ist als kontextfreie Sprachen.
Kannst dir selbst beantworten. Eine Sprache, die nicht kontextfrei
ist, ist zum Beispiel grob im Gedächtnis wühlen.
Fällt euch eine ein, nicht kontextfreie Sprache. Ich glaube,
wir hatten zwei, oder kann man so ableiten,
welches es noch so gibt.
Bitte? Nee, das klappt. Also wie Ref meine
gerade,
das klappt
Das ist nicht regulär, aber kontextfrei.
Es nach ASB und nach AB, dann hast du die.
Aber es klappt nicht mehr. Es ist schon ganz dicht dran.
Ja, genau, das klappt. Die Experimenten steigern zu
lassen oder noch einfacher, A hoch NBO, NCON.
Das kann man auch mit ein paar Billemma zeigen, dass das nicht klappt.
Dann nimmst du irgendwie A hoch KBO, KCO,
K und dann ist dieses VWX immer in irgendeinem der Blöcke,
entweder den As oder den Bs oder den Cs,
pumpst du dran, bist nicht mehr drin.
Die ist also nicht mehr kontextfrei, naja,
eine Touring-Maschine dafür zu konstruieren, liest über die, nein, macht selbst.
Wie konstruiert man eine Touringmaschine für auch im Biohans Zeghoch-N?
Gestern hatten wir ja schon eine für auch ein B-O-N,
wie macht das jetzt für auch im Biohans Zeghoch-N, rüberlesen und?
Bitte? Genau. Ich mache mir einen Zähler,
dann zähle ich einmal die As. Wenn ich jetzt ganz viel ganz verschwenderisch sein will,
mache ich mir drei Zähler ein für die As,
dann für die B-Sein, für die Cs und danach gucke ich,
ob das alles das Gleiche ist.
Fertig. Also kann ich schon mal eine Sprache,
die nicht kontextfrei ist, jetzt kann ich mir noch Gedanken darüber machen,
ob ich alles kann,
was kontextfrei sprachen können
Jetzt kann ich mir überlegen,
naja, es gibt einen Kellerautomaten für kontextfreie Sprachen,
das werde ich wohl mit Naturmaschine simulieren können,
auf irgendwie einen Teil des Bandes merke ich mir den Keller.
Und dann kriege ich das hin. Also kriege ich alles
hin, was kontextfrei sprachen können und sogar mehr.
Macht ja auch Sinn mit der Church-Touring-These, wenn ich auch in Biochensee hoche,
wenn ich da zeigen kann, dass das nicht kontextfrei ist.
Als Mensch kriege ich das auf jeden Fall den vorgelegten Wort,
zähle ich halt A, B, C,
ist immer das Gleiche, ist es gut.
Also soll die Touring-Maschine das auch können.
Sonst noch
Mhm. Standpunktfrage. Hauke meinte gerade in einigen Büchern,
das ist halt so, dass dieses Halten nicht eingeführt wird,
also dass der Leseschreibkopf die Position hält und ob das die Definition einfacher macht.
Es macht halt quasi, wenn ich bestimmte Sachen mit Touring-Maschinen beweisen will,
macht es das einfacher, weil ich weniger Fälle habe,
dann kann ich halt sagen, naja, entweder kann ich lesen,
Schreibkopf nach links bewegen oder nach rechts, aber ich kann ihn nicht halten.
Fürs Konstruieren ist es manchmal lästig,
weil wenn ich eine Touring-Maschine für eine Sprache direkt angeben will und ich denke jetzt so,
boah, an dieser Stelle wäre es total praktisch,
wenn der Leseschreibkopf seine Position hält und ich habe das aber nicht,
dann muss ich so ein Workaround machen, ne,
ein Feld nach rechts bewegen, einen speziellen Zustand gehen,
in den ich mir nur merke,
dass ich wieder nach links gehen will und wieder nach links gehen.
Nervt ein bisschen
Also kann man machen, ist auch Äquivalent. Sonst noch.
Wir sehen auch gleich noch mehr Sachen, die Äquivalent sind.
Sonst noch Fragen. Okay. Also was ihr können solltet,
dann wäre eine gegebene Touring-Maschine irgendwie und ein Wort,
die Konfiguration angeben zu können.
Also fange ich in der Startkonfiguration an und arbeite dann
die Schritte-Relation ab, das sollte gehen.
Und dann halt so Dinge wie irgendwie gegebene Funktionen,
eine einfache Funktion konstruieren sie eine Touring-Maschine dazu,
die die Funktion berechnet oder gegebene Sprache konstruieren sie
eine Touring-Maschine,
die die Sprache akzeptiert
Für kleinere Sachen mit Zustandsübergangsdiagrammen,
für größere Sachen macht man das meistens nicht mehr mit dem Zustandsübergangsdiagramm,
sondern eben so, wie wir das hier bei x,
gleich x minus 1 schon gemacht haben,
dass man einfach nur beschreibt, was die Türmaschine grob tun müsste.
Da muss man sich einmal bewusst machen,
dass die einzelnen Schritte tatsächlich auch von der Turing-Maschine gehen,
also man sollte das nicht zu abstrakt machen, so,
es sollte schon noch nachvollziehbar sein, dass die einzelnen Schritte gehen,
aber auf einem gewissen Abstraktionsniveau kann man das halten,
muss halt so genau bleiben, dass man trotzdem damit argumentieren kann.
Gut, das zu gestern, jetzt wollen wir uns heute Varianten angucken,
Und zwar wollen wir, wir hatten bisher so eine Einband-Touring-Maschine,
die wollen wir uns jetzt nochmal angucken,
aber nicht mit einem zweiseitig unendlichen Band,
sondern nur mit einem einseitig unendlichen Band.
Das heißt, sie startet irgendwie damit,
dass das Eingebewort auf dem Band ist und von da kann sie auch
beliebig weit nach rechts gehen und sie kann auch wieder nach links zurückgehen,
aber sie kann nie über dieses erste Symbol quasi nach links zurück.
Das ist mit einseitig und endlichem Band,
das ist quasi nur noch rechts unendlich und nach links nicht.
Die wollen wir uns angucken, da so eine Mehrband-Touring-Maschine,
sagt der Name schon,
die hat irgendwie mehr als ein Band und dann die nicht deterministische Touring-Maschine.
Und das andere da unten aufzählbar und entscheidbar,
mal gucken, wenn wir da nochmal zu kommen,
dann gucken wir da nochmal kurz rein,
ansonsten ist das so der Stoff für die nächste Woche
Einwandtouring-Maschinen mit einseitig und endlichem Band. Was vielleicht machen wollen,
ist, wir wollen ganz viel über Äquivalenz reden.
Deswegen nochmal so als Definition. Das kennen wir schon aus den ganzen anderen Sachen.
Zwei Touring-Maschinen sind äquivalent, wenn sie die gleiche Sprache akzeptieren.
Und die Aufgabe wird jetzt immer sein, sich zu überlegen,
ob ich für jedes dieser Modelle eine Touring-Maschine bauen kann von
unserem ursprünglichen Modell, die die gleiche Sprache akzeptiert.
Dann weiß ich immer, die Sachen sind äquivalent.
Und andersrum, ne? Einseitig ein endliches Band. Idee,
wie gesagt, dieses bisher zweiseitig unendliche Band,
das ich so weit nach links und nach rechts gehen kann,
wie ich will, das ändern wir jetzt so,
dass wir sagen,
nach links ist es nicht unendlich
Wenn man das formal definieren will,
ist das so ein bisschen knifflig, weil dieses zu wissen,
ab wo ich nicht mehr nach links gehen kann, das ist irgendwie lästig.
Relativ häufig macht man das dann so, dass man sagt,
na gut, dann gibt es links vielleicht so einen richtigen Begrenzer.
Also noch ein spezielles Symbol neben dem Bandsymbol,
was ganz links steht und wo man dann eben merkt,
okay, hier geht es wirklich nicht mehr weiter.
Könnte man jetzt alles im Detail machen,
aber uns reicht so eine intuitive Vorstellung, dass man irgendwie sagt,
okay, das Band ist nicht mehr beidseitig und endlich,
sondern nur noch einseitig und über die linke Grenze kann ich halt nicht rüber.
Sprich, wenn ich irgendwie in der Konfiguration bin,
dass ich ganz links auf dem Band bin und der einzige Zustandsübergang,
den ich habe, sagt,
gehe nach links mit dem Leseschreibkopf,
den kann ich den
halt nicht benutzen
Dann würde sie auch blockieren. Tut das im Grunde genommen
das Gleiche, wie wenn sie das Symbol nicht lesen könnte.
Zu jeder DTM mit einseitig und endlichem Band gibt es
eine äquivalente DTM mit beidseitigem endlichem Band und umgekehrt.
Die eine Richtung ist ganz einfach. Welche? Eine Richtung
schwierig, eines einfach, welches einfach?
Zu A, B zu konstruieren oder zu BA
Ich fange jetzt auch wieder langsamer zu reden.
Genau. Also von A nach B ist es total einfach,
also zu zeigen, dass sich jeder einseitig,
jede Touring-Maschine mit einem einseitig und endlichen Band durch eine Touring-Maschine simulieren kann,
die zusätzlich auch noch irgendwie andere Dinge tun kann.
Okay, ich benutze diese anderen Dinge nicht.
Also das ist einfach, die andere Richtung ist schwierig.
Wenn ich irgendwie eine Touring-Maschine habe mit einem zweiseitig und endlichen
Band und ich will jetzt sagen, alles was die kann,
Das kann auch eine Touring-Maschine mit einem einseitigen, endlichen Band.
Jetzt muss ich es also irgendwie hinkriegen, vermutlich.
Dieses zweiseitige endliche Band mit nur einem einseitig unendlichen Band abzubilden.
Ideen. Ja, und dann klingt gut. Also jetzt
hast du, warte. Achso, jetzt verstehe ich es.
Ja, ja, ja, genau. Oh Gott,
warte mal. Ja, das geht. Das wird echt lästig.
Da müssen wir, das ist unangenehm. Also die Idee war,
wenn ich ein beidseitig und endliches Band habe,
dann kann ich ja quasi davon reden, dass ich,
ich teile jetzt das Band in Zellen ein, in jeder Zelle steht ein Symbol.
Jetzt habe ich eine nullte Zelle, eine erste, eine zweite,
eine dritte, eine vierte und wenn ich nach links gehe,
halt eine minus, eine, eine minus, zweite,
minus dreite, minus vierte und so, genauso wie Zahlenstrang bei den natürlichen Zahlen.
Und dann war die Idee, naja,
das kann ich mit einer einseitig unendlichen so machen,
null bleibt null, eins bleibt, null bleibt null,
die erste, eins kommt auf zwei, oh Gott,
also die geraden Zellen von dem einseitig unendlichen,
die entsprechend weiterhin den positiven,
der beidseitig unendlichen und die ungeraden entsprechenden Negativen
Dann muss ich halt immer gucken, je nachdem,
wo ich gerade bin, muss ich dann immer zwei Hops machen oder sowas.
Genau, das klappt. Noch eine Idee. Das funktioniert auf
jeden Fall, ja. Man kann was? Ja,
also es war jetzt die Argumentation damit,
dass die Kardinalität irgendwie die gleiche ist, aber das wackelt,
das ist nicht so, also würdest du sagen,
damit hast du eine Turing-Maschine konstruiert,
die das Gleiche tut,
wie die ursprüngliche
Du hast nur gesagt, irgendwie die Kardinalität der Bannzellen ist gleich.
Bitte? Zur Mitte. Zur Mitte des, was ist denn
die Mitte des rechten Bandes, wenn das Band unendlich lest?
Aber das, also da geht ja nicht.
Also wenn ich ein Band habe, das von null losgeht,
bist du unendlich, ne?
Und ich habe ein Band, das nach Minus und nach Plus
unendlich geht. Das kann ich ja nicht, ey,
da kann ich ja nicht sagen,
irgendwo ist die Mitte
Du könntest höchstens irgendwie sagen, wenn du wüsstest,
wie die beidseitig und endlich arbeitet und die akzeptiert das Wort auch tatsächlich,
dann benutzt die ja nur endlich viel Platz von ihrem Band.
Da könnte man dann sagen, okay,
davon gibt es eine Mitte und das könnte man machen,
aber da müsste ich wissen,
wie die Rechnung aussieht und wie viel Band zählen sie benutzt.
Das klappt nicht so gut. Das mit der Kardinalität war schon,
okay, das ging ja so in die ähnliche Richtung,
dass ich irgendwie sage, also je nicht funktioniert,
der Beweis auch, dass man zeigt,
dass N und Z die gleiche Kardinalität haben.
Aber das als Begründung ist so ein bisschen schwierig,
weil man dann irgendwie sagen müsste,
wenn die Funktion zum Beispiel irgendwie anders aussieht für diese Kardinalitätsgeschichte,
Da müsste ich erst mal zeigen, dass die Tour-Maschine die berechnen kann,
damit ich immer in die richtigen Zellen rankomme und so.
Aber das ist halt ganz schön knifflig. Kann man auch irgendwie,
aber so ein bisschen knifflig. Ihr könntet versuchen mit dem Eingabealphabet herumzuspielen.
Ah, ich weiß nicht, ob das hilft.
Als Tipp so, aber das könnte man versuchen.
Es gibt halt so eine ganz klassische Variante, das zu machen,
weil die einem nachher auch hilft, mit der Mehrband-Touring-Maschine umzugehen.
Die Idee ist, Oder die klassische Idee ist,
wenn man eine Touring-Maschine mit einem beidseitig und endlichen Band hat,
dann hat die quasi ja diesen positiven Teil und diesen negativen Teil.
Und das, was man jetzt für die einseitig und endliche macht, ist,
dass man den negativen Teil quasi nimmt und unter das andere klappt,
dann hat man das in zwei Spuren geteilt, das Band.
Also dann speichert man sich in der Nultenzelle von dem einseitig Unendlichen,
das, was in der nullten Zelle des zweiseitigen in ihnen steht.
In der ersten Zelle speichert man sich das,
was bei dem anderen in der ersten und minus ersten steht.
Und dann war in der nächsten Zelle das,
was in der zweiten und minus zweiten steht oder dritten und
minus dritten und
so weiter
Dann hat man quasi gesagt, okay,
ich habe dieses einseitig endliche Band und ich lege da einen Strich durch,
jetzt habe ich das in zwei Spuren unterteilt und in der oberen Spur merke ich mir halt,
was bei der beidseitig und unendlichen mit dem positiven Bereich abläuft
und bei der unteren Spur merke ich mir,
was beim beidseitig und endlichen in der unteren Spur abläuft.
Die Idee hat den Vorteil, dass ich die nachher auch benutzen kann,
wenn ich sagen will, wenn ich mehrere Bände habe,
dann unterteile ich das einfach in mehrere Spuren.
Vom Kern. Kann man natürlich auch wieder so machen,
dass man sagt, naja, wenn ich kafide Spuren habe,
nehme ich null der erste, zweite,
dritte,
vierte bis Kartezelle
oder wieder das Gleiche
Aber das ist ja so die klassische Idee. Also A hat so nulltes,
erstes, zweites und so weiterfällt und B hat nulltes Feld und dann eben erstes,
minus, erstes, zweites, minus zweites und so weiter.
Also B ist die mit beidseitig umendlichem. Und dann macht
man das so, dass man sagt, A,
merkt sich auf seinem Entenfeld genau den Bandinhalt von B auf dem Enten und die Minusenden.
Und dann ist dieses Gamma-Kreuz Gamma, das Bandalphabet von A,
und wenn, kann man das Bandalphabet von B ist.
Wenn man dann so ein Tupel hat, XY,
dann ist X quasi das, was im Entenfeld steht und Y,
das, was im Minusendenfeld steht und damit das klappt,
muss man sich jetzt noch im Zustand merken,
wo man gerade, in welcher Spur man gerade ist,
dass man gerade in der oberen Spur,
also im positiven Bereich von B,
oder ist man in der unteren Spur im negativen Bereich?
Wenn man das so macht mit die Unterteilung gerade ungerade,
anzählen, das was vorgeschlagen wurde,
dann muss ich mir auch im Zustand merken,
bin ich gerade bei den Graden oder bei den Ungraden,
damit ich immer weiß, wie viele Hops ich irgendwie machen muss.
Also irgendwas muss ich mir noch im Zustand merken,
hier halt so, dass man gesagt hat,
die Zustände von A sind jetzt solche Tupel hier,
ZP, Z ist ein Zustand von B und P bedeutet eben
B ist im positiven Bereich und N ist B ist im
negativen Bereich
Dann arbeitet A im Grunde genommen genau wie B, nur dass ich eben gucke,
wenn ich im Zustand bin, wo so ein P steht,
dann arbeite ich hier mit den ersten Elementen im Tupel und wenn ich im Zustand bin,
wo so ein N ist, dann arbeite ich hier im zweiten Element des Tupels. Die eine Stelle oder die zwei Stellen,
wo man aufpassen muss, ist einmal, wenn dann P steht,
dann ist das hier total okay, dann weiß ich,
wenn die Turing-Maschine B nach links und rechts geht,
dann macht die Turing-Maschine A das auch,
aber wenn dann N steht, der muss jetzt genau andersrum machen,
weil nach links gehen bei der Zweiband würde dann ja bedeuten,
das soll noch kleiner werden, der Bandshallenindex,
ich gehe von minus drei nach minus vier und dann muss ich halt in der,
jetzt in Spuren eingeteilten nach rechts gehen,
damit ich von der dritten auf die vierten komme,
die ja dieses minus vier simuliert,
dass die eine Stelle, wo man aufpassen muss,
dass man halt bei P ganz normal links und rechts nimmt und bei N das gerade austauscht und man muss aufpassen,
beim nullten Feld kann eben so ein Wechsel von P zu Ende oder andersrum auftreten und damit man den feststellen kann,
nimmt man für das nullte Feld nicht so ein Element aus Gamma-Kreuzgamma,
sondern da kommt ja oben, da steht ja jetzt nicht mehr explizit,
da kommt hier als zweites noch so ein Sternchen oder so dazu,
damit man für das nullte Feld gerade sich als Symbol machen kann,
x Stern.
Und immer wenn man diesen Stern hat, weiß man,
oh, ich bin gerade auf dem nullten Feld und wenn
ich da jetzt irgendwie im positiven Bereich bisher bin und nach links gehe,
dann muss ich jetzt in den Negativen gehen und wenn ich im Negativen bin und nach rechts gehe,
muss ich in den positiven gehen.
Das ist die ganze Idee. Also entweder so machen wie vorgeschlagen,
dass man sagt,
die geraden Zellenindizes sind ja irgendwie für das Positive und die Ungraden
so für das Negative oder eben so in Spuren eingeteilt und
dann muss man sich ein bisschen Gedanken machen,
dass man sich in den Zuständen noch merkt,
in welcher Spur
man ist
Und das war es im Grunde genommen. Und wenn man das jetzt noch beweisen möchte,
das fehlt hier jetzt, wenn man irgendwie noch beweisen möchte,
dass die Tourmaschine tatsächlich das Gleiche tut,
dann muss man jetzt ja noch irgendwie elf von A gleich elf von B zeigen und im Grunde genommen argumentiert man einfach nur,
wenn es eine Rechnung bei der einen Touring-Maschine gibt,
dann gibt es eben auch eine entsprechende Rechnung bei der anderen Touring-Maschine,
die eben genau diese Rechnung abbildet,
indem sie eben entsprechend dieser Konstruktion den Bandinhalt und so richtig ändert.
Das ist relativ einfach zu sehen, dass das irgendwie das Gleiche ist.
Das ist die erste Konstruktion und die zweite,
wenn man jetzt sich noch eine Touring-Maschinentyp einführt, K-Band-Offline-Touring-Maschine,
da will man einfach erreichen,
dass man nicht immer nur ein Eingabeband hat,
sodass man sagen muss, ich gehe da ganz nach rechts,
um mir irgendwas zu notieren, sondern ich will ganz viele Arbeitsbände haben,
K, viele.
Hat den Vorteil, dass ich dann so Sachen machen kann,
wie irgendwie mir auf drei verschiedenen Arbeitsbändern drei unterschiedliche Zähler zu merken oder sowas.
Da kann ich den irgendwie angenehmer mit argumentieren.
Die soll also K-Arbeitsbände haben, ein Eingabeband und ein Ausgabeband.
Und das Eingabe und Ausgabe noch so ein bisschen eingeschränkt,
dass man sagt, auf dem Eingehöbern kann ich nur lesen,
auf dem Ausgabeband kann ich nur schreiben.
Und wenn man da wieder zeigen will, dass ich vorstelle,
klar, ich habe ein Eingabeband, da steht das eingebewortet drauf,
da kann ich nach links und rechts gehen, aber nur lesen.
Und da habe ich mehrere Arbeitsbänder, mit denen ich halt wie bisher auch arbeiten kann.
Und das Ausgabeband halt nur zum Schreiben. Wenn ich da wieder zeigen will,
dass die Äquivalent sind, eine Richtung wieder ganz einfach,
wenn ich eine DTM mit nur einem Band habe,
hier B, dann kann ich dazu sofort so ein A konstruieren,
indem ich quasi meine ganzen Features nicht benutze.
Muss ich ein bisschen aufpassen,
weil ich jetzt hier auf dem Eingabeband nicht mehr arbeiten kann,
also mache ich das so, was auf dem Eingäubern steht,
kopiere ich mir, schreibe es aufs Arbeitsband,
da arbeite ich dann genauso wie B und schreibe eventuell noch,
wenn ich akzeptiert habe,
was aus Ausgabeband
Dann geht das und das ist relativ einfach. Und für
die Rückrichtung macht man im Grunde genommen das Gleiche wie eben,
man unterteilt die, das Arbeitsband von B in ganz viele Spuren,
Carplus 2, viele Spuren, eine fürs Eingabeband,
eine fürs Ausgabeband und Carp für die ganzen Arbeitsbänder.
Und dann hat man aber das Problem so schön wie eben,
dass man einfach immer weiß, wo man ist,
klappt das jetzt nicht,
sondern man muss dann immer über das ganze Band komplett rüberlesen,
damit man alle Kopfpositionen von der Carband-Touring-Maschine einsammeln kann.
Wenn ich eine Carband-Touring-Maschine habe, habe ich Carbender,
bin da auf den einzelnen Bändern mit dem Leseschreibkopf
an unterschiedlichen Positionen und das muss ich mir jetzt einsammeln.
Also geht die Einband-Touring-Maschine ganz nach links,
sammelt das alles auf, macht dann den Zustandswechsel,
geht nochmal rüber und ändert das alles
Arbeit, aber klappt. Das wird also von der Simulation
, klappt das, wird aber ziemlich langsam.
Also brauche ich deutlich mehr Schritte. Ja, Fragen dazu
? Carband-Offline-Touring-Maschine und Touring-Maschine mit einseitig und endlichem Band.
Fragen? Also dann sind das die Ergebnisse,
dass man eben sagen kann,
beides Äquivalent und man kann jetzt stets diese Touring-Maschine Art nehmen,
die einem eben gerade irgendwie mehr zusagt.
Und das, was wir machen wollen, ist,
wenn wir ganz konkreten Zustandsübergangsdiagrammen angeben wollen,
dann arbeiten wir immer mit so einer Touring-Maschine mit beidseitig und endlichem Band.
Die hat relativ viele Möglichkeiten, ist aber nicht so ein Rumgefrickel bei den Konfirationsübergängen.
Also bei der Mehrband-Touring-Maschine muss man schon ganz schön viel angeben
an den einzelnen Kanten, das will man nicht machen.
Und wenn wir aber für eine Sprache nur auf einem gewissen Abstraktionsniveau angeben wollen,
was die Touring-Maschine macht, dann nehmen wir üblicherweise eine mit mehreren Arbeitsbändern,
damit wir einfach mehr Möglichkeiten haben.
Da steht es auch nochmal. Auch mit dem Beispiel bei WWRF oder bei der Sprache,
die die Worte enthält, die sich als WWLF schreiben lassen,
haben wir so ein Zustandsübergangsdiagramm angegeben und für F von X
gleich X minus eins haben wir eben nur die Funktionsweise beschrieben.
Wobei man dafür auch gut einen hätte angeben können. Und hier,
die haben wir nicht explizit gemacht, sondern wir haben eine TM gemacht,
die F von W gleich WRF berechnet,
aber die lässt sich dann ja so ummodeln, dass diese Sprache akzeptiert, wenn man das möchte.
So, jetzt noch fragen. Da angenommen,
wir starten eine Turing-Maschine statt mit einem Band mit einem zweidimensionalen Feld aus,
also die hat jetzt nicht einsamen Band,
sondern die hat so ein ganzes zweidimensionales Feld,
dass es nach rechts unendlich und nach unten,
also nicht nach links und rechts und oben und unten,
sondern ein bisschen eingeschränkt, nur nach rechts und nach unten,
ist das immer noch Äquivalent zu ursprünglichen Thüringen-Maschinen.
Ja, ja, nein
, unsicher
Musik B finde ich gut, B kann man nämlich irgendwie sofort sagen,
weil wenn ich mir überlege, ich definiere immer so eine Touring-Maschine,
dann kann ich als Mensch die irgendwie ausführen,
also muss das auch irgendwie mit einer Touring-Maschine gehen,
sagt zumindest die George-Touring-These, wer erstaunlich,
wenn er schon da auseinander fliegt, bei so einem recht einfachen Modell,
also dann hätte man nicht so betont,
dass diese George-Touring-These irgendwie so viel kann oder so robust ist,
man kann das auch relativ einfach zeigen,
wer hat A gedrückt,
wer hat eine Idee,
die zwölf Leute,
die A gedrückt haben
Ja, das könnte man machen. Da muss man langsam aufpassen,
dass man sich unter Umständen, also er meinte hier Diagonalverfahren,
so wie man das auch macht,
für Bijektionen am Set auf Kuh und sowas.
Eventuell muss man da aufpassen, dass man dann langsam so anfängt,
sich die Koordinaten noch davor zu schreiben oder so.
Aber das könnte man zum Beispiel machen.
Ich schreibe mir vor, jede Zelle, die Koordinaten,
die das in dem Zweidimensionalen hat und dann arbeite ich halt,
was ich brauche, so genau.
Das kann man machen. Oder man probiert so Sachen,
dass man sich die erste Teile, dieses zweidimensionalen Felds,
die schreibe ich mir auf Band, also so viel,
wie ich davon benutzt habe, das ist ja am Anfang nur endlich viel.
Dann kommt irgendwie ein Trenn-Symbol, das zweite Band kommt,
Trenn-Symbol, drittes Band und so weiter.
Ich brauche immer nur endlich viel von meinem
unendlich langen Feld
Jetzt kommt die Krux, jedes Mal,
wenn ich jetzt irgendwas brauche, also wenn ich jetzt zum Beispiel merke,
es passiert was in der zweiten Zeile,
dieses zweidimensionalen Feldes und ich muss das verlängern, ja,
da muss ich jetzt bei meiner Einbahntouring-Maschine alles andere einfällt,
nach rechts schieben, bevor ich dann wieder nach links gehe und das korrigiere,
das kann schon ziemlich lange dauern,
wenn ich irgendwie schon bisher 20 Zeilen benutzt habe und bei allen 100 Symbole oder so,
dann gehe ich da jetzt erst mal 2000 Schritte nach rechts und das alles irgendwie zu verschieben und dann kann ich da wieder hingehen und das machen,
so, ne, also nervt schon, ist schon irgendwie dusselig,
aber funktioniert.
Spannenderweise für Puristen, wenn man ein Feld nimmt,
Ich nehme jetzt so ein typisches, hier X-Achse,
Y-Achse, hier unten 0-0, X unendlich,
Y und endlich, so wie man auch Funktionen platten würde.
Und wenn ich das nehme und ich tue mir da irgendwo ein Steinchen hin und ich weiß,
so Steinchen ist jetzt an Position 4,
5 und ich kann das Steinchen irgendwie ein Feld nach rechts bewegen,
ein Feld nach links, ein Feld nach oben, ein Feld nach unten.
Das sind die Möglichkeiten, die ich habe.
Steinchen auf dem Feld und ich kann das bewegen,
um ein Feld links, rechts, oben, unten.
Wenn ich jetzt noch null Test habe, also wenn ich sagen kann,
dieses Steinchen ist gerade auf der Y-Achse ganz unten oder auf der X-Achse,
das ist ganz links.
Dieses Berechnungsmodell ist bereits turi-mächtig,
also damit kann ich alles machen, was Touring-Maschinen machen können,
was Menschen machen können und so weiter
Erstaunlich, aber wahr. Man muss es halt irgendwie hinkriegen,
richtig reinzukodieren, was jetzt irgendwie eine Position bedeutet und sowas.
Aber so ein, da steckt halt drin,
dass ein Zwei-Zähler-Automat bereits alles kann. Also ein Automat,
in dem ich zwei Zähler gebe, kann alles.
Weil ich halt clever in den Zähler reinkodieren kann,
was ich alles meine.
Also ich kann halt in eine Zahl ziemlich viel reinkodieren.
Oh, Wiederholungsfrage. Die Konfigurationen einer Tourmaschine sind definiert als
Wörter von Worte. Als Worte aus? Eins,
zwei, drei,
vier,
fünf oder sechs
Musik Genau, zweitens, ne? Erstens,
da würde ich sagen,
links und rechts vom Zustand ist genau ein Bandsymbol und den Rest,
den habe ich mir nicht in der Konfiguration gemerkt.
Das ist irgendwie doof. Ach, die anderen standen gerade
gar nicht zur Ausbildung, ups.
Und bei drittens würde ich verlangen,
dass links und rechts auf jeden Fall
etwas stehen muss
Das könnte man machen, wenn man sagen möchte,
wenn da nicht steht, dann will ich da zumindest dieses
Gatter stehen haben, dann könnte man das so definieren.
Also drittens ist noch so, dass man sagen könnte,
ja, das würde Sinn machen, das so zu definieren.
Zweitens ist es tatsächlich, weil man auch sagen möchte,
wenn da nichts steht, dann schreibe ich da auch nichts hin.
Aber diesmal, wenn wir jetzt zu einer nicht-eterministischen Touring-Maschine kommen wollen,
wie würdet ihr das machen in Anlehnung an NFAs quasi?
Da hatten wir ja auch diesen Schritt, dass wir gesagt haben,
bisher war es ein DFA, jetzt wird es ein NFA,
also muss ich irgendwie die Überführungsfunktion anders definieren.
Wie würde man das wohl beinahe nicht-eterministischen Touring-Maschine machen
Was würde da Sinn machen
Warum sind denn so viele bei viertens? Das andere kann ich
mir ja alles erklären, aber viertens, in Anlehnung an den NFA.
Beim NFA haben wir gesagt, normalerweise Zustand,
in dem ich bin, Eingabesymbol, das ich lese,
Zustand, in dem ich dann bin, um da Wahlmöglichkeiten reinzubringen,
sagt man Zustand, in dem ich bin, Symbol,
das ich lese, potenziell mehrere Nachfolgezustände.
Also nehme ich sowas wie Z-Kreuz-Sigma, geht nach zwei Hochzeit.
Hier möchte ich sagen, Zustand, in dem ich bin und Symbol,
das ich lese, Und jetzt können halt mehrere Sachen passieren.
Ich will ihm jetzt die Wahlfreiheit geben bei dem Symbol,
das er schreibt, bei der Kopfbewegung,
die er macht und bei den Zustand, in denen er gehen kann.
Deswegen wird das zweitens, da habe ich nämlich genau diese Wahlmöglichkeiten. Bei erstens,
da schränke ich mich ein bisschen zu wenig ein,
da sage ich nur abhängig vom Zustand,
in dem ich bin, können irgendwie ganz viele verschiedene,
also verschiedene Symbole lesen können und so, das wird irgendwie strange.
Und bei viertens, da schränke ich mich viel zu wenig ein.
Da sage ich, ich habe nur eine Wahlmöglichkeit,
in welchen Zustand ich wechsle, aber ich mache abhängig vom Eingabesymbol,
schreibe ich immer das Gleiche, abhängig vom Bandsymbol,
schreibe ich immer das gleiche Bandsymbol und mache immer die gleiche Kopfbewegung.
Und so doll will ich mich gar nicht einschränken.
Ich will nur sagen, Zustände, in dem ich bin,
Symbol, das ich lese,
was macht die Touring-Maschine jetzt alles und da
will ich
Wahlfreiheit machen
Also beim Bandsymbol, das sie schreibt, bei der Kopfbewegung,
die sie macht und beim Zustand, in denen sie geht.
Also zweitens, klingt gut. Da steht es nochmal.
2-2, nachfolgende Folien.
Da ist sie. Also nicht die terministische True-E-Maschine,
wenn es zu so einem paar Zustand- und Bandsymbol,
das ich lese, eine endliche Anzahl von Übergängen gibt.
Also irgendwas zwischen null und so und so viele.
Das heißt, wir haben hier unten diese Überführungsfunktion,
also die zweite Auswahl von eben.
Oder wenn man möchte, macht man das hier als Kantenrelation
Konnte man bei der deterministischen Tool-Maschine auch schon machen,
nur dass man da eben gesagt hat,
für so ein Pärchen hier vorne aus Zustand und Bandsymbol gibt es
hier hinten immer nur maximal ein Triebel, das dazugehört.
Und dann sagt man wieder, genau wie beim NFA,
sobald es eine Rechnung gibt,
bei der ich in Endzustand komme, akzeptiere ich.
Also nicht dieterministische Tool-Maschine, hat auch wieder ganz viele Rechnungen
und sobald eine Erfolgsrechnung dabei ist, akzeptiere ich.
Was fällt euch auf, was ist anders noch als beim NFA?
Was haben wir beim NFA auch noch erlaubt,
was wir hier jetzt scheinbar nicht erlauben
Musik Was haben wir beim, was haben wir beim Übergang vom DFA zum NFA noch angepasst?
Genau, mehrere Startzustellen. Lässt man hier jetzt weg,
konnte man später ja beim NFA auch schnell weglassen,
wenn man diesen NFA mit Lambla-Kanten hatte, da sagt man,
dann reicht auch einer und mit Lambla-Kanten gehe ich in alle Startzustände oder so und hier sagt man auch,
naja, ich habe einen Startzustand und dann kann ich ja prinzipiell am Anfang sagen,
egal welches Symbol ich lese, ich schreibe genau das Symbol wieder hin,
bewege den Leseschreibkopf nicht und gehe in die Studiozustände,
die ich eigentlich alles als Staatszustände haben will.
Das heißt, ein Staatszustand reicht und das macht nachher so
einige Notationen und grafische Darstellungen einfacher, weil man weiß,
ich habe einen eindeutig definierten Anfang und danach passieren nicht deterministische Dinge.
Deswegen nehmen wir hier nur einen. Das ist also die
nicht deterministische Touring-Maschine und um für die mal ein Gefühl zu kriegen und auch um Gefühl dafür zu kriegen,
wie mächtig die jetzt ist, mal so ein Beispiel hier,
wenn ich das Problem da habe,
also ich kriege einen ungerichteten Grafen Knotenmenge V,
also ganz viel Knoten, Kanten dazwischen.
Also irgendwas, was die Knoten verbindet.
Und die Frage ist jetzt, hat G eine K-Klicke?
Eine K-Klicke sind K-Knoten, alle miteinander verbunden. Also wenn K3 ist,
ein Dreieck, wenn K4 ist,
irgendwie ein Viereck und dann habe ich da noch ein Kreuz dazwischen,
so, das ist auch wieder alle Knoten verbunden sind.
Und dann die Frage, wie löst man das?
Als Eingabe kriege ich wie gesagt den Grafen,
also üblicherweise irgendwie eine Folge von Knoten,
gefolgt von einer Liste von Kanten.
Und die kannten dann irgendwie als Zweiertubel der Knoten.
Das kriege ich als Eingabe und die Zahl K natürlich.
Und jetzt probiere ich das vielleicht mit einer Mehrband-Touring-Maschine,
damit ich irgendwie ein bisschen mehr Freiheit habe beim Argumentieren.
Aber wie könnte man dieses Problem deterministisch lösen?
Und im Anschluss, wie könnte man das nicht deterministisch lösen?
Was meint ihr? Wie könnte man das machen?
Also hier solche Dinger, sowas will ich finden.
Wenn ich jetzt irgendwie so einen Grafen habe.
Sowas, dann ist hier, gut
Da ist eine Vier-Clique drin, ne? Vier Knoten,
die alle miteinander verbunden sind. Und das will ich halt finden können.
Also gegeben mir irgendwie einen Grafen mit ganz vielen Knoten und
ganz vielen Kanten dazwischen und so eine Zahl, K will ich gucken.
Gibt es da Karknoten drin, die alle miteinander verbunden sind?
Wie macht man das? Deterministisches Ganze einfach. So Tipp
, Brutforce. Sprich, was kann man da machen?
Für jeden Knoten, ja, könntest du machen, was machst du genau?
Also du nimmst jetzt einen Knoten und jetzt,
du willst ja eine K-Clique, du willst ja nicht,
also einen Knoten hat ja eigentlich nicht die Eigenschaft,
die dich interessiert, sondern Du nimmst den Knoten.
Bitte? Brauche ich das? Also du könntest einfach,
du nimmst einen Knoten und du guckst erst mal,
hat der K minus eins Nachbar an,
weil sonst kann er ja gar keine Karklicke sein.
Und wenn er K minus eins Nachbarn hat,
dann guckst du, wählst du jetzt alle Möglichkeiten aus,
K minus eins Nachbarn zu nehmen.
Und für die guckst du immer, ob das deine Clique tatsächlich ist.
Oder ein bisschen einfacher, dass du dich nicht an
einem Knoten festhältst. Du nimmst alle Möglichkeiten,
K-Knoten aus V rauszunehmen und guckst immer,
ob das
eine Clique ist
Dann hast du es. Also alle K-Elementigen Teilmengen der Knotenmenge
durchgehen. Das sind ganz schön viele. Und bei allen
zu prüfen, ob es eine Klicke ist. Das Prüfen,
ob es eine Klicke ist, ist relativ einfach.
Wenn ich K-Knoten habe, dann gucke ich einmal,
gibt es all die Kanten dazwischen, so grob K-Quadrat,
viele Kanten, sind die alle da, falls ja, super.
Und falls nicht, keine Klicke, dann gehe ich in
die nächste. Also fange ich irgendwie an mit Behauptung,
V1 bis VK wäre eine Klicke,
dann sage ich halt,
dieses V1 bis VK minus 1 und VK plus 1
und ein V1 bis VK minus 1 und VK plus 2
und so probiere ich halt alle K-Elementigen Teilmengen der Knotenmenge durch
Bis ich eben hoffentlich eine gefunden habe, die eine Clique ist.
Wenn es eine gibt, dann finde ich die so auch,
ich probiere ja alle Möglichkeiten durch. Und wenn es keine gibt,
dann finde ich die nicht, stopp aber trotzdem noch endlicher Zeit,
wenn ich alle klicken, alle behaupteten Klicken halt durchprobiert habe.
Das dauert aber richtig lange, das nervt ganz schön.
Kann man das mit einer nicht deterministischen Touring-Maschine vielleicht so ein bisschen schneller machen,
so, was kann man da machen,
wenn ich nicht die Terminismus ausnutze?
Ich mache fast das Gleiche, aber ich nutze diesen Nicht-Determinismus
ganz brutal aus. Wie mache ich das? Das kann
ich jetzt nicht deterministisch
nämlich machen
Gleich. Was kann ich machen? Eben sind wir
alle K-Elemente in Teilmengen explizit durchgegangen, ne?
So, jetzt hilft mir der nicht, die Terminismus.
Was kann ich damit machen? Bei Gicht gesittet,
die Zerministerstreifen. Ja? Der Blick auf,
ist der Typ,
ist das
Zu kompliziert. Aber guter Ansatz. Ich bin mir
nicht ganz sicher, ob das mit der Schnittmenge klappt.
Ich bin auch zu müde, gerade zum Nachdenken.
Ich kann nur meinen vorgeschriebenen Weg entlang gehen,
alles andere kriege ich nicht hin.
Da haben wir uns gleich nochmal drüber nachdenken. Ich bin mir
nicht ganz sicher, ob das mit dem Schnitt klappt.
Es geht auch einfacher. Es geht daran modelliert, was
wir eben gemacht haben. Eben sind wir alle Möglichkeiten durchgegangen, ne?
Was kann ich nicht deterministisch machen? Wozu dient dieser Nicht-Determinismus?
Das kann ich machen. Ich gehe die nicht alle durch,
sondern Alter, da müssen wir mehr Aufgaben zu machen,
damit ihr dafür ein Gefühl entwickelt.
Ich rate mir das einfach. Ich fange an beim,
also ich habe jetzt diese Liste von N vielen Knoten.
Und jetzt geht diese nicht die terministische Touring-Maschine einmal über die Endknoten rüber.
Dafür brauchst du N viele Schritte. Und bei jedem Knoten
sagt sie, du bist dabei oder nee, du nicht.
Sprich, sie geht jedes Mal,
wenn sie so einen Knoten sieht,
geht sie in zwei mögliche,
nicht die terministische Nachfolgezustände
Den Nachfolgezustand, wo sie gesagt hat, der Knoten ist dabei,
in der Clique oder den, wo sie gesagt hat,
der ist nicht dabei. Und wenn sie das gemacht hat,
wenn man das genau so macht, dann könnte es passieren,
dass man mehr als K-Knoten rät, macht aber nichts,
danach geht man einmal rüber, schmeißt die Sachen raus,
also ich splitter das nicht terministisch auf,
jetzt bin ich nicht terministisch in Konfigurationen,
wo auf dem Arbeitsband alle Zahlen zwischen 0 hoch N und 1 hoch entstehen.
Und diese Zahlenfolge bedeutet, wenn an der Eatenstelle da einsteht,
bedeutet das der Ite-Knoten soll dabei sein und an der Null steht,
bedeutet das, der soll nicht dabei sein.
Jetzt gehe ich einmal über diese Zahl rüber und zähle,
ob das wirklich kafiler Einsen sind
Falls nicht, weiß ich schon, okay,
da habe ich hier mir zu viel genommen,
also berechne ich nur in denen weiter,
wo ich gerade K-Fila Einsen habe.
Und dann mache ich genau das wie im deterministischen Verfahren auch.
Ich habe jetzt ja von K-Knoten behauptet, das soll eine Clique sein.
Also prüfe ich nochmal. Ist das wirklich eine Clique und dann bin ich fertig?
Dann brauche ich nur am Anfang diese N-Fielen Schritte,
um zu raten, das ist eine Clique,
dann nochmal N-File, um zu sagen, okay,
ist das jetzt, sind das gerade K-Knoten,
die ich geraten habe?
Und dann brauche ich so wie bei dem deterministischen auch K-Quadrat viele Schritte,
um zu prüfen, ob das eine Clique ist.
Nämlich deutlich schneller,
als beim Determinismus
Ja, wir sehen das nachher einmal in so einem schönen Beispiel.
Das kommt leider gleich ein bisschen zu spät.
Ihr könnt das ja mal in Erinnerung behalten. Dieses mit
dem Aufsplitten von den, dieses nicht deterministische Aufsplitten von Möglichkeiten.
Das sehen wir dann nachher nochmal. Da einmal die
Beschreibung von ihm mit einer Mehrband, nicht die hemnistischen,
ich ziehe die Anzahl der Knoten und auf dem Arbeitsband
rate ich jetzt nicht deterministisch null oder eins.
Und wir holen das N mal. Genau. Und dann
steht da irgendwie eine Zahl zwischen null Hochenden und eins Hochenden.
Also da steht irgendwie entweder 0-0-0-
0-N mal oder da steht 0-0-0-
0 und am Ende eine 1 oder da steht irgendwie 1
-0-0-1-1-0-0-1 oder sowas.
Irgendwelche Zahlen N mal 0 oder 1 geraten. Und die Intuition ist dann,
dass ich Jetzt diese zwei auch in vielen Konfigurationen habe.
Jetzt geht es in jeder deterministisch weiter. Die Intuition ist,
die IT 0 oder 1 von diesem endstelligen Wort,
die soll gerade bedeuten, an IT der IT-Knoten ist in der Clique drin.
Also vermute ich. Die IT-Zahl auf dem Arbeitswand 1 bedeutet,
dass die NTM in dieser Rechnung vermutet,
dass deite Knoten zur Clique gehört.
Und dann ganz einfach jetzt überprüft sie deterministisch,
ob 1 gerade K mal vorkommt und dann,
ob die nötigen Kanten zwischen diesen vermuteten Knoten vorhanden sind.
Falls ja,
akzeptieren,
sonst nicht
Führt halt dazu, dass eine einzelne Rechnung in der nicht-diterministischen Touring-Maschine
schön kurz ist. Und darum wird es nachher gehen,
wenn wir uns um Komplexitätstheorie beschäftigen.
Jetzt noch nicht. Nur der Baum wird ziemlich groß,
aber die eine Rechnung wird eben schön kurz.
Das ist also deutlich schneller dann als bei deterministischen Touring-Maschinen.
Idee klar, so grob. Der Unterschied ist,
beim Determinismus sagt man, okay, ich teste alle Möglichkeiten durch,
mache mir eine große Vorschleife und teste alle Möglichkeiten durch.
Beim Nicht-Determinismus sage ich, ich rate mir eine mögliche Lösung,
also etwas,
von dem es sein könnte,
dass das
eine Lösung ist
Und dann prüfe ich, deterministisch ist es tatsächlich eine.
Und wenn es eine Lösung gibt irgendwo, wenn irgendwo in diesem Grafen
eine Karklicke ist, dann finde ich die da auch.
Dann rate ich mir nämlich in irgendeiner Rechnung die richtige Lösung.
Und NTM ist ja so definiert, dass man sagt,
die akzeptiert, sobald es einen akzeptierende Rechnung gibt, also klappt das. Genau,
und hier kann man auch schön sehen,
wie man auf welchem Abstraktionslevel man üblicherweise nachher solche Algorithmen angibt,
dass man sich gar nicht mehr so viel Gedanken macht darüber,
wie die Touring-Maschine irgendwie auf dem Band arbeiten müsste,
sondern dass man einfach sagt, naja,
da steht ja jetzt null hoch N auf dem Band,
also oder irgendwie eine Zahl zwischen null hoch N und Einzug N,
also gehe ich irgendwie über das Band rüber und zähle mal,
wie viele Einsen dabei sind
Und von der Idee her müsste man dann irgendwo einen Zähler haben,
den Zähler immer wieder erhöhen, wenn man eine Eins findet,
wieder an die richtige Stelle zurückgehen und so weiter.
Aber das gibt man alles. Kann man sich einmal,
wenn man jetzt die ersten Male mit sowas Kontakt hat,
kann man sich immer mal überlegen,
wie man das richtig implementieren würde,
wenn man jetzt wirklich eine Touring-Maschine hätte.
Aber so später, wenn man so ein bisschen Übung hat,
dann sagt man, okay, das geht ja.
Ich brauche da irgendwo einen Zähler, den ich um eins erhöhe.
Das klappt. Deswegen da nochmal die Anmerkung,
dass man eben üblicherweise jetzt später nicht mehr Zustandsübergangsdiagramme angibt,
sondern nur noch beschreibt, was eine Touring-Maschine tun müsste.
Gut, jetzt haben wir gesehen, dieses Problem,
Clicke lässt sich deterministisch lösen,
lässt sich nicht
deterministisch lösen
Scheinbar geht es mit einer nicht-diterministischen Toury-Maschine aber deutlich schneller.
Die Frage, die jetzt so ein bisschen auf der Hand liegt,
ist, sind die beiden jetzt äquivalent oder nicht?
Also entweder geht es tatsächlich, dass sich jedes Problem,
was mit einer nicht-diterministischen lösen kann,
auch mit einer deterministischen lösen kann, eventuell sehr,
sehr, sehr, sehr, sehr viel langsamer,
aber ich kann es halt lösen.
Oder? Weil das ja auch schon so aussah, dass die auch mächtiger ist.
Oder es geht halt nicht und man kann irgendwelche Probleme konstruieren,
wo das so deutlich reinhaut mit diesem Meerkönnen,
dass es nicht nur schneller ist,
sondern dass es eben auch
echt mehr ist
Warum Geschwindigkeit kümmern wir uns später? Jetzt erstmal ganz generell,
kann die mehr oder nicht, was meint ihr?
Kann ich damit mehr? Kann ich damit echt mehr?
Kann ich nicht echt mehr? Ist das doll mehr?
Genau. Jetzt könnte man sagen, der Touring-Theser schlägt das.
Jetzt kann ich ja sagen, ja,
vielleicht war die Touring-These ja so, dass die für nicht die terministischen,
deterministische gibt und ich wollte das nicht so viel verraten.
Und nicht die Terminismus wäre ja auch, ja,
nicht die Terminismus als Berechnungsmodell ist ja so ein bisschen fies,
weil man die ja nicht bauen könnte
Also dieses, ich gehe in mehrere Nachfolge,
so ist so ein bisschen strange. Bestimmt nicht ganz so,
aber das wäre jetzt Berechnungsmodell so ein bisschen fies.
Andererseits kann man argumentieren, ich als Mensch könnte die ja ausführen,
also gegebene, nicht die Terministiturenmaschine, mit einem Eingabewort,
könnte ich die ja ausführen, was würde ich jetzt machen?
Also ich gebe dir ein Eingabewort und nicht die terministische Touringmaschine,
was machst
Warte. Ja, aber ich glaube, das würdest du als Menschen nicht machen.
Nehmen wir mal an, ich gebe dir Präsenzaufgaben,
du kriegst eine nicht-deterministische Touring-Maschine und ich gebe dir ein Eingabewort.
Was machst du, was würdest du jetzt machen?
Du guckst in den ersten Buchstaben an und dann?
Bitte? Ja, genau. Würdest du was? Von hinten,
ja, du weißt ja gar nicht, wie die,
wie die, achso, du meinst,
du würdest vom Endzustand anfangen, das bei Touring-Maschinen richtig hässlich,
weil du ja nicht weißt,
was da so alles auf dem Band passiert.
Also du würdest vor dem Endzustand anfangen, weißt aber nicht,
wie der Bandinhalt aussieht, das ist doof.
Viel,
viel einfacher
Was machst du beim DFA,
wenn ich über dem DFA irgendwie ein Wort und ein,
wenn ich dir den DFA gebe und ein Wort,
dann gehst du halt los und guckst, wo du landest.
So, jetzt hast du noch ein paar mehr Möglichkeiten,
was machst du? Moment, warum, stopp,
aus, warum in jede Richtung?
Aber ich weiß nicht, warum du,
was meinst du mit in jede Richtung
Ah, ja, okay, alles klar. Genau,
man, ich fange ja in einer Startkonfiguration an. So,
und jetzt gucke ich mir einfach an, genau,
was du meintest, was kann die NTM alles machen und
all diese Möglichkeiten schreibe ich mir auf dem Blatt Papier.
Und dann nehme ich mir davon die erste,
schreibe mir davon wieder alle Möglichkeiten aufs Blatt Papier, die zweite,
schreibe mir wieder alle Möglichkeiten aus Blatt Papier und so weiter.
Und entweder ist da irgendwann mal eine Konfiguration mit dem Endzustand dabei,
dann bin ich glücklich oder halt nicht,
dann muss ich das eventuell ziemlich,
ziemlich lange machen oder die blockiert überall.
Das wäre so irgendwie,
so würde man es als Mensch machen,
Breitensuche,
was du
eben gesagt hast
Naja, wenn man das als Mensch machen kann,
dann sollte eine Tourier-Maschine das auch irgendwie machen können.
Also dieses irgendwie sukzessive, alle Konfigurationen, die erreichbar sind,
immer wieder aufzuschreiben. Klingt nach einem sehr mechanischen Verfahren,
wird man irgendwie ausführen können, ne? Tatsächlich geht das auch,
jede von einer Ente im akzeptierten Sprache kann auch von einer DTM akzeptiert werden,
naja, und umgekehrt die Richtung von DTM zu NTM ist einfach,
ich nutze nicht die Terminismus nicht, Umkehrung ist schwierig.
Idee, genau das, was wir eben beschrieben haben.
Am Anfang ist die nicht die terministische Touring-Maschine in einer Konfiguration,
nennen wir die mal C1,
in der Konfortion ist sie jetzt
Dann gibt es eine Anzahl von Nachfolgekonfigurationen.
Je nachdem, was eben diese Überführungsfunktion uns sagt.
Wichtiger Punkt, das sind nur endlich viele. Ich habe
zwar Nachfolgekonfigurationen, aber ich habe immer nur endlich viele.
Warum? Weil diese Potenzmenge von zwei Hochgamma-Kreuz, links,
rechts halten, Kreuz, Z, die ist halt endlich groß.
Also kann ich irgendwie von einem Zustand und Symbol,
das ich lese, nur endlich viele Nachfolgekonfigurationen erzeugen,
seien,
dass mal hier
irgendwie C1,1 bis
Merkt man schon, okay, das kann man jetzt sich als Baum darstellen.
C1 ist die Wurzel, das sind alles die Kinder von
C1. Und jetzt nimmt man sich C11 und sagt wieder,
okay, wenn ich in der Konfiguration bin,
was sind da alles die Nachfolger?
All die Dinger, C1I, die haben wieder Kinder.
C11 bis C11, J1 und C121 bis C12J2 und so weiter.
Und die bilden dann die dritte Ebene im Baum.
Und so kann man sukzessive sich den Konfigurationsbaum von der NTM vorstellen.
Und wenn dann in irgendeiner Ebene ein Endzustand ist, sage ich super,
ich akzeptiere. Beispiel, wenn ich die Touring-Maschine hier habe,
Die ist nicht deterministisch, weil immer,
wenn ich ein B sehe, kann ich mich entscheiden,
in Z0 zu bleiben oder diesen Übergang nach Z1 zu machen.
Ansonsten passiert da nicht sonderlich viel, die manipuliert den Inhalt nicht.
Und dann kann man sich hier angucken,
bei dem Wort A, B, A, B,
bin ich am Anfang in Z0, beim A passiert immer nichts.
Das heißt, ich gehe einfach mit dem Lese-Schreibkopf ein nach rechts.
Und beim B kann ich das jetzt entweder auch so machen und in Z0 bleiben,
dann bin ich hier bei der dritten Konfiration.
Oder ich kann halt nach rechts gehen,
aber in den Zustand Z1 wechseln, dann bin ich in der Konfiration.
Und so kann ich mir halt sukzessive immer weiter
den Konfirationsbaum aufmalen
Und wenn da irgendwo Konfigurationen dabei sind, wo ich einen
Endzustand habe, dann ist super, dann akzeptiere ich.
Und das, worauf man jetzt achten muss, ist,
genauso wie als Mensch auch, ich darf nicht in die Versuchung geraten,
irgendwie ein Zweig in dem Baum bis zum Ende durchrechnen zu wollen und dann erst den nächsten zu machen.
Wenn hier jetzt noch so eine Kante dran wäre,
A-A-R-B-B-R und dann Gatta-Gatta-R, dann würde ich halt über alle As,
alle B-Skupper lesen und danach immer weiter Gatta lesen,
bis in die Unendlichkeit.
Dann hätte ich hier so einen Zweig hier von oben nach unten,
wo ich jetzt danach immer weiter mit Z0 mich immer weiter
nach rechts bewege und die Gatta lese,
dann habe ich
unendlich lange Fahrt
Dann merke ich nie, dass es irgendwo Konfigurationen gibt,
wo ich akzeptieren würde, also dass es Rechnungen gibt,
in denen die NTM akzeptiert.
Das darf ich also nicht machen, das wäre eine Tiefensuche
in dem Baum. Was ich mache, ist,
ich baue das hier Ebene für Ebene auf und sobald ich
auf einer Ebene so eine Konfiguration mit dem Endzustand habe,
sage ich, super, ich akzeptiere.
Das ist schon das ganze Geheimnis. Also die DTM macht nichts anderes,
als zu sagen, okay, ich kodiere mir in die
DTM diesen ganzen Zustandsübergänge und alles von der NTM rein,
sodass ich die habe.
Da kann ich mir irgendwie in den Zuständen merken und so
Sind ja nur endlich viele Informationen. Und dann baue ich eben
diesen Baum der Ebene für Ebene auf. Und wenn es
irgendeine Rechnung gibt von der NTM, die eine Erfolgsrechnung ist.
Jetzt nehme ich mir diese Rechnung raus und da ist eine Erfolgsrechnung,
muss es irgendwie so ein I geben,
sodass ich nach i vielen Schritten einen Endzustand erreicht habe.
Und die Rechnung ist dann eben auf ITA-Ebene von diesem Baum
und dann finde ich das.
Nachdem ich irgendwie die IT-Ebene aufgebaut habe,
finde ich das in der DTM.
Das ist da
die Idee
Und jetzt kommt noch das Beispiel, was vorhin,
glaube ich, schon ganz praktisch gewesen wäre,
hier bei der nicht die terministischen Touring-Maschine,
die rät dreimal hintereinander 0 oder 1.
Zuerst sagt sie, oh, da steht ein Gatter,
also schreibe ich null oder einzeln. Als nächstes sagt sie,
zweites Feld wieder ein Gatter, schreibt sie wieder 0 oder einzeln.
Drittes Feld, wieder ein Gatter, schreibt sie wieder 0 oder einzeln.
Und die ist jetzt nachher, nach drei Schritten, in denen Konfiguration hier unten.
Nicht die terministisch ist sie in all den Konfirationen.
Und bei diesem Clique-Problem, wo wir gesagt haben,
am Anfang raten wir N mal 0 oder 1,
da würden wir danach genau in diesen Konfirationen da sein.
Also noch N mal weiter ausführen, dass man in zwei hoch N vielen Konfirationen.
Und dann würde man eben diese Zahlen hier durchgehen in jeder Konfiguration und gucken,
sind das K viele Einsen und falls ja,
bedeutet eben die Eins an der Itenstelle,
dass ich den Knoten VI reinnehmen wollte.
Das war da die Idee. Ja, und hier halt genauso,
man geht jetzt irgendwie Ebene für Ebene,
konstruiert man das und geht das dann durch.
Fühlen wir das nochmal aus? Wenn ich also in so einer,
in dieser Startkonfiguration bin von der NTM,
dann habe ich so und so viele Nachfolgekonfigurationen, endlich viele.
Das ist ein Baum und die Hauptidee ist nun,
die deterministische Tourmaschine macht in diesem Baum eine Breitensuche.
Sprich, baut die Ebene für Ebene auf und guckt,
ob in irgendeiner Ebene dann immer ein Endzustand dabei ist
Ausführung ganz grob. Sie notiert sich auf so einem Arbeitsband,
diese Startkonfiguration von der NTM und dann macht sie immer Folgendes.
Wenn auf dem Arbeitsband diese Konfiguration jetzt gerade stehen,
irgendwie nochmal durch ein extra Symbol getrennt, damit man weiß,
wo die Konfiguration, wo die nächste Konfiguration beginnt.
Und jetzt macht sie das folgende, sie arbeitet die von links nach rechts durch.
Deswegen Breitensuche in dem Baum. Jetzt fange ich bei der ersten an,
C1 und ersetze C1 durch alle Nachfolgekonfigurationen von C1. Und dann
mache ich nicht mit der jetzt am weitesten Link stehenden weiter,
sondern jetzt mache ich mit C2 weiter,
setze die durch alle Nachfolgekonfigurationen und so weiter,
bis ich bei CR bin und dafür alle Nachfolgekonfigurationen hingeschrieben habe
Und dann habe ich quasi die zweite Ebene im Baum
komplett abgearbeitet oder steht die dritte Ebene im Baum?
Genau. Und wenn dabei irgendwann eine Konfiguration erzeugt wird,
die einen Endzustand enthält, also einen Endzustand,
der nicht die terministischen Touring-Maschine, dann akzeptiert die deterministische Touring-Maschine.
Und wenn nicht, dann arbeitet die halt immer weiter.
Macht ja auch nichts, die nicht die terministische Würde dann
ja auch immer weiter arbeiten.
Genau. Ja, was ist wichtig? Wichtig ist,
wenn ich diese Konfiguration C1 durch die Nachfolgkonfliktion ersetzt habe,
dann macht man nicht als nächstes mit dem C2
hier weiter
Dann macht man mit ihm C2 weiter und eben nicht mit dem
gerade konstruierten C1-1. Wenn man das nämlich machen würde,
mit C1, dann mit C1-1,
dann mit C1-1 und so weiter,
dann geht man einen Zweig in den Baum immer weiter in die Tiefe,
das will man nicht.
Sondern wenn wir eine breite Suche machen. Genau. Und
dann haben wir den eingangs erwähnten Satz gezeigt.
Kann man also zusammenfassend sagen, was wir schon sehen,
auch ohne dass wir das jetzt genauer definiert haben,
die NTM ist deutlich schneller als die DTM,
kann aber effektiv nicht mehr,
effizienter,
aber nicht effektiver
Schneller, aber nicht besser in dem Sinne,
in dem Sinne von, was überhaupt möglich ist.
Fragen. Dann haben wir jetzt ein Band-Touring-Maschinen gehabt mit beidseitig
oder einseitig und endlichem Band. Mehr Band-Touring-Maschinen und nicht die
terministische Touring-Maschinen. Und jetzt kann man natürlich auch wieder sagen,
eine nicht-deterministische Touring-Maschine mit mehreren Bändern, mit beidseitig und endlichem Band,
mit einseitig und endlichem Band und so weiter, alles Äquivalent so.
Und dann kann man immer, je nachdem,
was man konstruieren will, eine nehmen,
die einem am angenehmsten erscheint.
Oder auch einfach irgendwie grob mit Nicht-Literminismus argumentieren
Fragen, ja. Wie man denn nicht deterministische Tourenmaschine bauen kann,
also so richtig bauen in dem Sinne nicht,
weil du halt diesen Nicht-Determinismus nicht bauen kannst,
in diesem Raten, insbesondere in dem Akzeptieren,
steckt ja drin, dass du irgendwann quasi per Magic weißt,
ui, da ist ein Endzustand und ich akzeptiere.
Aber wenn du es wirklich technisch bauen willst,
hast du ja keine andere Möglichkeit, als im Grunde genommen das zu machen,
was wir hier eben auch gemacht haben, nämlich dass so Ebene für Ebene irgendwie aufzubauen, also alles irgendwie aufzubauen.
Deswegen, was du machen kannst, ist, du kannst,
wenn euch das interessiert, man kann mit Randomisierung arbeiten,
Und statt es mit Nicht-Determinismus einzuführen, kann man es so einführen,
dass man sagt, das sind Algorithmen,
die randomisiert arbeiten und bei denen aber die Fehlerwahrscheinlichkeit so abgrundtief schlecht ist,
weil es reicht halt quasi,
wenn eine von all den ganzen vielen Möglichkeiten die richtige ist, dass sie da faktisch nicht benutzen kann.
Also selbst wenn ich immer nur so einen Coin-Flip habe,
wenn ich nicht beliebig auf branchen kann,
sondern immer nur die Möglichkeit habe,
zwei nicht die hymnistische Verzweigung zu haben, das ist genau ein Coin-Flip,
dann bedeutet die Akzeptanzbedingung bei der NTM ja,
wenn ich nach Endschritten zwei auch endviele Konfitionen erreicht habe,
reicht es,
wenn eine davon akzeptiert und ich würde akzeptieren,
das ist so eine Fehlerwahrscheinlichkeit von 1 zu 2 hoch
N,
also ziemlich gruselig
So könnte man es bauen, kann aber nichts damit anfangen.
Aber wir werden nachher noch sehen, dass insbesondere bei Komplexitätsbetrachtung,
dass ein sehr mächtiges Konzept ist, dieser Nicht-Determinismus.
Also auch um uns wiederum Gedanken zu machen über Grenzen von schnellen,
deterministischen Berechnungen, da werden wir es vor allem benutzen.
Sonst noch
Man sagt ja immer, Zahnarzt ist so ein harter Job,
ne, weil man mit dem Zahnarzt immer in schmerzerfüllte Gesichter guckt, so, ne.
Ich kann das gerade so ein bisschen nachempfinden. Nicht so richtig schmerzempfinden,
aber so irgendwie so, so eine Mischung aus,
ah, wäre ich doch heute Morgen im Bett geblieben.
Ist schon hart. Das,
warum wir das primär machen übrigens, also dieses heutige Kapitel,
ne, wenn ihr euch den aktuellen Aufgabenzettel anguckt,
da werden primär Sachen behandelt von gestern oder eigentlich ausschließlich Sachen von gestern.
Das für heute dient dazu,
dass ihr so ein bisschen so ein Gefühl kriegt,
okay, was gibt es noch so für Modelle,
wie kann man irgendwie mit Touring-Maschinen arbeiten
Und dann ist eben wichtig, dieses Konzept des Nicht-Determinismus irgendwie zu fassen.
Wir hatten das schon bei NFAs, dieses nicht-diterministische.
Und hier wird es jetzt nochmal ganz besonders wichtig,
dass man irgendwann diesen Kniff hinkriegt mit, okay,
ich rate mir nicht deterministisch die Lösung und dann kann ich damit arbeiten.
Das hilft nachher enorm, wenn man Algorithmen angeben will,
die nicht deterministisch in einer bestimmten Zeitschranke arbeiten.
Und dann kann man später argumentieren, dass es eher wahrscheinlich
keine Algorithmen gibt, die deterministisch in schnellen Zeitschranken arbeiten.
Und das ist dann wieder ein sehr praxisrelevantes Resultat,
weil ich dann weiß, okay,
ich brauche keine Zeit da reinstecken,
irgendwie mir einen schnelleren Algorithmus zu überlegen,
wenn es den wahrscheinlich
gar nicht gibt
Da wird das dann sehr wichtig,
aber das so davor mit dem Meerband und so,
das ist mir so ein bisschen,
dass man mit Touring-Maschinen so ein bisschen rumgespielt hat, gearbeitet hat.
Dann, das war jetzt alles so,
das war quasi diese Woche, wir gucken noch einmal kurz da rein,
was wir nächste Woche machen wollen, damit ihr das schon einmal gesehen habt.
Das macht es für nächste Woche,
glaube ich, ein bisschen einfacher.
Und zwar Aufzählbarkeit und Entscheidbarkeit
Es werden wieder zwei Sprachfamilien sein. Also wir haben jetzt irgendwie regulär,
kontextfrei und jetzt werden kommen entscheidbare und aufzählbare Sprachen.
Die werden wieder beide so eine Sprachfamilie sein. Man kann sich schon überlegen,
naja, wir haben bisher die Touring-Maschine gehabt,
wir haben aber noch gar nicht definiert,
die Sprache oder die Sprachfamilie, der von Touring-Maschinen akzeptierten Sprachen,
das ist ja bestimmt wieder irgendwie eine Sprachfamilie so.
Und in die Richtung geht das jetzt hier, das werden
gleich die aufzählbaren Sprachen sein. Und das macht man wie folgt,
die erste Definition ist ein bisschen, naja,
heute würde man sagen, die ist ein bisschen umständlich,
die ist historisch aber so gewachsen, dass man irgendwie sagt,
wenn ich so eine Menge habe aus Sigma Stern,
dann heißt die rekursiv aufzählbar oder auch einfach nur aufzählbar.
Genau dann, wenn es so eine Funktion G hier gibt,
Von N auf Sigmar Stern mit der Eigenschaft,
gehe von N ist eben gerade gleich M.
Und gehe soll total und berechenbar sein. Da merkt man schon,
naja, wenn die berechenbar ist, dann kann ich also
bei Vorlage von der natürlichen Zahl irgendwie ein Element aus M berechnen.
Also hängt das wohl irgendwie schon eng mit Akzeptieren von Sprachen zusammen,
statt die Sprache zu akzeptieren, kann ich sie jetzt irgendwie sukzessive aufs Band schreiben.
Und man kann dann eben auch zeigen,
so eine Menge M ist aufzählbar, genau dann,
wenn entweder so eine K-Band-Offline-Touring-Maschine existiert,
die jedes Wort einmal auf die Ausgabeband schreibt oder wenn M gleich LA ist für eine deterministische Touring-Maschine.
Und das hier unten, das ist im Grunde genommen die Definition,
die wir benutzen wollen, dass wir sagen wollen,
eine Sprache ist aufzählbar, genau dann,
wenn es eine Touring-Maschine gibt, die diese Sprache akzeptiert.
Das werden wir einfach gleich als Definition benutzen dafür.
Und dann sagen, okay, das andere sind äquivalente Beschreibungen.
Die Fortuna-Maschinen akzeptierten Sprachen bilden diese Sprachfamilie ereben
Wenn ich weiß, ich habe eine aufzählbare Menge hier,
wenn ich weiß, ich habe eine Menge, die ist rekursiv aufzählbar.
Wie kriege ich das erste hier hin? Wie kann ich
dann zeigen? Also ich weiß, M ist rekursiv aufziehbar.
Wie kann ich zeigen, dass eine Kaber- und Offline-Touring-Maschine existiert,
die jedes Wort der Menge genau einmal auf ihr Ausgabeband schreibt?
Was muss die machen? Man beachtet,
dass die Funktion G hier, dass die berechenbar ist,
also eine Touring-berechenbare Funktion
Ja, nämlich, was macht sie? Also ja, aber...
Mehr Details. Mehr Details. Du weißt, gehst berechnbar,
das heißt, es gibt eine Touring-Maschine, die geh berechnet.
Was wir haben wollen, ist, eine K-Band-Offline-Touring-Maschine,
die jedes Wort aus M genau einmal auf ihre Ausgabebahn schreibt.
Die Touring-Maschine für G kannst du ja irgendwie zur Protine benutzen
Ihr könnt da auch algorithmisch rangehen.
Das gäbe rechenbar. Was bedeutet gebrechenbar als Java-Routine?
Was bedeutet das? Wie sieht die Signatur davon aus?
Von geh. Was hat die als Argument? Stwing,
nein. Ein Objekt, nein. Und dann,
die kriegt irgendwie eine Zahl als Argument
Und was sie ausgibt, ist dann eben, geh von 5,
also das fünfte Wort der Menge oder irgendwie sowas.
Und die hier, diese Carbon Offentoury-Maschine,
die macht nichts anderes, als die initialisiert sich ein Zähler.
Der fängt bei null an. Dann berechnet sie G von null,
schreibt das auf ihr Ausgabeband. Dann erhöht sie den Zähler,
berechnet G von 1, also mit ihrer Subroutine da,
schreibt das aufs Ausgabeband, berechnet sie G von 2,
schreibt das auf das Ausgabeband, G von 3,
schreibt das auf das Ausgabeband und so weiter.
Fertig. Gibt es noch ein Problem? Ja, da steht,
sie soll jedes Wort genau einmal auf ihr Band schreiben.
Es könnte aber sein, dass G von null und G von 3
das Gleiche ist. Also macht sie das so,
dass sie die Dinger nicht gleich aufs Ausgabeband schreibt,
sondern auf ein Arbeitsband
Und jedes Mal, wenn sie ein neues Wort generiert hat,
guckt sie, steht da schon auf dem Arbeitsband.
Falls ja, schreibt sie es nicht dazu, falls nein,
schreibt sie es dazu und schreibt es aufs Ausgabeband.
Dann habe ich das. Das klappt. Und das Ding kann ich dann halt ummodeln,
dass ich eine Touring-Maschine habe, die die Sprache genau akzeptiert.
Bei Vorgabe eines Wortes weh, und sie will jetzt prüfen,
ist das in M drin oder nicht,
schmeißt sie halt quasi diese Kaband-Offline-Touring-Maschine an.
Die gibt ja sukzessive alle Worte aus M aus,
und dann guckt sie immer, ist das das Wort,
was bei mir gerade auf dem Eingabeband steht,
falls ja akzeptiere, ich falls nein, nächstes Wort.
Dauert sehr lange, wenn das Wort nicht in Ämtere,
wenn das vorgegebene Wort gar nicht in M drin ist,
arbeitet die auch unendlich lange,
aber macht ja nichts
Geht ja nur ums Akzeptieren. Und so kann man dann zeigen,
dass die drei hier äquivalent sind. Was wir aber benutzen wollen,
ist, dass wir einfach sagen, die von Touring-Maschine akzeptierten Sprachen,
das ist gerade die Sprachfamilie der aufzählbaren Sprachen.
Also wir definieren das nicht so,
wie wir es hier eingangs gemacht haben,
sondern wir benutzen diesen Satz, dass das äquivalent ist,
um zu sagen, okay, das ist die Sprachfamilie eher eh.
Und um die einzusortieren, haben wir vorhin eigentlich schon gemacht,
kann man sich halt schnell überlegen, die Touring-Maschine kann alles,
was ein DFA kann.
Die Touring-Maschine kann alles, was ein PDA kann.
Nächste Woche solltet ihr auch noch mal zeigen,
wie man das mit kontextfreien Grammatiken machen kann.
Und zusätzlich kann sie auch eben dieses auch in Biochen-Cochen akzeptieren
Argo, kann sie alles, was wir bisher können und mehr?
Die Reihenfolge ist also regulär, kontextfrei und dann die Aufzählbahn. So,
und jetzt ist hier das Problem,
haben wir eben auch an dem Beispiel ein, zwei,
drei Mal gehabt, bei diesen akzeptierten Sprachen,
da wird ja nur verlangt, dass ich bei Worten,
die in der Menge bin, in einen Endzustand komme.
Und dann kann ich, wenn ich möchte,
aus dem Endzustand alle Kanten, die daraus führen,
wegschmeißen, dann weiß ich, wenn ich im Endzustand bin,
bleibe ich auch stehen.
Problem ist aber, und das stört einen auch,
ich muss nicht bei 9-Instanzen anhalten,
also wenn ein Wort nicht in der Sprache drin ist,
kann die Tour die Maschine unter Umständen nur unendlich lange
laufen,
das stört mich
Deswegen führt man noch ein, dieses mit den entscheidbaren Sprachen.
Moment, da will ich hin. Eine Menge M ist
genau dann entscheidbar, wenn es eine Touring-Maschine gibt,
die die Menge akzeptiert, also genauso wie bei Aufziehbar.
Und zusätzlich, dass sie auf jeder Eingabe anhält.
Das wollen wir als Definition benutzen für die Familie der entscheidbaren Sprachen.
Und dann haben wir Reck kontextfrei, RE, also aufzählbar.
Und jetzt haben wir noch die Entscheidbar. Jetzt kann man
sich noch fragen, liegen die davor oder dahinter?
Da hier irgendwie zusätzlich eine Bedingung ist,
kann die maximal so mächtig sein wie die Aufzählbaren
Und was wir sehen werden nächstes Mal ist,
dass die Entscheidbahn tatsächlich eine echte Teilmenge von denen auszählbaren sind.
Die sind mächtiger als kontextfrei, aber nicht so mächtig wie aufzählbar. Was bedeutet,
dass es Probleme gibt, die nicht entschieden werden können,
sprich, für die es keinen Algorithmus gibt,
der auf jeder Eingabe anhält, also insbesondere auf die 9-Instanzen dann eben nicht.
Und das nervt. Also üblicherweise möchte ich ja,
wenn ich einen Algorithmus implementiere,
dem irgendwie eine Eingabe vorlegen, dann möchte ich,
dass der arbeitet und dann möchte ich,
dass er mir das Ergebnis ausspuckt oder eben in dieser Notation von Sprachen möchte ich,
dass er mir nach endlich vielen Schritten ja oder nein sagt.
Wenn ich zeigen kann, das geht aber gar nicht,
Habe ich ein blödes Problem, ne? Das nervt. Genau,
die zwei Folien davor könnt ihr euch zu Hause nochmal angucken.
Hier nochmal die Zusammenfassung irgendwie, Entscheidbarkeit bedeutet, es gibt eine Touring-Maschine,
die die Sprache akzeptiert und die auf jeder Eingabe anhält.
Und Aufzählbarkeit bedeutet einfach nur, es gibt eine Touring-Maschine,
die die Sprache akzeptiert. Und da bedeutet das insbesondere,
ich muss nicht bei jeder Eingabe anhalten.
Bei Worten in M kann ich das so machen,
dass sie das tut, wenn ich sage, Endzustand stehen bleiben.
Bei Worten, die nicht in M sind, kann ich
das nicht zwingend zu machen. Und das Problem ist,
dass ich, wenn eine Rechnung schon sehr, sehr,
sehr lange dauert, ich nicht mit Sicherheit sagen kann,
kommt da jetzt irgendwann nochmal ein Endzustand?
Oder akzeptiere ich gar nicht? Bin ich vielleicht
schon in der Endluschschleife,
ohne das zu merken
Das weiß ich dann eben nicht. Super. Die Folien
könnt ihr euch ja zu Hause nochmal angucken, als eins,
die macht da den Einstieg nächstes Mal ein bisschen einfacher,
aber nächstes Mal definieren wir nochmal das,
was wir eben gemacht haben, sauber entscheidbar aufzählbar.
Dann gucken wir uns ein paar Probleme an,
die entscheidbar sind, ein paar Probleme, die aufzählbar sind.
Und dann gucken wir uns vor allem an,
dass es nicht entscheidbare Probleme gibt, die aber glücklicherweise noch aufzählbar sind,
aber trotzdem ist das schon aus algorithmischer Perspektive eine ziemlich blöde Sache.
Also man stelle sich mal vor irgendwie im Compiler,
der Kompilierungsvorgang, wäre ein nicht entscheidbares Problem.
Das würde bedeuten, ihr könnt auf den Compiler-Klopf Glück klicken
und manchmal kompiliert das und manchmal nicht.
Und wenn es nicht kompiliert, wisst ihr nicht,
ob ihr irgendwo einen Fehler drin habt oder ob das gerade
nur noch länger braucht
Das wäre irgendwie ziemlich nervig. Das wäre ein nicht entscheidbares
Problem dann. Glücklicherweise ist das entscheidbar, aber ja,
das machen wir nächstes Mal und dann gucken wir uns nochmal
spaßeshalber ein überaufzählbares an.
Also eins, das nicht mal mehr aufzählbar ist.
39. Fragen? Erstens, zweitens, drittens.
Dann schöne Woche und wir sehen uns
nächsten Montag, Feierabend