Jetzt könnt ihr mich auch alle wieder hören.
Das war jetzt also nur für die hier Anwesenden.
Ernsthaft? Ja. Warte, da, jetzt.
So, heute Turing-Maschinen,
zweiter Teil
Wer war gestern alles da? Ja, alles gut.
Wir wiederholen trotzdem einmal kurz ein bisschen Touring-Maschinen.
Wir wollten vom DFA irgendwie zur Touring-Maschine kommen. Idee ist,
Touring-Maschine funktioniert fast genauso wie der DFA,
aber wir können auf dem Band nach links und rechts gehen
und wir können auf dem Band lesen und schreiben.
Und dann landet man schon bei dieser Touring-Maschine.
Das wird die Definition. Die ersten Sachen kennt man
so irgendwie, Zustandsmenge, Eingabesymbole, Bandsymbole
Überführungsfunktion, das steckt hier in diesem LRH irgendwie drin,
dass der Lese-Schreibkorb sich nach links bewegen kann,
nach rechts bewegen kann oder irgendwie seine Position auf dem Eingewöhnbaren halten kann.
Staatszustand, Endzustand und das Symbol für das leere Feld.
Wobei hier nochmal, das leere Feld ist eben in dem Bandalphabet
drin, aber nicht in dem Eingabealphabet. Das heißt,
wenn man irgendwie Zeichenketten durch den Blank teilen will,
dann muss man sich eben bei dem Eingabealphabet irgendwie ein spezielles Symbol dafür einführen.
Das war die Touring-Maschine, dann die Konfiguration war immer so ein Wort,
was irgendwie einen Zustand hatte und links und rechts vor dem Zustand dann eben Wörter,
die aus Bandsymbolen bestehen.
Und die Idee war eben, dass die Position des Zustandes
in diesem Wort darstellt, wo der Leseschreibkopf gerade ist.
Der ist jetzt immer über dem ersten Symbol von dem V. Ja.
Da war dieses Beispiel,
wenn man mit dem Wort AAB als Eingabe anfängt,
dann kann man eben erst mal zweimal diese AXR-Kante hier oben nehmen.
Oh, dann gelangt man zu den Konfigurationen.
XZ0AB und dann
Aber so zweimal aus dem A und X gemacht und der Leseschreibkopf ist
zweimal nach rechts gewandert und man ist aber im Zustand Z-0 geblieben.
Jetzt kann man über das B noch rüberlesen,
dann ist man einmal über das Wort rüber und da danach eben,
weil das Band einseitig unendlich ist, beliebig viele Sharps kommen,
sollte man das da jetzt eben mit diesem einem Sharp an.
Jetzt sagt die Kante hier irgendwie Sharp lesen,
Sharp schreiben und nach links gehen,
mit dem Leseschreibkopf und eben in den Zustand Z1 wechseln und
da guckt man jetzt nach,
ob das letzte Symbol des Wortes eben ein B ist und
wenn das der Fall ist wie hier,
dann wechselt man in den Endzustand
Und akzeptiert das Eingabewort. Jetzt wird das Wort AAB akzeptiert und fertig. Jetzt konnte man irgendwie diese Idee von den Konfirmationsübergängen,
das konnte man jetzt eben formalisieren,
sieht so ein bisschen krüder alles aus,
damit man eben all diese Fälle abdeckt,
dass da irgendwie ein Schaf stehen kann oder nicht,
dass da irgendwie nach einem Wort ein paar Charps kommen können und dann kommt noch ein Wort,
solche Geschichten, dass man das irgendwie alles abdeckt,
dass man nicht nach links über das Band hinausgehen kann,
sondern nur eben nach rechts,
um das alles abzudecken,
weil die Definition
eben komplizierter steht da der Vollständigkeit halber
Dann wieder, wenn man mehrere Schritte zusammenfassen will,
dann kann man wieder diese reflexive, transitive Hülle nehmen.
Also wenn man hier beispielsweise da direkt sagen will,
dass man von da zu dieser Endkonfiguration kommt,
dann kann man eben auch schreiben, Z0A, A,
B, jetzt kommt dieses V-Dash mit dem Stern drauf und dann ist man in XXB,
Z2. Deine Folge von solchen Konfliktionen heißt Rechnung und Erfolgsrechnung heißt es eben dann,
wenn die Rechnung KN hier, wenn die eben einen Endzustand enthält.
Man fängt eben an in irgendwie einer Konfiguration,
Staatszustand gefolgt von dem Eingabewort, da auch wieder,
das Wort besteht nur aus Symbolen aus Sigma und man landet
irgendwie bei einer Konfiguration,
die ein Endzustand enthält und dann akzeptiert man das Wort weh
Da steht es nochmal mit der akzeptierten Sprache. Und wir akzeptieren dann das Wort weh,
wenn wir hier irgendwie in ein Endzustand kommen,
dass die Touring-Maschine hier vielleicht bei der Konfrontation noch weiterrechnen könnte,
darf sie, ist uns aber egal.
Wir würden dann das Wort auf jeden Fall schon akzeptieren.
Auch wenn sie danach vielleicht wieder aus dem Endzustand rausgehen könnte oder irgendwie sowas,
wir akzeptieren trotzdem. Ja, dann hatten wir noch,
dass wir nicht nur Sprachen akzeptieren, sondern auch Funktionen berechnen können.
Wenn wir jetzt so eine Wortfunktion F haben von Sigmar Stern nach Sigmar Stern,
Also als Beispiele irgendwie in einem Wort aller As in Bs umwandeln oder irgendwie sowas,
das sind Wortfunktionen und dann nennen wir die eben dann Turing berechenbar,
wenn eben, wenn F von W gleich V ist,
dann soll die Turing-Maschine eben gestartet,
auf dem eingebaut,
W irgendwie so enden,
dass danach V auf dem Band steht und der Leseschreibkopf
eben ganz links ist und wir in einem Endzustand sind
Wobei hier, ne, also da das Band ja einseitig unendlich ist,
also nach links immer noch Platz ist,
die Konfiguration könnte auch irgendwie quasi irgendwo auf dem Band erreicht werden.
Wenn links davon nur Sharps stehen, ist das okay.
Das wird da ja nicht weiter angedeutet. Also wir können beispielsweise
starten in der Konfiguration Z00 und wir enden in der Konfiguration Sharp,
Sharp, Sharp und jetzt irgendwie ZN1, das wäre okay.
Dass links davon irgendwie beliebig viele Sharps stehen können, ist okay.
Also das Ergebnis muss nicht so wie das eingebewortet ganz links
auf dem Band stehen. Ja, und dann hatten wir
dieses Beispiel mit die Zahl X um 1 reduzieren,
Zahl ist jetzt als Binärkulierung gegeben.
Und da war die Idee eben,
wir gehen bei dem Eingebewahrt X irgendwie ganz nach rechts.
Und wenn das eine 01 ist,
schreiben wir da eine Null hin und sind fertig.
Und wenn das eben eine Null ist,
dann schreiben wir dafür eine 1 und dann gehen wir
weiter nach links und machen den Schritt immer wieder.
So lange, bis wir irgendwann mal auf eine 1 treffen und daraus eine Null machen können.
Und dann bei der Plus-1-Geschichte haben wir auch schon diskutiert,
da fängt man auch irgendwie rechts an,
macht aus einer Null eine 1 und aus einer einzelnen Null.
Aber wenn man eben aus einer einzelnen Null macht,
dann muss man das machen,
was hier bei Schritt 3 passiert,
nämlich wieder nach links gehen und weiter gucken,
was passiert
Und bei Plus 1 hat man eben auch das Problem,
dass man eventuell einen Überhang hat und ganz links eben noch eine eins hinzufügen muss,
wofür man dann eben unter irgendeinem das Wort einmal komplett einfällt,
nach rechts schieben muss.
So, dann hatten wir noch genau,
dass das im Grunde genommen das Gleiche ist,
berechnen Funktionen und akzeptieren von Sprachen.
Wenn ich eine Sprache akzeptieren kann, eine Sprache M,
dann kann ich eben auch die charakteristische Funktion berechnen oder auch andersrum.
Und wenn ich eine Funktion berechne,
wenn ich eine Touring-Maschine habe, die eine Funktion berechnet,
dann ist das Äquivalent dazu,
diese Sprache zu akzeptieren
Und das ist die Begründung dafür,
dass man sich später quasi immer auf das Akzeptieren von Sprachen
einschränkt und gar nicht so sehr das Berechnen von Funktionen beachtet,
wobei hier, wenn man so eine Sprache akzeptieren will,
dann ist eben das Berechnen der Funktion meistens als Subroutine da drin.
Also wenn ich die Tupel XF von X akzeptieren will,
dann kommt da jetzt irgendein Tupel XY als Eingabe,
dann gucke ich, nehme ich mir das X,
berechne, was F von X ist und vergleiche eben,
ob F von X und Y das Gleiche sind.
Und wenn ja, akzeptiere ich.
So, das hatten wir bis dato
Habt ihr irgendwelche Fragen zu diesem Touring-Maschinen,
akzeptieren von Sprachen, Funktionen und so weiter, Kontext?
Dann könnten wir ja Schluss machen. Auf dem Aufgabenzettel,
da ist das dieses Mal so aufgebaut bei den Präsenzaufgaben,
ist bei der ersten einfach erstmal so eine Furing-Maschine gegeben und
man soll mal gucken,
was die so macht
Es dient nur so zum Trainieren irgendwie, das ist eher untypisch,
dass man da irgendwie eine Touring-Maschine kriegt und die dann,
keine Ahnung, reverse engineeren soll oder so,
weil das ist also eine unkommentierte Touring-Maschine oder so, das ist richtig krüde.
Das ist jetzt eine relativ einfache, die da gegeben ist,
ja der irgendwie zwei Zustand und man kann halt so ein bisschen ablesen,
was da bei den Kantenübergängen passiert und dann hat sie so ein paar Eigenarten,
dass irgendwie gar nicht alle Worte bis zum Ende gelesen werden und solche Geschichten,
da kann man sich ja kurz ein bisschen bei dem Beispiel Gedanken drüber machen,
aber dass wir nicht so eine typische Aufgabe sonst.
Und bei der zweiten und dritten,
da soll man dann eben für eine gegebene Sprachentouring-Maschine konstruieren
Und das ist auch das,
was dann nachher bei den Übungsaufgaben einmal gemacht werden soll.
Da solltet ihr einmal für auch ein B hochenden,
Touring-Maschine machen und einmal für X plus 1. Genau,
dass ihr das einmal händisch ausführt und begründet, wie das funktioniert.
Und dann kommt noch, genau, die dritte Frage ist
noch zu zeigen, dass eine Touring-Maschine ein PDA simulieren kann.
Das müsste mit dem wissen, das wir bis hierhin haben
, eigentlich alles gehen. Trotzdem, Fragen zum ersten,
zweiten. Dritten. Wer machen wir da mal weiter?
Jetzt wollen wir ein paar Varianten von Touring-Maschinen einführen
Mit dem man dann meistens ein bisschen einfacher arbeiten kann, als mit dieser Einband-Touring-Maschine.
Dazu brauchen wir erst mit diesem Äquivalenzbegriff, da sagen wir,
zwei Touring-Maschinen sind dann Äquivalent, wenn sie halt die gleiche Sprache akzeptieren.
Und wenn wir jetzt ein neues Touring-Maschinen-Modell einführen,
also keine Ahnung, eins mit mehr Bändern,
eins mit mehr Köpfen, eins mit beidseitig und endlichem Band,
was einem so alles einfällt,
dann zeigt man halt immer, dass,
wenn ich so eine Touring-Maschine habe,
dann kann ich auch dieses ganz grundlegende Modell von eben bauen oder eine Touring-Maschine in diesem ganz grundlegenden Modell von eben,
dass da zu Äquivalent ist.
Und dann weiß ich immer,
dass die beiden Touring-Maschinenarten im Grunde genommen
das Gleiche sind
Eins, was wir hatten,
bisher hatte die Toolmaschine ja so ein einseitig und endliches Band,
das Band wollen wir jetzt beidseitig unendlich machen.
Wir starten dann wieder in so einer Startkonfiguration, Z0W,
aber wir können dem sowohl nach links als auch nach rechts irgendwie beliebig weit gehen.
Und das ist eine Touring-Maschine mit einem beidseitig unendlichen Band. So,
und jetzt ist die Aussage zu jeder DTMA mit einseitig um endlichem Band,
gibt es eine Äquivalente B mit beidseitig um endlichem Band und umgekehrt.
Die eine Richtung ist klar,
dass eine mit einem beidseitig und endlichen Band mindestens das tun kann,
was eine tun kann,
mit einem einseitig und endlichen Band ist irgendwie klar,
ich benutze das einfach
gar nicht,
was links davon steht
Aber warum? Ach so, ein kleines bisschen aufpassen muss man,
weil bei dem einseitig unendlichen Band, da würde der Leseschreibkopf ja blockieren,
wenn er über das Band hinaus nach links gehen soll.
Das heißt, wenn ich so einen Übergang drin habe bei der Turing-Maschine A,
dann würde die B da weiter nach links laufen und vielleicht irgendwas tun. Soll sie nicht,
deswegen würde man bei der Konstruktion das Zoo machen,
dass B sich,
ganz am Anfang geht sie einen Schritt nach links,
setzt sich da irgendwie so ein Symbol hin,
um sich zu merken, hier ist der linke Rand,
dann geht sie nach rechts,
arbeitet genauso wie die andere Turing-Maschine und wenn sie jemals auf
dieses Symbol ganz links kommt,
dann würde sie halt abbrechen,
weil A das auch tut
Aber die andere Richtung ist schwieriger. Ich habe jetzt eine Touring-Maschine mit
einem beidseitig und endlichen Band und ich will eine bauen,
die das Gleiche tut, vielleicht länger braucht,
also kann es bestimmt länger braucht,
aber nur ein einseitig und endliches
Band macht,
braucht.
Nochmal? Sozusagen. Ja, sie der Tempotheker. Ja,
du willst die beidseitig und endlich durch die Einseitige ausdrücken, nicht andersrum. Ja,
wenn die beidseitige jetzt auf,
also die beidseitig hat jetzt die Zelle null,
da bin ich ganz am Anfang,
auf dem Eingabeband und da habe ich so eins, zwei,
drei, vier, fünf und in die andere Richtung halt minus,
als minus zwei, minus drei, minus vier und so, ne?
Und meine Einseitige hat jetzt ja nur die Felder 0,
1, 2, 3, 4,
5, 6 und so weiter.
Wie kodierst du das andere Band da rein
Der Blick ist da, was ein Stein löst.
Das könnte man machen, genau. Er meinte gerade,
man könnte, wenn man bei der beidseitigen Links irgendwie was macht,
dann schiebt man alles von dem Band der Einseitigung um ein Feld nach rechts und arbeitet da,
also dann hat man die Null sozusagen immer weiter nach rechts verschoben,
den Nullpunkt.
Das ist eine coole Idee, das könnte man machen.
Ich glaube, das dauert richtig,
richtig lange, aber das könnte man machen
Uh. Ja, das, oh ja, man könnte,
die Idee war gerade, man nimmt alle geraden Felder für
die rechte Seite und alle ungeraden Felder für die linke Seite.
Kann man auch machen. Muss man sich noch Zähler und so einführen,
damit man sich, also nimmt man uns noch irgendwie
einen Bereich vorne für irgendwelche Zähler oder so.
Und damit kann man das auch machen. Auch gut.
Noch eine Idee. Also ich kann mir zumindest vorstellen,
dass das funktioniert, ohne das jetzt bewiesen zu haben
Das, was sich so durchgesetzt hat,
weil man das dann auch so schön verallgemeinern kann,
ist, dass man das einseitige Band in sogenannte Spuren einteilt,
dass man sozusagen sagt, okay, ich habe jetzt dieses einen seit,
habe ich hier noch, ja.
Das ist ein bisschen Tafelarbeit. Wenn ich So,
wenn ich das bei dem beidseitigen unendlichen Band habe,
also hier fange ich irgendwie an, auf dem nullten Feld.
Und jetzt habe ich nach rechts dann halt diese Zahl 1,
2, 3 und nach links sind diese Zahlen minus,
als minus 2, minus 3. Und jetzt ist die Idee,
dass man bei dem Band, was nur einseitig unendlich ist,
minus 3. Die Idee ist, dass man bei dem Band,
was nur einseitig unendlich ist,
das teilt man jetzt quasi in Spuren ein
Auf der oberen Spur sind die,
die rechten Felder bei dem Ballzeitlichen endlichen Band und auf der unteren Spur
sind die linken Felder und im Zustand merke ich mir jetzt immer,
arbeite ich oben oder unten.
Das heißt, mein Zustand ist sowas wie,
wenn ich vorher beispielsweise hier war und im Zustand Z,
dann bin ich jetzt hier und im Zustand Z oben oder sowas.
Wenn ich hier war und im Zustand Z,
dann bin ich halt bei dem Feld und im Zustand unten,
also Z unten oder sowas
Und dann muss man halt darauf achten,
also wenn die jetzt hier irgendwer arbeitet, nehmen wir mal an,
die ist hier in Z und wandert jetzt nach hier,
nach da, nach da, nach da, nach da.
So, dann würde diese Touring-Maschine halt von hier nach da wandern,
nach da wandern. Und jetzt wandert sie wieder hierhin,
ändert in dem Zustand aber,
dass sie jetzt nicht mehr oben arbeitet, sondern unten.
Und dann macht sie das da, da, da.
Und dann kann sie das auch machen. Und das Problem ist,
dass man das hier, also so dieses Übereinanderstehen,
das lässt sich nicht so gut ausdrücken, mathematisch,
deswegen arbeitet man da einfach mit Tubeln.
Also wenn hier stehen ja irgendwie Bandsymbole aus Gamma
drauf und hier stehen eben Bandsymbole aus
Dem Kreuzprodukt Gamma-Kreuz Gamma drauf und das erste Element in dem Tupel
ist eben die obere Spur und das zweite Element im Trupel ist die untere Spur.
Und dann hat man das nachgebaut. Ja,
das lässt sich deswegen so schön verallgemeinern,
weil wenn man gleich eine Turing-Maschine einführt,
die mehrere von diesen Bändern hat,
dann fühlt man sich hier eben einfach mehrere Spuren ein.
Das auch. Das ist da die Idee. Die anderen Ideen waren auch gut,
aber das hier geht ein bisschen schneller,
weil das ohne, weil das ohne durch die Gegend schieben
des Bandes ist
Ich muss halt nur darauf achten, was ich in die Zustände,
also wo ich in dem Zustand bin,
ob ich oben oder unten bin.
Und dann kann ich damit arbeiten. Also da die Idee,
das Band von A, hat er null das erste,
zweites und so weiter fällt.
Und das Band von B hat ja nulltes Feld,
ein erstes und minus erstes, ein zweites und minus zweites und so weiter.
Und dann kam sich A eben auf dem Entenfeld merken,
was auf dem Enten und den Minusenden fällt von B steht.
Und dann teilen wir dieses Bandalphabet von A,
das ist dann eben dieses Kreuzprodukt,
damit ich mir eben immer merke,
was ist im Feldenden und im Feld minus
Und dann sagt man ihm, dass man das Band
in Spuren eingeteilt hat, weil von der visuellen Vorstellung,
ja, hat man das eben in Spuren eingeteilt.
Genau. Und das, was man fieserweise natürlich gemacht hat,
ist, dass man das Bandalphabet komplett geändert hat.
Sowas kann man auch benutzen, wenn man nachher irgendwie Dinge komprimieren will.
Also wenn man mit weniger Schritten da auskommen will,
bei irgendeiner Rechnung, dann kann man halt sowas machen wie das,
was eine Touring-Maschine auf drei Feldern stehen hat.
Da schreibe ich mir bei einer neuen Touring-Maschine ein Einfeld.
Und dann kodiere ich mir in die Zustände den ganzen Kram
rein, der bei drei Symbolen so passieren kann.
Und dann brauche ich nachher immer nur noch einen Schritt dafür,
was bei der anderen Touring-Maschine drei Schritte sind
Lineares Speed-Up kommen wir nachher noch zu. Ja, nächstes Mal. So,
und dann merkt sich, ah, im Zustand,
ob B, gerade im positiven oder negativen Bereich ist,
habe ich eben mit oben und unten gemacht,
hier habe ich es irgendwie mit positiv und negativ gemacht.
Und da braucht man noch so einen extra Zustand,
mit dem man sich eben merkt,
oh, ich bin gerade bei diesem,
was ich da mit null Sternen gemacht habe,
also genau auf dem Nuller fällt,
dafür braucht man nochmal einen extra Zustand,
weil das ja weder positiv noch negativ ist und bei dem macht man dann immer den Switch,
dass man entweder zu P oder N wechselt,
je nachdem,
was da gerade passiert
Also A arbeitet wie B und ändert eben bei diesem Tupel XY immer nur das Element,
was eben durch P oder N im Zustand angegeben ist.
Also wenn ich in so einem Zustand ZP bin,
dann ändere ich bei diesem Tupel immer nur das X.
Und wenn ich in so einem Zustand ZN bin,
dann eben nur das Y. Und bei dem Nullfeld muss man ihm aufpassen.
Dann kann man,
also das ist die Idee für so eine beidseitig unendliche,
dann gibt es noch so eine K-Band-Offline-Touring-Maschine, die hat halt K-Arbeitsbänder,
also nicht nur eins wie bisher,
und er hat den Eingabeband und ein Ausgabeband.
Ausgabeband braucht man meistens gar nicht,
man kann da irgendwie auch mit dem Arbeitsband einfach nur
arbeiten,
mit einem weiteren
Das Spannende bei der Touring-Maschine ist eben, wenn man so eine benutzt.
Ihr könnt einfach sagen, okay, ich habe ein Eingabeband,
da steht die Eingabe drauf und ich habe halt irgendwie mehrere Arbeitsbänder.
Was eben auch äquivalent ist, also wer sich jetzt hier an
dieser Unterscheidung damit eingabe und Ausgabeband und ich darf irgendwie,
bei dem einen habe ich nur einen Lesekopf,
bei dem anderen habe ich nur einen Schreibkopf und so.
Das ist alles relativ egal. Man kann auch einfach sagen,
okay, ich habe k-viele Arbeitsbänder. Auf einem steht am Anfang
die Eingabe und fertig ist. Das wäre auch äquivalent.
Und wenn man da eben sagen will, okay,
ich will da jetzt eine äquivalente DTM mit nur einem Band machen,
dann ist die Idee eben im Grunde genommen genau das Gleiche.
Nur, dass man mit mehr Spuren arbeitet
Also statt jetzt hier mit zwei Spuren habe ich dann irgendwie Gammakreuz,
Gammakreuz, Gammakreuz, Gamma, dann habe ich irgendwie vier Spuren nachgebaut.
Und dann ist das Problem aber, dass bei dieser Carband-Offline-TM
jedes von diesen Arbeitsbändern, die einen eigenen Leseschreibkopf hat.
Damit lässt sich eben sehr schön sowas sagen,
wie auf dem einem Eingabeband gehe ich von links nach rechts.
Währenddessen mache ich auf dem zweiten Eingabeband vielleicht gar nichts.
Wenn ich dann bei dem ersten ganz rechts angekommen bin,
dann lese ich das vielleicht wieder von rechts nach links und das zweite von links nach rechts oder so.
All sowas lässt sich damit machen. Wenn man das dann aber mit einer Einbandtouring-Maschine machen will,
dann muss man eben bei den einzelnen Spuren,
die man gemacht hat, immer markieren,
wo man gerade,
wo gerade der LSK für die jeweilige Spur ist und dann
eben über das Band immer ständig rüberwandern,
um halt den jeweiligen LSK zu finden und das Tubel
dann zu ändern
Das wird also von der Theorie her aufwendig, ein ganz schönes Rumgefrecke bei dem Beweis.
Von der Idee ist das eigentlich klar, dass das gehen muss.
Das ist die. Da nochmal die beiden Ergebnisse und was man jetzt eben machen kann,
ist, wenn man irgendwie gegebene Sprache und beschreiben sie meine Touring-Maschine,
die akzeptiert diese Sprache,
dann kann man eben immer eine von den Touring-Maschinen nehmen,
auf die man die dafür gerade geeignet ist.
Und meistens ist es eben nicht die Touring-Maschine mit dem einseitig und endlichen Bann,
sondern meistens ist es halt mit so einer Mehrband-Touring-Maschine am einfachsten,
deswegen nimmt man üblicherweise die.
Ja,
Fragen bis dahin
Was? Und umgekehrt, zu jeder DTMA mit einseitig und
endlichem Band gibt es eine äquivalente Touring-Maschine B mit beidseitig und
endlichem Band und zu jeder Touring-Maschine mit beidseitigem und endlichem Band
gibt es eine Touring-Maschine mit einseitig und endlichem Band.
Achso. Nein, nein, nein, nein. Du hattest mich,
bevor ich diesen ganzen langen Satz eben gesagt habe, unterbrechen können.
Umwegkehrt. Ja, ich mache das nach.
Ich korrigiere es. So, habt ihr Fragen bis dahin
Ja. Dann kommt jetzt die richtig schöne Variante, nicht die terministische Touring-Maschine. Nicht die Terminismus, wir wissen ja schon, nee, sag ich gleich. Nicht die terministische Touring-Maschine,
so ähnlich wie bei NFAs, auch,
wenn ich in so einem Pärchen-ZX irgendwie bin,
also beim DFA war es ja,
wenn ich im Zustand Z bin und ein Eingabesymbol lese,
dann gibt es einen eindeutigen Nachfolgezustand,
der hat mal beim NFA gesagt, ich weich das,
weich das auf, zum Zustand und Eingabesymbol kann ich mehrere Nachfolgezustände haben,
also Zustand Z, A kannte zu Z1a-Kante zu Z2,
dann kann ich,
wenn ich im Zustand Z bin und ein A lese,
zwei Dinge tun
Macht man hier auch, nur dass die,
weiß ich nicht, nur einen Nachfolgezustand habe,
sondern dass ich eben zu so einem Tupel aus Zustand und Bandsymbol
irgendwie mehrere Triebel aus Bandsymbol, Kopfbewegung und Zustandswechsel haben kann.
Und entweder mache ich das hier mit so einer Kantenrelation oder
eben mit so einer Überführungsfunktion. Und dann sagt man auch genauso,
wie wir es beim NFA auch gemacht haben,
nicht die terministische Turing-Maschine akzeptiert, so ein Eingabewort,
genau dann, wenn es mindestens eine Erfolgsrechnung gibt.
Also dass es auch irgendwelche anderen Rechnungen gibt,
ist uns egal, aber sobald es eine Erfolgsrechnung gibt bei
der NTM,
will ich akzeptieren
So, jetzt hatten wir ja schon,
bei DFA und NFA wissen wir, die sind gleich,
also von der Mächtigkeit her.
Da gab es die Potenzautomatenkonstruktion, da haben wir gesagt,
okay, das ist gleich. Beim PDA,
der war ja immer gleich nicht deterministisch eingeführt, dadurch zumindest erwähnt kurz,
dass der nicht deterministische PDA tatsächlich mehr kann als der deterministische Kellerautomat.
Wie meint ihr denn, dass das hier ist?
Meint ihr, dass die NTM mehr kann als die DTM
oder weniger kann? Nur so vom Gefühl.
Gleich. Wer sagt auch gleich
Entweder stehst du mit deiner Meinung alleine oder...
Wer meint, dass das verschieden ist? 1,
2, 3, oh, 3 zu 1. 4 zu 1.
Klare Mehrheit. Wir gucken gleich mal. Ein Beispiel für
eine nicht-deterministische Touring-Maschine. Gegeben so ein Graf und eine Zahl K.
Und jetzt die Frage, hat der Graf eine K-Clique?
Klicken, ich glaube, ihr habt das indiskrete Mathematik gehabt,
falls nicht, eine K-Clique sind halt K-Knoten einfach,
die alle paarweise miteinander verbunden sind
Also bei der, mit drei Klicke ist ein Dreieck,
das ist ein bisschen langweilig.
Eine Vierklicke sind vier Knoten und dann halt einmal so ein Viereck
und dann noch ein Kreuz dazwischen, dann sind alle miteinander verbunden.
Dann kommt bei der Fünfklicke, kommt ein Fünfter Knoten hinzu,
der mit allen Knoten verbunden ist und immer so weiter.
Das sind Klicken. Kann man in unterschiedlichen Kontexten gebrauchen.
Wir treten auch in unterschiedlichen Kontexten auf so und die Frage ist jetzt,
wie berechnet man das mit einer DTM und wie mit einer NTM?
Und man kann sich halt vorstellen,
wir haben jetzt so eine Mehrband-Touring-Maschine und als Eingabe
kriegen wir eben
die Zahl
Und dann eben eine Liste von Knoten und eine Liste von Kanten.
Ob man die Liste von Knoten wirklich braucht,
da kann man sich drüber streiten,
da wird wahrscheinlich auch die Zahl N einfach reichen,
damit man weiß, man hat N-Knoten,
aber wir machen das mal so.
Also ihr kriegt jetzt irgendwie die Zahl K vorne weg und dann kriegt ihr irgendwie V-1,
V-2, V-3 bis V-N und dann kommen irgendwie die Kanten.
Jetzt wisst ihr, das habt ihr alles.
Wie würdet ihr jetzt mit einer DTM überprüfen,
ob in dem Graphen eine K-Klicke existiert? Also ohne,
dass man das jetzt als Zustandsdiagramm machen möchte,
aber so einfach von der Idee her,
was müsste man
da tun
Oder auch in, ja,
oder in der imperativen Programmiersprache ist auch okay.
Würdet ihr das in der imperativen Programmiersprache lösen?
Keine Ahnung. Es muss ja nicht effizient sein.
Haben wir ein zweites Semesterinformatikstudenten,
das muss klappen
Wie würdet ihr denn, na, gibt es schon eine Meldung? Nee,
wie würdet ihr denn überprüfen,
wenn ich, ich wandle das Problem mal kurz um,
ich gebe euch also den Grafen G, eine Zahl K,
ihr habt den Grafen, ihr habt alle Kanten und so,
ihr habt diese Zahl K.
Und ich gebe euch jetzt fünf Knoten und sage, das ist eine Fünf-Clique.
Und ihr sollt überprüfen, ob das stimmt, was macht ihr denn jetzt? Genau,
also nehmen wir mal an, dass es als Addiazenz-Matrix gegeben,
die Kantenrelation, also Addiazenz-Matrix heißt,
ihr habt irgendwie so eine, wenn ihr enden Knoten habt,
dann habt ihr eine NMN-Matrix Und an der I-Jottenstelle steht genau dann der Eins,
wenn der Knoten VI mit dem Knoten VJ verbunden ist.
Das nennt die Azenzmatrix. Wenn ich euch jetzt fünf Knoten gebe,
dann macht ihr irgendwie fünf Matrix-Zugriffe und guckt jedes Mal,
steht da in der Eins, wenn er überall da einsteht,
seid ihr fertig.
So. So, und jetzt gebe ich euch die Clique aber
nicht mit. Und ihr dürft eine Brutforce-Geschichte machen.
Wie löst man das jetzt? Fünf und mehr.
Also du hast jetzt irgendwie einen Grafen mit tausend Knoten
und du sollst eine Fünf-Klicke finden
Ja. Okay. Jetzt findest du ja aber nur Kreise.
Ah ja, okay, ja, das kannst du machen, genau. Genau,
du könntest aber auch das mit dem Kreis weglassen und einfach
immer fünf Knoten auswählen und gucken, ob das eine Klicke ist.
Da geht genauso. Also im Grunde genommen, das,
was du als zweiten Schritt gemacht hast, du hast zweitens gesagt,
wenn ich so einen Kreis gefunden habe,
dann mache ich bla bla bla
Er hatte gesagt, man nimmt sich den ersten Knoten und
sucht einen Kreis. Wenn man einen Kreis gefunden hat,
dann guckt man für diese Knoten, die auf dem Kreis liegen,
ob die auch noch alle miteinander verbunden sind.
Und falls ja, habe ich eine Clique,
also dann habe ich vielleicht noch keinen Fünf-Klick, aber kann ja noch mal gucken,
ob es fünf Knoten sind, dann habe ich eine Fünf-Klicke.
Und wenn das nicht geklappt hat,
dann gehe ich zum zweiten Knoten, gucke,
ob ich von dem aus den Kreis finde und gucke wieder,
ob ich da irgendwie eine Clique dann habe.
Und dann meinte ich, man kann das mit dem Kreis
am Anfang weglassen, man nimmt sich einfach kafile Knoten,
guckt, ob die alle miteinander verbunden sind.
Wenn nicht,
nimmt man
keine andere Knoten
Also das typische Ding,
wenn ihr irgendwie einen Grafen mit zehn Knoten habt und ich frage,
gibt es da eine Drei-Klicke, dann guckt ihr bei den Knoten 1,
2, 3, ist das eine Drei-Klicke,
dann guckt ihr bei den Knoten 1, 2, 4,
1, 2, 5, 1, 2, 6,
danach die Knoten 1, 3, 4, 1,
3, 5 nennen und irgendwann halt die Knoten 2,
3, 4, 2, 3,
5 und so weiter, also einfach alle Timing durchgehen.
Genau, ich glaube, du kannst ein bisschen sparen,
aber du kannst nicht sonderlich viel sparen.
Also du sparst nicht so viel mit dem Kreis, wie du vielleicht gerade hoffst. So,
wenn man jetzt dann also meine etwas langsamere Idee nimmt,
mit dem wir testen, das alles durch,
dann brauche ich Jetzt gibt es auch sehr aus der Mathematik diese Geschichte mit diesen N über K-Zahlen,
dass ich irgendwie K, oh Gott,
ich kann N über K, K-Elementige Teilmengen in einer en-elementigen Menge finden.
Das war halt diese Geschichte irgendwie mit dem binomischen Dreieck und
so weiter, falls ihr das noch dunkel erinnert.
In Kurz sind ziemlich viele. Man müsste jetzt also N
über K viele Mengen durchgehen und für alle mal testen,
ist das eine Klicke oder nicht.
Das dauert ganz schön lange. Mit einer NTM geht das
viel, viel schneller. Wie kann man das mit einer
NTM machen? Ihr dürft jetzt also den Nicht-Determinismus so richtig
schön ausnutzen
Genau, Aussage, weil man kann die Möglichkeiten
quasi nicht terministisch raten und dann die eben testen.
Wenn du jetzt wirklich eine NTM hast, also dieses völlig stupide Modell,
wie machst du denn das da jetzt mit dem Raten?
Also die Aussage irgendwie, ich rate mir die Teilmenge,
stimmt natürlich, so, aber wie machst du das jetzt?
Wenn wir das jetzt wirklich implementieren,
auch wenn ich detailmistisch ineinander nehme,
aber wenn du es wirklich implementieren solltest,
wie sieht Algorithmus aus
Wie wählt man sich die Teilmenge? Wenn ihr,
ihr geht jetzt einmal über das Eingabeband rüber und guckt,
wie viele Knoten ihr habt. Nehmen wir mal an,
ihr habt Endknoten. Sagen wir mal, ja. N. Jetzt
geht ihr auf ein Arbeitsband und jetzt macht ihr nicht die terministisch die folgenden Übergänge,
dass ihr einfach immer sagt, Schab lesen,
null schreiben, ein nach rechts gehen oder Schab lesen,
einschreiben, ein nach rechts gehen.
Weil die nicht die terministische Touring-Maschine,
da seid ihr die Voraussetzungen, die gleichen,
nämlich im Zustand sein und Schab lesen
Schreibt, schreibe ich in eine Rechnung, die nicht die
terministische Türmaschine eine Null und in dem anderen schreibe ich eine Eins.
Und das wiederhole ich jetzt einfach N-Mahl. Dann bin ich danach in der Konfiguration da,
wo ich eben Null hatte,
bin ich jetzt in die Konfliktion 0-0 und 0-1. Da,
wo ich die Eins hatte,
bin ich in 1-0 und 1-1,
dann mache ich das nochmal und so weiter.
Da habe ich alle Zeichenketten von 0 hoch N bis 1
Hochende aufgebaut. Und die Interpretation ist dann,
wenn ich irgendwie eine Zeichenkette habe von N vielen Nullen und Einsen,
dann gucke ich, sind da K-1 dabei.
Und wenn ja, dann bedeutet die Eins an der Iden-Stelle eben,
dass der Knoten VI dabei sein soll.
Dann habe ich diese Teilmenge geraten
Da steht es gleich nochmal. Ich ermittle diese Anzahl der Knoten
und dann rate ich auf dem Arbeitsband nicht deterministisch immer null oder eins.
Und das wiederhole ich einfach in Mal. Und dann
habe ich halt die, jetzt habe ich auf dem Arbeitsband
alle Zahlen zwischen null hoch N und Eins hoch N aufgeschrieben.
Und in jeder von den Konfigurationen geht es jetzt nicht deterministisch weiter.
Und das Schöne ist halt,
für das hier brauche ich jetzt gerade
nur envile Schritte
Ich bin zwar irgendwie nicht deterministisch ganz schön weit verzweicht.
Ich bin irgendwie in zwei Hochend plus eins vielen Konfigurationen,
aber wenn mich nachher nur interessiert,
ob es eine Rechnung gibt, in der ich akzeptiere,
dann brauche ich dafür eben erstmal nur die Endschritte und um die Zahlenfolge
dazu raten und dann eben brauche ich nochmal so und so viele Schritte,
um deterministisch auszuprobieren, ob das wirklich eine Clique ist.
Die ide Zahl soll jetzt bedeuten, dass der ide Knoten
zur Clique gehört und jetzt überprüfe ich einfach deterministisch,
ob die nötigen Kanten zwischen den vermuteten Knoten vorhanden sind.
Seit ja, akzeptiere ich sonst nicht
Ein Punkt fehlt noch. Ich muss am Anfang auch noch gucken,
ob das wirklich k-fiele Knoten sind, die ich da geraten habe.
Also ob ich k-fiele Einsen in meiner geratenen Folge habe.
Und dann bin ich schon fertig. Es geht also viel,
viel, viel schneller als bei einer DTM.
Und jetzt kann man sich vielleicht überlegen, vielleicht geht das
nicht nur schneller, sondern vielleicht geht damit auch Sachen,
die mit der DTM nicht gehen.
Was meint ihr denn jetzt, wie das auf der nächste?
Ich habe ja die Frage eben schon gestellt,
aber was meint ihr denn, wie das jetzt auf der nächsten Folie weitergeht?
Kommt da jetzt eine Folie, auf der steht,
wir zeigen das NTM und DTM Äquivalent ist oder kommt da eine Folie,
auf der steht,
bam,
hier drittes Pumpinglämmer oder so ein Käse
. Ja, das ist ja klar.
Also er sagt,
es geht mehr
Hast du eine Idee, wie? Es wird ja hoffentlich
irgendwie anders gehen. Also wenn ich mir überlege, wie viel,
also ich war ja eben schon in zwei Hochend plus eins viel in Konfigurationen,
das hing ja auch noch von der Eingabe quasi ab.
Und ich darf ja nicht sowas machen wie im Potenzautomaten für jede Eingabe zu konstruieren.
Gibt mal Stimmungsbild, meldet euch mal alle.
Mal gucken, ob das funktioniert. Wer meint denn,
dass das nicht klappt? Also dass die unterschiedlich stark sind.
Eins, zwei, drei, vier. Wir haben ja
, dass die gleich stark sind. Ich weiß das,
dass nicht alle sind, die sich gerade gemeldet haben
Tatsächlich sind die gleich. Also die NTM kann nicht mehr,
sondern jede von ihr akzeptierte Sprache kann auch von der DTM akzeptiert werden. Da steht es richtig,
mit dem G. Also von DTM zur NTM ist wieder klar,
weil ich einfach sagen kann, naja,
wenn ich eine DTM habe, dann ist das auch eine NTM,
ich benutze diese Fähigkeit des Nicht-Determinismus gar nicht.
So, und jetzt die Frage,
wie komme ich jetzt von der NTM zu einer DTM? drauf zu kommen,
ist schwierig, wenn man die Konstruktion mal gesehen hat,
denkt man, ah ja, okay, was wird gemacht?
Die Idee ist, Ich bin ja am Anfang,
oder auch irgendwann zwischendurch, bin ich in irgendeiner Konfiguration C1 von der NTM.
So, da bin ich jetzt. Und jetzt kann ich halt gucken,
in welchem Zustand bin ich und welches Bandsymbol lese ich gerade.
Und jede dieser Konfigurationen, die da rauskommt, ist halt
eine Nachfolgekonfiguration von meiner Konfiguration C1. Und das Wichtige ist,
das können aber nur endlich viele sein, weil diese Kantenrelation,
die ist halt endlich, hängt ja auch schon damit zusammen,
dass endlich viele Zustände haben und nur endlich viele Symbole.
Das heißt, ich habe so eine Startkonfiguration Z1 und davon
habe ich irgendwie so und so viele Nachfolgekonfigurationen,
in dem Beispiel da irgendwie C11 bis
So, das kann man jetzt anfangen, sich als Baum vorzustellen.
C1 ist die Wurzel. In der nächsten Ebene kommen irgendwie die Kinder.
Und jetzt kann man sich halt jedes Kind nehmen,
jede Kindkonfiguration und darauf wieder gucken, wie viel Nachfolgekonfiguration gibt es davon.
Baut sich irgendwie so ein Baum auf. Die C1I haben wieder irgendwie Kinder,
C1, i1 müsste da eine stehen und C1,
iJ1 und dann irgendwie C1, 21 und so weiter.
Das wird die dritte Ebene im Baum. Beispiel,
wenn ihr die Touring-Maschine da oben habt, die hat hier
mit dem B, da die irgendwie nicht die Terminismus drin.
Also ich kann, wenn ich ein B lese,
dann schreibe ich das B,
je nach rechts und bleibe im Zustand seit null oder
ich habe die Möglichkeit,
in Zustand Z1
zu gehen
Und der Baum dazu sieht dann irgendwie,
wenn ich jetzt hier in der Konfiguration Z 0,
A, B, A, B starte,
dann ist das da drunter sozusagen dieser Konfigurationsbaum,
wenn ich ein A lese, habe ich keine Möglichkeit zu raten,
sondern es gibt nur eine eindeutige Nachfolgekonfiguration, nämlich,
dass ich in Z 0 bleibe,
das A stehen lasse und mit dem Leseschreibkopf nach rechts gehe.
Jetzt kommt irgendwie das B und jetzt habe ich halt die Möglichkeit,
entweder in Set 0 zu bleiben oder nach Z1 zu gehen.
Und ansonsten eben B zu schreiben, nach rechts zu gehen,
mit ihm diese Schreibkopf. Das verzweigt sich hier irgendwie auf
die zwei. Wenn ich nach Z1 gegangen bin,
dann soll ich jetzt in Set 1 sein und ein A lesen,
das kann ich aber nicht machen,
das heißt,
der Knoten hat keine Kinder
Wenn ich in Set Null bin und das A lese,
dann habe ich wieder ein Kind,
so wie vorher auch, das ist da,
1900 und B habe ich wieder zwei Kinder.
Das ist so ein Baum, der sogar,
da ist er sogar fertig, noch mehr Knoten gibt es da nicht.
Genau, und jetzt könnte man gucken, gibt es da irgendwo eine Rechnung drin?
Gibt es da irgendwo eine Konfiguration drin mit einem Endzustand?
Die gibt es hier schon. Und dann würde man also akzeptieren.
Anderes Beispiel, das mit dem Null und Eins raten,
das ist das, was wir eben gebraucht haben bei dieser
Clickle-Geschichte.
Ich fange an im Zustand Set Null
Ja, auf dem Band steht irgendwie ein Schaber, so nix.
Und jetzt kann ich halt dafür eine Null schreiben und nach rechts
gehen oder ich kann da einschreiben und nach rechts gehen.
Jetzt bin ich halt einmal in der Konfiguration,
dass ich eine Null geschrieben habe, einmal in der Konfiguration,
dass ich eine Eins geschrieben habe.
Und danach kann ich dann hier auch wieder eine Null oder
eine Eins, wieder eine Null oder eine Eins.
Und dann sieht der Konfigurationsbaum ihm so aus,
dass ich fange an mit Z0 und auf dem Band steht nichts,
schreibe ich entweder eine Null oder eine Eins und bin dann im Zustand Z1 und dann wieder.
Jetzt bin ich im Zustand Z1 und kann wieder irgendwie auswählen,
Null oder Eins zu schreiben. Das heißt,
ich habe dann hier 0-0 oder 0-1,
hier habe ich 1-0 oder 1
-1 und auf der dritten Ebene mache ich das nochmal
Und wenn das jetzt, wenn hier jetzt irgendwo so eine,
nehmen wir mal an, diese Kanten hier,
dieses Null-R und 1R hier von Z0 nach Z1,
wenn das an Z0 dran wäre,
dann könnte ich halt beliebig viele Nullen und Einsen schreiben,
dann wäre der Baum unendlich.
Kommt auch gerne mal vor, dass ich dann irgendwie so
einen Strang habe, der unendlich lang ist.
Wenn ihr das seht, wie könnte eine DTM jetzt
eine NTM simulieren?
Fällt es jetzt einmal ein
Also das wird irgendwie so ein Konfigurationsbaum von der NTM.
Kann man das irgendwie ausnutzen, um eine DTM zu bauen,
die die gleiche Sprache nachher akzeptiert?
Wenn du dir aber für jeden Fahrten eine DTM baust,
dann werden das unter Umständen
unendlich viele
Nee, also das ist,
dass es nicht mehr implementierbar wird oder so,
das meine ich nicht, sondern du meintest ja gerade,
du willst jetzt irgendwie für jeden dieser Pfade eine DTM haben.
Und jetzt wäre es ja möglich, dass der Baum,
auch wenn der immer nur endlich verzweigt, das heißt,
jeder Knoten hat endlich viele Kinder, kann es trotzdem sein,
dass es so einen Pfad gibt, der unendlich lang ist,
ja,
und vielleicht jeder Knoten noch
ein Kind hat
Dann hast du halt unendlich viele Fade neben Baum.
Gehst gleich die Abzweigung nach rechts, gehst zwei Schritte nach unten,
dann die Abzweigung nach rechts, gehst drei Schritte nach unten,
dann die Abzeuge nach rechts und so weiter.
Das sind endlich viele Pfade und dann bräuchtest du in dem,
was du eben gesagt hast, irgendwie unendlich viele Touring-Maschinen.
Brauchst du aber nicht. Ihr könnt ja irgendwie diesen Baum,
den haben wir doch gerade aufgebaut, so, ne?
Wir haben uns die Touring-Maschine angeguckt und haben den Baum aufgebaut.
Naja, das kann eine DTM ja vielleicht auch irgendwie machen.
Und dann haben wir gesagt, jetzt müssen wir gucken,
ob da irgendwo eine Endkonfiration auftritt.
Und wenn, dann akzeptieren wir. Kann die DTM auch
irgendwie machen. Also sich Konfigurationen angucken und gucken,
ob da ein Endzustand drin ist, kann sie auch machen.
Wenn man das alles zusammenbaut, Jetzt hat er eine Idee.
Wie nutzt ihr das aus? Also die Idee ist,
ihr kodiert diese nicht-deterministische Touring-Maschine. Ihr kodiert die in die DTM
rein. Das heißt, ihr habt quasi diese NTM,
die ist jetzt irgendwo im Speicher von der DTM und dann
fängt die DTM an und schreibt sich die Konfiguration hier.
Also die erste, die schreibe ich mir auf ein Arbeitsband.
Jetzt nehme ich mir die und schreibe Alle Nachfolger,
also ich berechne die Nachfolgekonfiguration,
weil ich habe ja diese NTM irgendwo im Speicher,
das heißt, ich kann nachgucken, was gibt es für Nachfolgekonfigurationen,
wenn ich in der Konfiguration bin, die Nachfolgekonfiguration schreibe ich mir aufs Band.
Das heißt, das Ding hier ist weg, das wird gelöscht,
die erste Ebene und die zweite Ebene steht jetzt auf dem Band.
Jetzt gehe ich wieder ganz nach links,
bin in dieser Konfiguration 0Z1, also gucke mir die Konfiguration 0Z1 an,
und schreibe mir alle deren Nachfolgekonfiguration aus Band.
Dafür muss ich wahrscheinlich auf meinem Arbeitsband irgendwie Platz machen,
das heißt, ich muss irgendwie das hier,
das 1Z1 muss ich nach rechts schieben,
und dann habe ich Platz,
das hier hin zu schreiben
Dann fasse ich die an und schreibe deren Nachfolger aufs Band und immer so weiter.
Dann schreibe ich mir nach und nach sozusagen alle Ebenen des
Baumes auf mein Arbeitsband. Und wenn da irgendwann mal,
wenn da irgendwann eine Endkonfrontation dabei ist,
sprich eine Konfiguration, wo ein Endzustand drin ist,
dann akzeptiere ich und sonst nicht.
Es ist eine Breitensuche in dem Baum.
Die Breiten- und Tiefensuche gemacht in diskrete Mathematik. Ja,
ne? Das ist eine Breitensuche einfach in dem Baum.
Nichts anderes ist das. Also ihr baut den Konfigurationsbaum Ebene für Ebene
auf und macht quasi währenddessen eine Breitensuche in dem Baum.
Es ist wichtig, dass es eine Breitensuche ist und
keine Tiefensuche.
Ja, bei der Tiefensuche würdet ihr jetzt irgendwie hier so
einen Pfad anfassen und den ganz nach unten gehen.
Warum ist das nicht gut? Bitte? Nee, das wäre ernst.
Genau das nicht. Man wird nicht zu schnell fertig,
sondern man wird unter mich dann gar nicht fertig.
Also das Problem bei der Tiefensuche ist,
es ist ja vorstellbar, dass hier ein Pfad existiert,
auf dem gar nicht akzeptiert wird.
Also als Beispiel, wie gesagt,
wenn hier jetzt so eine Schleife dran ist,
Und dann habe ich halt irgendwie Z-0, 0Z-0,
00-0-Z-0, 00-0-Z-0-0,
40-0-0-0-0-0
-0-15-0 und so weiter.
Und da tritt irgendwie nie ein Endzustand auf. So,
und den Pfad, wenn ich den in die Tiefe gehe,
kann ich halt ewig rechnen, so.
Und vielleicht ist aber es jederzeit möglich zu sagen, oh,
ich gehe einen Schritt nach Recht, schreibe eine Eins und akzeptiere.
Oder irgendwie sowas. Und auf den komme ich dann nie,
während ich eine Breitensuche mache, dann muss ich,
wenn es eine Endkonfiguration gibt, die irgendwann auch mal erfinden.
Wenn es in der NTM eine K-Schrittige Rechnung gibt,
in der sie akzeptiert,
dann würde ich auf der Kartenebene dieses Baumes
eine Konfiguration mit dem Endzustand finden
Deswegen Breitensuche. Also das war die Idee und die Hauptidee ist jetzt,
ich mache eine Breitensuche in diesem Baum der Konfiguration.
So, Ausführung nur grob angetatscht hier,
die DTM kriegt ein weites Arbeitsband, notiert sich da,
wenn sie das eingebewohnt, wie erhält die Startkonfiguration der NTM.
Also wenn die DTM das Angebot weh kriegt und
sie soll jetzt ja Äquivalent zu der NTM sein.
Man muss jetzt also irgendwie nachgucken,
akzeptiert die NTM dieses Wort weh und falls ja,
will ich auch akzeptieren und falls nein,
will ich nicht akzeptieren
So, und das, was sie jetzt macht,
wenn auf dem Arbeitsband die Konfiguration C1 bis CR sind,
am Anfang eben nur diese Konfiguration,
dann gehe ich die jetzt von links nach rechts durch.
Und jede wird durch ihre Nachfolgekonfiguration ersetzt. Und dabei ist es vermutlich mehrmals nötig,
die aktuelle Inschrift auf dem Arbeitsband nach rechts zu verschieben.
Weil wenn ich irgendwie so eine Konfiguration Z1 habe und direkt
dahinter kommt die Konfiguration Z2, Z3 und so weiter,
und ich will Z1 durch zehn Konfigurationen ersetzen,
die möglichen Nachfolgekonfigurationen von C1,
dann muss ich halt irgendwie Platz machen.
Das kriege ich aber hin
Das Wichtige ist eben dieses, da ich die jetzt von links
nach rechts durcharbeite und zuerst alle Nachvollkonfliktionen von C1 hin schreibe,
dann alle Nachfolgekonfliktionen von C2 und so weiter,
bevor ich zu den Nachfolgekonfliktionen von C1 komme,
dadurch habe ich eine Breitensuche.
Und wenn dabei irgendwann mal eine Konfliktion erzeugt wird,
die in Endzustand enthält, akzeptiert die DTM.
Und damit akzeptiert sie genau dann, wenn die NTM auch akzeptiert.
Und wenn die NTM unter Umständen beim Eingabewort nie anhält,
kann es auch geben, dann tut die DTM das halt
auch nicht, aber das macht nichts.
Beide würden dann das Wort halt nicht akzeptieren,
weil beide nie in einen Endzustand gelangen
Beispiel dafür, eingebewortetes BBB und ihr habt eine Kante von Z0 nach Z1,
die das B liest durch B ersetzt und mit dem Leseschreibkopf
einen Schritt nach rechts geht und ihr habt eine Kante aus dem Zustand wieder zurück,
die das B liest,
das B schreibt und mit dem Leseschreibkopf einen Schritt nach links geht,
dann würdet ihr die ganze Zeit über diesen beiden Bs irgendwie hin und her wechseln.
Genau, und das würden sie dann eben beide machen.
So, wichtig ist, dass mit den Nachfolgekonfigurationen,
sonst hat man eine Tiefensuche statt einer Breitensuche
und würde dann unter Umständen so eine unendlich lange Rechnung folgen
Ja, damit sind die beiden Äquivalent NTM und DTM.
Problem, die DTM braucht richtig viel länger. Also wenn die NTM,
die NTM akzeptiert, sobald es in diesem Konfirationsbaum irgendwie eine
Rechnung gibt, auf dem sie akzeptiert. Und nachher,
wenn wir in der Komplexitätstheorie sagen, okay,
sie hat dann eben nur so viele Schritte gebraucht,
wie auf einem dieser Pfade, auf so einem Erfolgsfahrt sie Schritte gemacht hat,
weil sie sich quasi den richtigen geraten hat.
Und die DTM hat aber keine andere Möglichkeit,
jetzt diesen Baum komplett aufzumalen und braucht dann eben irgendwie exponentiell
viel mehr Schritte.
Also es geht,
aber es ist teuer
Fragen. Jetzt hatten wir Mehrband, Tour,
also wir hatten die beidseite und endlichen Tourenmaschinen beidseite im endlichen Band,
wir hatten eine Mehrband-Touring-Maschine und wir hatten eine NTM.
Und das, was wir jetzt noch machen wollen, ist,
wir wollen, so ähnlich wie wir bei DFAs gesagt haben,
die Sprachfamilie ist Reck und bei Pedias haben wir gesagt,
die Sprachfamilie sind die kontextfreien Sprachen, wollen wir jetzt gucken,
was eigentlich diese Sprachfamilie von den DTMs und NTMs.
Und da gibt es so zwei Begriffe,
rekursiv aufzählbar und entscheidbar
Eine Menge heißt rekursiv aufzählbar, genau dann,
wenn sie entweder leer ist oder es so eine Funktion gibt,
die von den natürlichen Zahlen auf Sigmar Stern abbildet, der A,
das in ihrem Bildbereich eben gerade die Menge M ist und
ihr Bild gerade die Menge M ist und die Funktion soll eben berechenbar sein.
Und diese Familien nennen wir R eh und was man eben zeigen kann,
ist, wenn so eine Menge aufzählbar ist,
dann gibt es eine Touring-Maschine, die diese Sprache M akzeptiert.
Das heißt, sie rekursiv aufzählbaren Funktionen sind genau die,
die von den Touring-Maschinen akzeptiert werden,
die von Touringmaschinen akzeptierten Sprachen bilden diese Sprachfamilie R eh
Die Definition hier oben mit dem total berechenbaren Geh und so.
Man kann das so machen, man macht das heutzutage meistens so,
dass man sich die Menge RE direkt so einführt,
dass man sagt, okay, Sprachen,
die von Touring-Maschinen akzeptiert werden, das ist eben die Sprachfamilie RE.
Wer will, kann sich die Beweise, ich glaube,
im Skript stehen die auch, im Skript stehen die auch,
kann sich da mal angucken,
wir arbeiten eigentlich mit der alternativen Definition jetzt einfach.
Also die von Touring-Maschinen akzeptierten Sprachen wilden diese Familie RE.
Nur mit dem, wenn man das so definiert,
Und dann zeigt, dass es eine K-Band-Offline-Touring-Maschine gibt,
die jedes Wort der Menge genau einmal auf ihr Ausgabeband schreibt.
Da kommt dieser Begriff aufzählbar her, weil sie quasi alle Wörter nacheinander hinschreibt, deswegen aufziehbar.
Kann man auch relativ schnell machen, wenn die Funktion hier berechenbar ist, diese Funktion geh. Dann heißt es,
es gibt eine Touring-Maschine,
der, wenn ich der die Zahl 1 vorlege,
die Zahl 2, die Zahl 3,
die Zahl 4 und so weiter,
dann kann die immer das Bild davon ausrechnen,
also geh von 1G von 2G von 3G von 4. Und dabei müssen ja immer die Elemente von M irgendwie rauskommen.
Und die tut nichts anderes hier. Also die schreibt sich
einfach immer Zahlen in 1, 2, 3,
4 und dann guckt sie immer,
was kommt da raus
Und das schreibt sie dann auf die Ausgabeband.
Und die DTM hier, die das dann akzeptieren soll,
die guckt dann quasi im Eifach auf dem Ausgabeband,
ob da irgendwann mal das Wort draufsteht,
was sie als Eingabe kriegt und dann würde sie akzeptieren.
Das ist also irgendwie alles das Gleiche, aber das,
da reicht, wie ihr das wisst. So,
und jetzt ist es ja aber so,
wir hatten ja eben die Diskussion mit, naja,
es kann so unendlich lange Pfade geben,
wo sie irgendwie nie anhält und sowas.
Also bei Wörtern, die sie nicht akzeptiert,
muss sie ja nicht anhalten.
Deswegen hat man sich noch so eine andere Familie eingeführt,
nämlich die Menge der Entscheidbaren Sprachen
Und eine Menge heißt entscheidbar, genau dann, wenn die
charakteristische Funktion berechenbar ist. Wenn die charakteristische Funktion berechenbar ist,
bedeutet das, es gibt eine Touring-Maschine,
der kann nicht jetzt so ein Wort aus M vorlesen,
so ein Wort aus Sigmar Stern vorlegen.
Jetzt rechnet die irgendwie rum und kommt entweder zu der Null oder der Eins,
also irgendwie in einen Endzustand und dann steht da entweder Null oder Eins auf dem Band.
Und wenn dann der Eins steht, dann weiß ich eben,
das vorgelegte Wort Warn-M drin und wenn da eine Null steht,
dann weiß ich, das eingebewortet war nicht in M drin.
Jetzt kann ich mir eine Touring-Maschine drum herum bauen,
die eben genau dann in den Endzustand geht,
wenn da eine Eins jetzt auf dem Band steht
Das heißt, die Menge der entscheidbaren Sprachen, das werden
genau die Touring-Maschinen sein, die bei jeder Eingabe anhalten.
Also eine Menge ist genau dann entscheidbar,
wenn es eine Touring-Maschine gibt, mit LA gleich M,
also wieder eine Touring-Maschine,
die diese Menge M akzeptiert und derart das A auf jeder Eingabe anhält.
Das ist so das, was man typischerweise,
wenn man Algorithmus implementiert haben möchte, sich immer anhalte.
Auch bei Eingaben, die vielleicht falsch sind.
Kann man auch als alternative Definition benutzen
So, da nochmal für den Unterschied. In Scheidbarkeit,
es gibt eine Touring-Maschine A,
die diese Menge M akzeptiert und A hält auf jeder Eingabe.
Aufzählbarkeit, es gibt eine Touring-Maschine, die die Sprache akzeptiert.
Gut. Insbesondere muss die Touring-Maschine
Klar, entscheidend waren aufzählbar. Zwei Sprachfamilien,
die eine Sprachfamilie, das mit dem Aufzählbar so definiert,
wie wir das auch bei DFAs und PDAs und so gemacht haben,
dass wir einfach gesagt haben, wir nehmen das Modell,
alle Sprachen, die wir akzeptieren,
packen wir eine Sprachfamilie.
Dann haben wir die Sprachfamilie, Aufzählbarkeit.
Bei Entscheidbarkeit haben wir gesagt, so ähnlich,
aber wir wollen immer
anhalten können
Und wenn ihr an sowas denkt, wie Additionsfunktionen,
F von XY ist X plus Y,
da hatten wir ja gesagt, das kann man auch als Sprachakzeptanz machen,
indem man die Tubel XYZ akzeptiert,
bei denen Z eben gerade die Summe ist und die Tubel,
bei denen das nicht ist, die akzeptiert man eben nicht,
dass ich da anhalten kann immer, kann man sich schnell überlegen,
ich rechne das aus und entweder so, ne,
ich rechne aus, was die Summe von XY ist,
vergleicht das mit dem Z und entweder ist das gleich,
dann akzeptiere ich oder es ist nicht gleich, dann akzeptiere ich nicht,
aber da kann ich auf jeden Fall stehen bleiben.
Bei anderen Beispielen ist nicht so ganz klar,
dass man was konstruieren kann,
wo ich wirklich immer stehen bleibe
Also wo ich die, insbesondere die 9-Instanzen wirklich immer finde.
Bei Jahrinstanzen, also wenn ich ein Wort vorlege,
das wirklich in der Sprache drin ist,
da wird die Tour die Maschine zwangsläufig irgendwann anhalten,
weil das Wort ja in der Sprache drin ist.
Das heißt, ich muss irgendwann in den Endzustand kommen,
da kann ich auch anhalten. Bei Worten,
die nicht drin sind, muss ich das nicht zwingend machen.
Oder kann ich es vielleicht gar nicht so konstruieren.
So, das war zu entscheidbar und aufzählbar.
Jetzt nochmal ein paar Fragen. Sind alle regulären Sprachen entscheidbar
Da gäbe es ja jetzt die Möglichkeit, entweder ja,
dann sind alle regulären Sprachen entscheidbar. Oder nein,
dann gibt es reguläre Sprachen, die nicht entscheidbar sind.
Oder es könnte ja auch sein, deswegen keine Timing-Beziehung.
Es könnte ja sein, dass, also entweder sind die
da alle drin oder die sind da nicht alle drin,
dann gibt es noch welche, die außen sind.
Oder es könnte ja auch so was sein,
dass es mit drittens gemeint ist, gerade ein bisschen durchgestellt.
Es könnte ja sein, dass es reguläre Sprachen gibt,
die entscheidbar sind, dass es reguläre Sprachen gibt,
die nicht entscheidbar sind, dass es entscheidbare Mengen gibt,
die regulär sind und dass es entscheidbare Mengen gibt,
die nicht regulär sind.
Das eine eigentlich in dem anderen
Ja. 1, 2, 3, 4,
5, 6, 7, 8, 19,
10, 1, 2, 3, 4, 5,
10. Haben so wenigen Klicker genommen oder sind so wenige Leute
da?
Das sind ja
nur so
Ziemlich gut gleich verteilt. Wo verstecken sich denn
die 41 Prozent, die ja gesagt haben?
Das ist nämlich richtig. Okay, das sieht nicht aus
wie 41 Prozent der gerade Anwesenden.
Warum meint ihr denn,
dass das entscheidbar ist
Genau, also jede reguläre Sprache wird durch einen endlichen Automaten akzeptiert.
Jetzt nehme ich mir halt einen vollständigen DFA und dann macht die Touring-Maschine
nichts anderes als bei Vorlage eines Wortes W zu gucken,
ob dieser vollständige DFA in Endzustand gelangt oder nicht.
Also beim vollständigen DFA,
da komme ich ja auf jeden Fall in deinen Endzustand,
vorstehen die DFA,
kann ich das Wort auf jeden Fall zu Ende lesen und
entweder bin ich da in der Endzustand oder nicht
Wenn das Wort halt die Länge, was weiß ich,
tausend hat, dann brauche ich halt tausend Schritte in dem DFA,
aber das sind halt endlich viele.
Und entweder akzeptiere ich dann oder nicht und dann macht die Tourmaschine das Gleiche.
Also alle regulären Sprachen sind entscheidbar. Wichtig ist dafür,
wenn ich dem DFA ein Wort vorlege, das er nicht akzeptiert,
dann kann er das eben trotzdem zu Ende lesen,
aber es dann eben nicht in einem Endzustand.
Und die Touring-Maschine guckt dann einfach nur,
ist an einem Endzustand oder nicht. Wenn ja,
dann akzeptiert sie, wenn nein, dann lehnt sie ab,
aber hält eben trotzdem an
Also in einem Fall schreibt sie eine Eins aufs Band und hört auf und
im anderen Fall schreibt sie eine Null aufs Band und hört auf.
Geht also beides. Also bleibt bei beiden stehen. Die kontextfreien Sprachen,
da habe ich ja jetzt ein PDA und durch den Keller
habe ich ja jetzt dann irgendwie unendlich viele Konfigurationen.
Also bei dem DFA, da konnte ich ja wie gesagt
nur tausend Schritte machen. Beim PDA, da kann ich
schon ordentlich mehr machen
Musik Ja, nein, keine. Auch da ist ja richtig,
weil ich habe zwar viel mehr Möglichkeiten,
auch mit dem Speicher was zu machen, aber...
Oh, jetzt muss ich nachdenken. Ja, genau.
Ich muss ja trotzdem auf jeden Fall immer irgendwas machen,
also auch bei dem nicht-diterministischen Modell.
Da komme ich
Oh, das ist aber fies.
Die Frage ist ja viel schlimmer,
als ich
gestern gedacht habe
Ja, mein Problem ist gerade, ich kann ja
beim PDA so Kanten machen, wie... Ah ja,
warte, das ist das Ding, genau.
Ich kann es mal beim PDA so eine Kante machen,
Lambda XX, also Lambda vom Eingabeband lesen,
X vom Keller lesen und X auch wieder auf den Keller schreiben.
Dadurch kriege ich nämlich unendlich viele Konfigurationen hin.
Also dadurch kriege ich eine unendlich lange Rechnung hin beim PDA.
Aber da tut sich ja nichts. Also so eine Kante
könnte ich auch wegschmeißen. Es sei denn,
ich habe da einen Zustandswechsel drin oder so.
Also im Endeffekt läuft es darauf hinaus,
ich kann den PDA auch komplett simulieren.
Das, was du eben gesagt hast.
Und entweder komme ich dann in den Endzustand oder nicht,
beziehungsweise entweder ist der Keller leer oder nicht
Also das kann ich da auch so machen. Und die Pfade,
in denen sie unter Umständen unendlich lang rechnet, die muss ich vorher tatsächlich irgendwie rausfischen.
Oh, das ist echt schwieriger, als ich dachte.
Ja, das ist echt schwieriger, als ich dachte.
Weil ihr könntet sowas machen wie im Z0,
eine Kante machen, nichts vom Eingabeband lesen,
X vom Keller lesen, X vom Keller,
X auf dem Keller schreiben und den Zustand Z1 wechseln.
Und bei Z1 sagt ihr jetzt, okay,
nix vom Eingabeband lesen, X wieder auf dem Keller und den Zustand Z0.
Und das könnt ihr immer von Z0 zu Z1 wechseln.
Und wenn ihr das noch so ein bisschen,
das könnt ihr ja auch irgendwie ein bisschen aufpumpen.
Irgendwie, ihr geht von da, nach da,
ersetzt das X durch den Y, von da geht ihr nach da,
setzt das Y durch den Z, von da geht ihr wieder da,
wo ihr vorher wart.
Da setzt das Z durch den X. Da habt ihr so
einen Kreis, in dem eigentlich nichts passiert,
aber das muss man erst mal feststellen, dass da nichts passiert.
Also es ist gar nicht so einfach zu zeigen,
dass das entscheidbar ist. Das ist aufzählbar,
es ist sehr viel einfacher, weil man da sagen kann,
ich simuliere einfach den PDA und bin fertig.
Aber dass es entscheidbar ist, ist tatsächlich ein bisschen tricky.
Da hilft nachher, dass es ein Entscheidungsverfahren gibt für das
Wortproblem in kontextfreien Grammatiken.
Damit sieht man das dann sofort
Aber bei PDAs ist das gar nicht so einfach,
fällt mir gerade auf. Also das zu entscheiden. Aufzählen,
wie gesagt, ist einfach, weil ihr dann einfach
den PDA komplett simulieren könnt mit der Touring-Maschine.
Ein Arbeitsband nehmt ihr, um den Keller zu simulieren.
Das Eingeband lasst ihr so. Und dann macht ihr einfach
auf der Touring-Maschine genau das, was ihr beim PDA macht.
Und wenn der PDA irgendwann mal akzeptiert, dann akzeptiert er auch.
Und wenn er nicht akzeptiert, akzeptiert die halt nicht.
Dann habt ihr gezeigt, dass die Sprache aufzählbar ist.
Aber für entscheidbar, wie gesagt,
müsst ihr solche Schleifen und so erstmal rausfischen.
Sind alle aufzählbaren Sprachen entscheidbar
Das ist einfacher
Ich weiß gar nicht so genau,
was ich mir gestern Nacht gedacht habe.
Also ja, sehr schön, also die Mehrheit hat recht.
Aber erstens könnt ihr das eigentlich noch gar nicht wissen,
also ihr könnt gut raten, das ist auch schön.
Oder halt gut, gut vermuten, super.
Alle entscheidbaren Sprachen sind aufzählbar,
das stimmt auf jeden Fall
Weil ich bei entscheidbar ja mehr verlange. Ich sage aber entscheidbar ja sozusagen,
die Sprache soll akzeptiert werden, so wie bei Aufzählbahnen auch.
Und zusätzlich will ich noch überall anhalten. Das heißt,
wenn eine Sprache entscheidbar ist, ist sie auch aufzählbar.
Aber andersrum, ob eine aufzählbare Sprache auch entscheidbar ist,
könnte sein oder auch nicht.
Tatsächlich ist es so, dass da eine echte Teilmengenbeziehung besteht.
Also dass es nicht entscheidbare Sprachen gibt, die aber aufzählbar sind.
Das heißt, die Antwort hier darauf ist wirklich nein.
Warum genau zeigen wir nächstes Mal noch? Also die eine Richtung ist einfach,
alle entscheidbaren Sprachen sind auch aufzählbar,
das kann man schnell zeigen und dann zu zeigen,
dass es eine aufzählbare Sprache gibt,
die nicht entscheidbar ist,
ist relativ anspruchsvoll
Ja, aber das macht nichts. Nee, nee,
warte, stopp, außer eine aufzählbare, also wenn eine Sprache aufzählbar ist,
dann sage ich zwar, die Touri-Maschine muss nicht anhalten.
Das bedeutet aber nicht, dass ich nicht eine konstruieren kann,
die auch anhält. Ich sage ja nur eine Sprache,
ist dann aufzählbar, wenn du es eine Touri-Maschine gibt,
die die Sprache akzeptiert.
Das ist okay. Da schließt aber nicht aus,
dass ich eine Touring-Maschine konstruieren kann, die eben dann doch,
die die gleiche Sprache akzeptiert und eben doch bei
jeder Sprache anhält
Das schließt es ja erstmal nicht aus. Das haben Stichwort Halteprobleme
in dem Fall für. Bei dem Halteproblem kann man zeigen nachher,
dass das nicht entscheidbar ist, aber aufzählbar. So,
das könnt ihr lösen, wenn eine Sprache entscheidbar ist,
ist dann auch das Kompliment entscheidbar
Mhm. Genau. Ja, ist richtig.
Kann es einer begründen
77 Prozent. Das heißt, es müssten ja grob jeder Fünfte nur nicht wissen.
Also vier von fünf müssten es ja theoretisch wissen, ja.
Ich glaube, das Kompliment wäre nie anders.
Genau, ich drehe einfach die Antwort um.
Also ich nehme die Thuring-Maschine für die Sprache L, so,
lass die irgendwie arbeiten und wenn die anhält und Ja sagt,
dann liefere ich halt das Gegenteil zurück.
Also kennt man aus jeder Programmiersprache irgendwie nicht Return B,
sondern eben Return-Gegenteil von
Ähnliche Frage, wenn L1 und L2 entscheidbar sind,
ist dann auch das Produkt entscheidbar.
Also L1 und
Ja, genau. Auch eine ähnliche Begründung. Ich habe
eine Touring-Maschine für L1, ich habe eine Touring-Maschine für L2.
Beide halten immer, das ist in dem Fall wichtig,
dass die beide immer halten. Dann starte ich die eine,
die Touring-Maschine für L1, die rechnet,
sagt irgendwann ja oder nein, wenn die ja gesagt hat,
starte die Touring-Maschine für L2, die rechnet,
wenn sie auch ja sagt,
sage ich insgesamt ja
Könnte ich auch so vorstellen, dass L.1 wird eben durch irgendeine Java-Methode modelliert.
L.2 wird durch irgendeine andere Java-Methode modelliert. Und wenn beide Java-Methoden
mit Return-True enden, dann akzeptiert die halt und sonst nicht.
Die Frage da, geht das auch mit aufzählbaren Sprachen?
Wenn zwei Sprachen L.1 und L.2 aufzählbar sind,
ist dann auch L.1 geschnittene L.2 aufzählbar.
Nein. Genau. Also beim Schnitt kann ich das trotzdem
so machen, das einfach hintereinander ausführen.
Wie ist es bei der Vereinigung? Eins vereinigt L2. Entscheidbar
ist wieder einfach. Ich starte L1 oder die Touring-Maschine für L1,
wenn die anhält und akzeptiert, sage ich super,
wenn die anhält und nicht akzeptiert, dann starte ich die zweite.
Wie ist das bei der Vereinigung bei aufzählbaren Sprachen?
Geht das oder nicht?
L1 vereinigt
Ja, aber du guckst, ob es in der L1
drin ist und vielleicht hört das nicht auf.
Jetzt kannst du nicht gucken, ob das dann jetzt...
Nee, beim Schnitt hast du das Problem nicht. Guck mal,
beim Schnitt, wenn du L1 startest und L1 hört nicht auf,
dann macht das ja nichts, weil du willst ja gucken,
ob es den beiden drin ist.
So, hier jetzt,
wenn du L1 startest und es ist dann nicht drin,
aber es ist in L2 drin,
dann kriegst du das ja jetzt nicht raus
Das merkst du ja nicht, wenn du eins startest.
Geht das oder geht das nicht? Vereinigung, aufzählbar,
ja oder nein? Wenn zwei Sprachen in der L1002
aufzählbar sind, ist dann auch L1 Vereinigte 2 aufzählbar.
Sehr schön so. Ja, genau, das könnte man
machen. Wie macht ihr das direkt mit einer deterministischen?
Im Grunde genommen mit der gleichen Idee dann
Mit der deterministischen, ihr startet zwar die Touring-Maschine für L1 und L2,
aber ihr startet die nicht hintereinander, sondern ihr startet die quasi gleichzeitig.
Ihr lasst die Touring-Maschinen für L1 einen Schritt machen,
wenn das die Touring-Maschine für L2 einen Schritt machen,
wenn das die Touring-Maschine für L1 ihren zweiten Schritt machen,
die Touring-Maschine für L2,
ihren zweiten Schritt und immer so weiter.
Und sobald eine davon irgendwann mal ja sagt, sagt er ja.
Und wenn die halt beide nein sagen würden,
dann würden die ja beide unendlich lange rechnen, dann ist das halt so.
Dann mache ich das auch. Dann geht das. Also,
Schnitt ist entscheidbar und aufzählbar, Vereinigung ist entscheidbar und aufzählbar und Kompliment.
Da haben wir ja gesagt, das ist entscheidbar
Ist das Kompliment auch aufzählbar? Da muss ich jetzt ja
das Ergebnis irgendwie umdrehen. 44, 5, 6,
76, ja. Noch fünf Minuten und nur noch
drei Folien. Nein, nur noch fünf Minuten und
noch drei Folien
Ja, nein. Für immer dieses Drittes ist dann
auch das Kompliment auf Züber, ja, nein.
Also entscheidbar war es ja, bei aufzählbar, da ist es nicht so.
Das heißt, die Mehrheit hat recht knapp,
aber hat recht. Was man nämlich zeigen kann,
ist, wenn eine Sprache L,
wenn sowohl L als auch ihr Kompliment aufzählbar sind,
dann ist schon
die Sprache L entscheidbar
Beziehungsweise andersrum, wenn eine Sprache entscheidbar ist, dann sind L und das Kompliment von L aufzählbar.
Das heißt hier, die Frage ist, wenn man weiß,
dass die aufzählbaren Mengen wirklich mehr sind als den Scheidbaren,
was wir nächstes Mal noch machen,
dann kann das Kompliment einer Aufzählbarensprache nicht immer auch aufzählbar sein,
weil dann würden die beiden ja zusammenfallen.
Dann wären die aufzubauen und die Entscheidbaren gleich. Wie macht
man das hier? Eine Sprache ist entscheidbar genau dann,
wenn L und Kompliment von L aufzählbar sind,
die Richtung von links nach rechts ist einfach,
wenn L entscheidbar ist, ist es ja auch aufzählbar,
weil die Entscheidbaren, die halten halt immer,
das ist sogar noch ein zusätzliches Feature,
deswegen ist eine entscheidbare Menge
auch aufzählbar
Wenn man die Ergebnisse umdreht, dann hat man eine Touring-Maschine,
die das Kompliment entscheidet, hatten wir ja eben gemacht.
Und wenn ich das Kompliment entscheiden kann, dann kann ich
das Kompliment halt auch aufzählen. Das heißt, es ist
sowohl L aufzählbar als auch das Kompliment von L. Die Richtung ist einfach.
Die andere Richtung, die geht so ähnlich wie dieser Trick von eben. Das Problem ist ja jetzt,
wenn sowohl L als auch Kompliment von L aufzählbar sind,
ist das zwar schön und gut,
aber Ich kann nicht zuerst für die Tour,
was habe ich hier,
ich habe eine Toury-Maschine A und Overline A,
ich kann nicht zuerst A starten und auf das Ergebnis warten und dann Overline A starten und auf das Ergebnis warten,
wegen dem gleichen Grund wie eben.
Die muss ja nicht unbedingt anhalten. Aber wenn ich
ein Wort Weh gebe, dann weiß ich,
dass entweder A halten muss oder Overline A,
weil entweder ist wie in Älteren oder im Kompliment von Elb.
Mehr Möglichkeiten gibt es nicht, sonst ist das Kompliment definiert.
Das heißt, ich kann die einfach wieder abwechselnd jeweils einen Schritt machen lassen.
Also Beeingabe von wie, lasse A einen Schritt machen,
lasse Overline A einen Schritt machen und wiederhole das,
bis eine akzeptiert
Also wenn A akzeptiert hat, akzeptiere ich,
dann ist W eben in älteren und wenn Overline akzeptiert hat,
dann lehne ich ab,
weil dann ist es ja im Kompliment drin und damit bin ich fertig.
Dann habe ich eine Touring-Maschine, die L entscheidet.
Eine muss immer anhalten nach endlich vielen Schritten und fertig.
Ja, das war das. Was haben wir gemacht?
Heute und gestern Touring-Maschinen, akzeptierte Sprache, berechnen von Funktionen,
uns die Varianten angeguckt, vor allem eben diese nicht-diterministische Touring-Maschine,
die wir dann auch irgendwie durch den DTM simuliert haben.
Und eben haben wir noch die Begriffe entscheidbar und aufzählbar eingeführt.
Und nächstes Mal gucken wir uns diesen Bereich zwischen entscheidbar und aufzählbar noch
ein bisschen genauer an und werden halt eine Sprache zeigen,
die entscheidbar ist, eine Sprache zeigen,
die nicht entscheidbar beaufzählbar ist und das nochmal kurz eine Sprache angucken,
die nicht mal aufzählbar ist,
dann haben wir das alles und dann machen wir uns nochmal ein bisschen Gedanken darüber,
wie teuer es eigentlich ist, Sprachen zu entscheiden.
Ja, dann, für die,
die am 2. Mai irgendwie ein bisschen Urlaub machen,
Brückentag und so, schönes Wochenende und ach so,
die Donnerstagsübungsgruppen, für die Donnerstagsübungsgruppen hatte ich,
glaube ich,
rumgeschrieben,
diesen Dienstag 16 bis 18 Uhr ist wieder so eine Möglichkeit zu
der Übungsgruppe zu gehen und Mittwoch 8 bis 10 und abgeben
könnt ihr in die Box bis Freitag.