Gut. Wollen wir? Erste, zweite, vierte Woche.
Heute kontextfreie Sprachen. Wir hatten ja schon reguläre Sprachen oder
die reguläre Sprachfamilie mit DFA, NFA, regulären Ausdrücken und so weiter.
Und wir hatten den PDA, wo wir wussten,
okay, der kann irgendwie mehr.
Wir wissen noch nicht, wie die Sprachfamilie heißt,
aber der kann auf jeden Fall mehr.
Und heute machen wir erstmal ganz was anderes.
Also wir entfernen uns von diesem ganzen Automatenkram
Bisher hatten wir Automaten und die sollten Wörter akzeptieren.
Und heute gucken wir uns Grammatiken an und Grammatiken sollen Wörter generieren.
Genau, bevor wir da einsteigen, wollte ich noch
zwei Sachen sagen. Erstens kam eben die Nachfrage,
ob man bei den Beweisen für den PDA,
was da jetzt auch in den Übungsaufgaben dran ist,
ob man da jetzt auf jeden Fall so eine Induktion über die Wortlänge machen muss.
Muss man nicht. Ein Beweis ist dazu da,
den Leser davon zu überzeugen, dass die Aussage stimmt.
Also wenn ihr jetzt irgendwie die Aussage habt, hier,
mein PDA tut das, was er tun soll,
dann müsste das irgendwie beweisen, wie ihr das macht,
ist eure Sache,
aber es muss den Leser überzeugen
Jetzt gibt es irgendwie zwei Sachen, die man beachten muss.
Das eine ist quasi die Zielgruppe, wenn ihr jetzt sagt,
irgendwie die Zielgruppe sind andere Studenten hier,
dann muss man vielleicht ein bisschen ausführlicherer schreiben,
als wenn man das jetzt irgendwie auf dem,
was weiß ich, Masterniveau macht oder Promoventenniveau oder irgendwie sowas.
Und das andere ist, muss natürlich trotzdem korrekt sein, ne?
Einen falschen Beweis findet man meistens relativ schnell. Die Frage Wohnbeweis,
wo er quasi detailliert genug ist oder wo er abstrakt genug ist oder so,
dafür entwickelt er irgendwie mit der Zeit ein Gefühl.
Schreibt lieber jetzt ausführlicherer, weglassen kann man später
immer noch
Als Beispiel, wenn ihr irgendwie schreibt,
ihr sollt irgendwie einen DFA konstruieren, jetzt konstruiert ihr einen Automaten,
der das Kompliment akzeptiert und dann sagt er irgendwann so,
und jetzt akzeptiert er das Kompliment, also sind wir fertig.
Dann könnte ein Leser denken, hä, wieso sind wir denn jetzt fertig?
Der akzeptiert auch nur das Kompliment. Wenn alle wissen,
dass ich zum Kompliment DFA auch wieder einen BFA machen kann,
der genau das Kompliment akziert, bin ich sofort fertig.
Jetzt könnt ihr entweder sagen,
ihr helft dem Leser noch und schreibt noch den Satz dazu,
ne, jetzt habe ich denen das Kompliment akzeptiert,
also kann ich auch nach der und der Konstruktion einen DFA machen,
der genau das macht, was ich suche, fertig.
Oder wenn es da vielleicht noch gar nicht gab und ihr nur wisst,
dass das so geht,
dass ihr dann eben noch sehr ausführlich schreibt,
warum denn man jetzt auch einen DFA konstruieren kann,
der eben das andere tut,
Oder anderes Beispiel, wenn ihr irgendwo aufhört und sagt,
also es wurde zwei, Quatsch, jetzt sind wir fertig,
weil Wurzel zwei nicht rational ist oder irgendwie sowas,
dann kann man denken, hä, hilft mir noch nicht,
weil man vielleicht gar nicht weiß,
dass die nicht rational ist oder so.
Und dann, auch da muss man wieder beim Detailgrad irgendwie einstellen. Jemand,
der sich gut damit auskennt, der sagt vielleicht an der Stelle,
ja, ist klar, Dankeschön und ist fertig.
Und jemand anders wundert sich, warum der Beweis da fertig
ist und er müsste halt irgendwie noch detaillierter schreiben. Und bei dieser Automatenkonstruktion mit der vollständigen Induktion,
der Unterschied zu den DFAs,
wo wir das im Allgemeinen nicht gebraucht haben, ist eben,
dass man bei DFAs meistens relativ viel an dem Schaubild sehen kann und auch relativ viel schnell beschreiben kann,
dass man eben, man hat eben einfach nur Kantenübergänge,
wo Buchstaben dran stehen, da passiert nicht so viel,
also kann man relativ gut und schnell beschreiben, was da passiert.
Mein PDA ist es nicht so klar, das heißt,
wenn man da an irgendeiner Stelle sagt, naja,
und jetzt muss er halt akzeptieren,
weil was anderes geht gar nicht,
dann ist das unter Umständen nicht so offensichtlich,
dass da wirklich nichts anderes passieren kann,
weil eben unter Umständen relativ viel dann eben doch passieren kann,
zumal das Modell ja auch noch nicht deterministisch ist,
also muss man irgendwie aufpassen.
Genau, das ist das eine, sprich zusammengefasst,
schreibt eure Beweise lieber detailliert, Achso, genau.
Und wenn ihr jetzt auf diese vollständigen Induktionen verzichten wollt,
weil ihr denkt so irgendwie so, nee,
die ist mir zu kompliziert, das mache ich anders.
Das ist nicht gut. Auf eine Technik kann man dann
verzichten, wenn sie sicher sitzt. Also wenn ihr irgendwie,
wenn ihr das aus dem FF könnt, solche Induktionen und irgendwie sagt,
nee, an der Stelle brauche ich die nicht.
Das ist okay, dann lehnte die Technik souverän ab,
weil ihr sagt, ich mache das anders.
Wenn ihr die nicht benutzt, weil ihr sagt, kann ich nicht.
Ja, ist schlecht. Dann übt das lieber jetzt an der Stelle,
weil dann könnt ihr später, also lieber jetzt irgendwie im Übungsgruppenbetrieb üben,
als irgendwann später, wenn man es vielleicht mal braucht.
Weil Punkte kriegt ihr sowieso alle genug. So,
das noch und was wollte ich noch sagen?
Achso, letztes Mal Pumpingdämmer
Gab es ja ganz zum Schluss die Frage,
die Person ist, glaube ich, gerade nicht da, ne.
Da gab es ganz zum Schluss die Frage und Diskussion dann
hier mit mir, mit jemandem über das K0 und sowas.
Da habe ich noch eine Folie eingefügt,
die wir in der Veranstaltung nicht hatten,
die aber im Foliensatz, der online ist, drin ist.
Also da kommt quasi nach dem Pumpinglammer noch so eine blaue Folie,
wo irgendwie steht, es gab in der Vorlesung die Diskussion
und dann steht da halt die Erklärung zu,
wie sich das auflöst sozusagen.
Also dass dieses Chaos dem Pumpinglammer eben nicht null sein kann,
sondern mindestens eins sein muss, aber das braucht man üblicherweise gar nicht.
Also man kann das, deswegen ist die Folie auch blau,
das könnt ihr euch durchlesen und zur Kenntnis nehmen oder ihr könnt es euch ignorieren,
dann passiert da auch nicht so viel.
Grammatiken. Grammatiken haben wahrscheinlich, habt ihr das alles schon gesehen irgendwie,
aus Programmiersprachen kennt man das nämlich ganz gut,
wenn man irgendwie die Sintax von der Programmiersprache definieren will,
macht man das üblicherweise irgendwie mit Grammatiken.
Und bevor man jetzt irgendwie die komplette Sprache definieren will,
definieren wir uns einfach mal nur irgendwie einen bestimmten,
eine Grammatik für einen Identifier, wo wir zum Beispiel sagen,
der darf irgendwie aus Buchstaben und Ziffern bestehen,
aber das erste Symbol muss immer Buchstabe sein.
Also sowas wie Fu 1 geht,
aber es geht eben nicht 1,
2,
3 Fu oder irgendwie sowas
Und dann hat man meistens solche Notationen und die Idee
ist eben quasi, dass das, was links steht,
durch das, was rechts steht, ersetzt werden kann.
Also wenn ich anfange mit Identifier als mein Staatssymbol,
werden wir das nachher nennen, dann sagen wir eben,
das kann entweder ein Buchstabe sein oder es kann ein Buchstabe
sein oder davor steht wieder so ein Identifier-Ding oder ein Diggit und davor steht wieder ein Identifier.
Und das führt halt dazu,
dass man so eine Kette von Lettern und Diggets hat und ganz vorne,
wenn man irgendwann mal abbrechen will,
steht dann aber auf jeden Fall so ein Buchstabe.
Und dann Buchstaben, ABC, zahlen 0 bis 4,
üblicherweise alle Buchstaben und alle Zahlen,
aber für die Kurznotation hier einfach mal so
Und wenn man das jetzt nicht hier mit,
wenn man da nicht so viel schreiben will,
dann kann man das eben kompakter so zusammenfassen,
läuft aber aufs Gleiche hinaus.
Genauso. Und wenn man das jetzt, da ist sie nochmal,
das ist die Gleiche. Und wenn man jetzt beispielsweise A,
B, C 1 ableiten will, dann weiß ich ja,
das Wort, was ich ableiten will, endet auf eins.
Also nehme ich zuerst diese, das nennen wir gleich,
Produktion, dass ich sage, ich bilde E ab auf dieses Idee,
weil ich weiß, hinten soll eine Zahl stehen.
Dann war das hier der erste Schritt.
Und dann weiß ich, hier sollen noch drei Buchstaben kommen,
also bilde ich das i3 mal ab auf EL.
Zack, zack
Jetzt beim letzten mache ich es nicht auf EL,
sondern gehe direkt auf dieses L, damit ich da auch den Abbruch habe.
Dann steht da LLD und jetzt gehe ich nach und nach
diese Els und D ist durch und bilde die eben hier
auf die Buchstaben und Zahlen ab, die ich haben möchte.
Das erste L wird zum A, das zweite wird zum B,
das D wird zu 1 und das dritte wird zum Ziel.
Das ist die Idee bei diesen Grammatiken,
dass man eben sogenannte Produktionen hier oben hat, die einem immer sagen,
wie man das, was auf der linken Seite steht,
durch das, was auf der rechten Seite steht,
ersetzen darf.
Und unten ist dann eben eine Ableitung und damit man das ein bisschen unterscheiden kann,
ob man gerade hier eine Produktion hat oder eine Ableitung,
benutzt man bei den Produktionen
diesen Einfachstrich und bei den Ableitungen
unten diesen Doppelstrich
Doppelfrei. So, Großbuchstaben nennen wir Non-Terminale, Kleinbuchstaben nennen wir Terminale.
Das Ziel ist nachher zu einem Wort zukommen, das nur aus Terminalzeichen besteht. Also hier die Dinger,
ABC und 01234 und üblicherweise nimmt man eben für die Großbuchstaben,
für die Non-Terminale, die Großbuchstaben für die Terminale,
die Kleinbuchstaben und das letzte da,
das sind die Regeln oder Produktionen und mit diesem Balken,
den ihr eben schon gesehen habt,
unterteilt man eben von I nach L ist eine Produktion und von I nach EL ist eben auch eine Produktion,
damit man jetzt nicht tausendmal I nach L,
I nach Idee schreibt,
fasst man das hier eben all diese rechten Seiten
durch Balken getrennt zusammen
So, wenn man das jetzt formal fassen will,
können wir das erst mal ganz allgemein definieren,
dass man einfach nur irgendwie linke Seiten durch rechte Seiten ersetzen will.
Was braucht man dann? Man braucht ein endliches Alphabet von Non-Terminalen.
Das sind üblicherweise die Großbuchstaben, also eben das I,
das L und das D. Dann brauchen wir ein endliches Alphabet von Terminalzeichen.
Das ist keine Symbole mit den Non-Terminalen gemeinsam haben sollen.
Das führt sonst nur zu Verwirrung, das wollen wir nicht. Beide zusammen nennen wir V,
also VN und VT, zusammengeschmissenes V und die Non-Terminale,
wie gesagt, das sollen gleich die sein,
die wir ersetzen können und die Terminale,
das sind dann im Endeffekt, wenn wir ein Wort rauskriegen,
das nur noch aus Terminalen besteht,
dann werden wir nicht mehr weiter ableiten können,
dann haben wir ein Wort abgeleitet in der Grammatik
Und jetzt kommt das eigentlich Wichtige, nämlich die Produktion und die sind,
wenn man es ganz allgemein hält, so definiert. Hier als Tupel,
dass man einen linken Teil im Tupel hat und einen rechten Teil im Tupel,
also ein Zweier-Tupel und statt dann eben so einen Tupel zu haben,
schreibt man das immer als durch seinen Pfeil getrennt,
dass das erste Element im Tupel links steht vom Pfeil und
das zweite im Tupel rechts steht vom Pfeil.
So, was ist hier, was steht hier jetzt?
Hier steht jetzt das Links von dem Pfeil
darf quasi irgendeine Zeichenkette aus Symbolen
aus V stehen
Abgesehen von Zeichenketten, die nur aus Terminalzeichen bestehen.
Also V-Stern ohne VT-Stern. Bedeutet,
auf der linken Seite steht immer irgendwie mindestens ein Non-Terminal.
Also vielleicht auch mehr oder so, aber mindestens eins.
Eben in dem Beispiel hatten wir links immer nur genau ein Non-Terminal.
In der allgemeinen Schreibweise ist es so,
dass auf der linken Seite beispielsweise auch so verstehen könnte,
wie groß A, Großb, Kleinzäh.
Wenn ich dann irgendwo in meinem bisherigen Wort diese Zeichenkette finde,
groß A, Großb, Kleinzäh, dann kann ich leben durch das,
was auf der rechten Seite steht, der Regel ersetzen.
Und rechts ist überhaupt nicht eingeschränkt, rechts darf irgendwas stehen.
Und dann gibt es noch
das Startsymbol
Damit fängt man immer an. Und dann versucht man eben
durch Anwendung der Produktion auf ein Wort zu kommen,
das nur aus Terminalzeichen besteht. Und all diese so generierten
Worte, die kommen nachher in die Sprache der Grammatik.
Das ist das. Da steht es nochmal,
dass so eine Regel UV aus P, also ein Tupel hier aus P,
wird dann meist notiert als dieses UNAV. Mehrere Regeln,
UV und UW, die werden eben durch diese Balken-Schreibweise dargestellt,
damit man eben das UP-File nicht so oft hat.
Und da nochmal als Anmerkung das, was ich eben gesagt habe,
auf der linken Seite einer Regel, also sprich bei einem Wort,
das aus diesem V-Stern ohne VT-Stern kommt,
da gibt es immer mindestens einen neuen Terminal
Und rechtsbeliebig. Jetzt wird noch die Ableitung definiert,
Ableitung formal zu definieren, ist ein bisschen, naja,
es wird ein bisschen kryptisch. Die Idee ist, irgendwo,
wenn ich irgendwo in dem Wort eine linke Seite der Produktion finde,
dann kann ich die rausnehmen und die rechte Seite der Produktion da einsetzen.
Das ist die ganze Idee bei der Ableitung. Formal definiert,
wenn ich ein Wort V aus einem ONU mittels der Produktion
aus G ableiten will, so geschrieben hier mit diesem Pfeil,
dann definiere ich mir die Relation wie folgt.
Da kommt es dieser etwas komplizierte Teil
Ich sage das Wort, uh, kann ich zerlegen,
in U1 WLU2. Wobei U1 und U2 quasi die Teile in
dem Wort sind, die ich gar nicht verändere.
Und das WL, das ist gerade der linke Teil einer Produktion.
VLWRNP. Das heißt, VL ist der linke Teil aus der Produktion.
Der wird rausgenommen aus dem Wort U und wird eben durch
WR ersetzt. Und dadurch kriege ich mein Wort V.
Das ist schon die ganze Idee. Ja,
und dann noch, wenn eben der Kontext klar ist,
dann schreibe ich dieses runtergestellte Geh nicht dazu,
sondern schreibe eben nur diesen Pfeil.
Und wenn ich mehrere Schritte auf einmal machen will,
dann schreibe ich eben noch so ein Sternchen über
dem Pfeil für die reflexive und transitive Hülle
Das ist die einschrittige Ableitung, das ist die einschrittige und
die mehrschrittige Ableitung. Da nochmal zusammengefasst, man guckt sich
das aktuelle Wort W an, dann guckt man sich an,
ob in W linke Seiten der Produktionen auftreten.
Falls ja, wähle ich eine aus.
Da steckt schon drin, dass ich eine Wahlfreiheit habe.
Ich kann also nicht deterministisch irgendwie auswählen, was ich machen möchte.
Und die, auf die ich mich dann festgelegt habe,
da nehme ich dann eben diese linke Seite raus aus dem Wort W,
untersetzt das durch die rechte Seite.
Das ist die Idee. Beispiel, die Produktionen,
hier hat man einmal die Produktion,
das S ersetzt wird durch ASB,
da lernt man die Produktion,
das S ersetzt wird durch AB
Und dann hat man jetzt noch Produktion,
wo eben auf der linken Seite nicht nur ein Non-Terminalzeichen steht,
sondern weil wir die Grammatik am Anfang ganz allgemein eingehalten haben.
Ich kann das, die Zeichenkette groß, A, Großb,
durch ein kleines Zeher setzen und ich kann die Zeichenkette groß A,
Klein Zeh, Großb durch ein kleines Zeher setzen.
Das sind zwei weitere Produktionen. Und wenn es nicht genauer angegeben wird,
so wie in dem Beispiel, dann geht man immer davon aus, dass dieses Esther-Startsymbol ist.
Also wir hatten ja ganz am Anfang gesagt,
hier eine Grammatik ist so ein Vierer-Tupel, Non-Terminale, Terminale, Produktion und Staatssymbol.
Üblicherweise gibt man einfach nur die Produktion an und weist dann implizit,
dass Esther Staatssymbol ist und aus den Produktionen kann man alle Non-Terminale und Terminale Zeichen rauslesen,
wenn man sich eben darauf einlässt, dass man sagt,
die Non-Terminalzeichen sind immer die Großen und die Terminalzeichen sind die Kleinen.
Dann kann ich da alles rauslesen. Eine Ableitung wäre das da unten,
von Ess gehe ich nach ASB,
dann kann ich das Ess ersetzen durch AB noch,
also das S in der Mitte hier,
jetzt nehme ich die zweite Produktion hier,
die sagt Ess ersetzen durch AB,
dann kann ich das Ess ersetzen durch AB,
dann habe ich A, A, B,
B. Jetzt nehme ich das A,
B in der Mitte,
also den zweiten und dritten Buchstaben und wenn du
diese Produktion an die AB durch den Zeher setzt,
dann habe ich ACB
Und jetzt, wenn ich die letzte Produktion an- und ersetze,
das ACB durch den C. Im C ist ein Terminalzeichen,
das heißt, ich habe insgesamt das Wort in Anführungsstrichen C abgeleitet.
Also das Wort C ist, in der von dieser Grammatik generierten Sprache.
Noch die letzten Definitionen dazu. Wenn ich eine Grammatik habe,
dann ist die von gegenerierte Sprache. Das sind all die Worte,
die nur aus Terminalzeichen bestehen mit der Eigenschaft,
dass sich die eben vom Staatssymbol S aus durch Anwendung der Produktion von G ableiten kann.
Also ich fange immer bei S an,
wenn du irgendwie Produktionen an, will zu einem Wort,
komm das nur aus Terminalzeichen besteht, all die Wörter,
wo ich da hinkommen kann,
packe ich mir zusammen eine Menge.
Das ist die generierte Sprache
Äquivalenzbegriff genauso wie bei Automaten auch, wenn ich zwei Grammatiken habe,
die die gleiche Sprache generieren, dann nenne ich die Grammatiken Äquivalent,
genauso wie ich das bei Automaten auch mache.
Und das Letzte unten ist nur noch so eine Anmerkung,
weil das nachher in den Beweisen mal rumflattert,
wenn ich irgendwie Regeln angewendet habe,
aber hier bei dem U möglicherweise noch nicht bei einem Wort bin,
das nur aus Terminalzeichen besteht, dann nenne ich das immer eine Satzform.
Hat sich mal so eingebürgert. Dann kann man von Satzformen sprechen,
wenn da noch Non-Terminale dabei sind und von Wörtern,
wenn da nur noch Terminalzeichen sind.
Gut, das waren Grammatiken, also non-terminale,
terminale Produktion, Staatssymbol, wie Ableitungen funktionieren und was
die generierte Sprache ist
Fragen dazu. Jetzt kann man natürlich so Grammatiken generieren,
die irgendwie Grammatiken sich ausdenken,
die beispielsweise die korrekte Klammerten Worte darstellen oder irgendwie sowas wie
A-Hoch-N-B-Hoch-N kriegen wir auch gleich hin und so.
Weil solche Sachen. Wir fragen bis dahin. Zum Ersten,
zum Zweiten, zum Dritten. Wenn man zwei Rehe,
ich habe Fragen, wenn man zwei Regeln mit gleichen linken Seiten hat,
also die linke Seite ist gleich.
Wie wird ausgewählt,
welche Regel benutzt wird
Und 5 und 6 für, wenn ihr es noch nicht genau wisst,
Mehrheit gewinnt, darf man frei wählen. Das darf es nicht geben oder die,
die am weitesten link steht, wenn ihr euch überlegt,
wie das definiert ist mit diesen Ableitungs,
wie die Ableitungsregeln definiert waren,
das war ja nicht mehr sonderlich großartig eingeschränkt,
da wurde er einfach nur gesagt,
wenn es so eine Produktion gibt und ihr findet die linke Seite der Regel,
dann ersetzt sie durch die Rechte,
Also man darf das frei wählen. Es werden alle benutzt,
da kann man noch so daran denken,
wenn es mir jetzt darum geht, welche Wörter ich alle ableiten kann,
also was alles in der generierten Sprache ist,
dann muss ich vielleicht nach und nach alle Regeln mal benutzen,
kann aber wahrscheinlich dann irgendwie,
das kann ich ewig betreiben meistens, das Spielchen,
aber genau, dann könnte ich nicht einfach sagen,
die benutze ich nie oder irgendwie sowas.
Aber wenn es euch jetzt um eine Ableitung geht,
dann dürft ihr das
eben frei wählen
Kann man
zwei Regeln mit gleicher rechter Seite haben
Ja, kann man, ne? Auch da wieder ist er überhaupt nicht eingeschränkt.
Also... Bei der Definition der Grammatik, wo gesagt wurde,
die Produktion soll eine Teilmenge von so und so sein.
Da wurde ja nicht gesagt,
soll eine Teilmenge von so und so sein mit der zusätzlichen Eigenschaft,
keine Regel da,
also zwei Regeln dürfen auf der gleichen Seite nicht gleich aussehen und all sowas,
da steht alles gar nicht so.
Da wurde nur gesagt, soll eine Timemenge von so und so sein.
Das heißt, man kann zwei Regeln mit gleicher rechten Seite haben.
Beispiel Gruße, es geht nach Klein A und große es
geht nach Großa und großartig auch noch nach Kleinahr oder irgendwie sowas.
Dann habt ihr zweimal Kleinahr auf der rechten Seite,
schadet nichts. Braucht man sogar relativ häufig. Kann es
mehrere Möglichkeiten geben, um das gleiche Wort abzuleiten.
Naja, nach dem, was ich eben gesagt habe.
Von Großas geht es zu Kleinahr und von Großas geht es
großartig zu kleiner
Ganz fies. Fünf Sekunden. Ja, ne? Genau,
kann es geben, tritt auch relativ häufig auf,
weil man mit den Regeln andere Sachen machen möchte und dabei sozusagen als Nebeneffekt hat,
dass es manchmal dann auch mehrere Ableitungen für das gleiche Wort gibt.
Schadet auch nicht. Das dazu, richtige Antworten zum Nachbereiten. So,
und jetzt ist es so,
So wie wir es bisher eingeführt haben mit den Grammatiken,
sind die ziemlich mächtig und auch ziemlich unhandlich, weil man dieses,
ich ersetze einfach völlig beliebig linke Seiten oder die linken Seiten können völlig beliebig aussehen.
Das ist irgendwie doof, das nervt. Und die Vorlesung hieß ja auch ganz am Anfang,
oder oben drüben steht es auch immer noch drüber, kontextfreie Grammatiken,
so Grammatiken, okay, kann man so Grammatik nennen,
aber das mit Kontext frei, so das muss noch irgendwie reinkommen,
dass die Ersetzung unabhängig sind von dem Kontext,
in dem sich die Symbole befinden.
Das sind sie nämlich im Moment noch nicht. So,
deswegen definiert man sich das so, dass man sagt,
eine kontextfreie Grammatik, wie du so ein Quadrupel,
endliches Alphabet von Non-Terminal, hatten wir eben auch,
endliches Alphabet von Terminal,
bis dahin ist alles das Gleiche.
Und die Produktion definiert man sich jetzt so
Dass man sagt, das soll eine Teilmenge sein von VL-Kreuz-V-Sternen.
Auf der linken Seite steht also genau ein Non-Terminal.
Und auf der rechten Seite wieder eine beliebige Zeichenkette.
Und dann habt ihr noch das Staatsymbol. Das führt dazu,
dass ihr das Non-Terminal auf der linken Seite,
das jetzt ein großes A ist oder so,
dann wird das irgendwie durch die rechte Seite ersetzt,
aber eben unabhängig von dem Kontext, in dem es sich befindet.
Wenn ihr irgendwie habt, klein A, Groß A,
könnt ihr das großartig irgendwas ersetzen. Und wenn ihr habt Klein B,
Groß A, könnt ihr das USA wieder durch irgendwas ersetzen,
aber es ist völlig unabhängig davon,
ob links davon jetzt ein kleines A oder ein kleines B steht.
Während bei den Regeln, wie wir sie davor hatten,
da war es möglich, dass man sagt,
auf der linken Seite steht, Da war es möglich,
dass ihr habt auf der linken Seite steht, klein A,
Groß A oder auf der linken Seite steht klein
B, Groß A. Und das führt dann ja dazu,
dass das große A im Endeffekt oder eigentlich die ganze Satzfolge
eben ersetzt wird von dem Kontext, in dem es steht.
Das will man hier nicht haben. Deswegen sagt man auf
der linken Seite, soll genau I not terminal stehen.
Dass es für später kontextfreie Grammatiken werden noch als Typ
zwei Grammatiken bezeichnet, das macht nachher Sinn.
So, da steht es nochmal, was der Unterschied ist fürs Nachbereiten dann.
Hier ist für allgemeine Grammatiken,
da wird eben nur ausgeschlossen durch das Meng-Minus hier,
da wird nur ausgeschlossen, dass auf der linken Seite nur Terminalzeichen stehen.
Das, was man dadurch erzwingt, ist,
dass auf der linken Seite mindestens ein Non-Terminal steht
Und bei kontextfreien Grammatiken sagt man jetzt auf der linken Seite,
soll genau ein Non-Terminal stehen.
Da steht es genau, ein Non-Hämmler auf der linken Seite.
Genau, so. Dann gibt es noch zwei Sonderfälle hier,
wenn ich so eine kontextfreie Produktion habe,
dass das große A durch Lamde ersetzt wird, also durch das leere Wort.
Das nenne ich eine Lamdeproduktion und wenn ich eine kontextfreie Grammatik habe,
die gar keine Lamdeproduktion enthält, dann nenne ich die Lamde frei.
Das ist nur so, dass wir die Definition auch schon mal haben,
das brauchen wir auch später erst,
aber dass wir das da einfach so alles zusammen haben
Dann kann man Ableitung und akzeptierte Sprache genauso definieren wie bei anderen Grammatiken auch.
Der Unterschied ist jetzt halt einfach nur, dass dadurch,
dass die Produktionen anders aussehen, also stärker eingeschränkt sind,
kann ich nicht mehr so viel machen in den Ableitungen wie vorher.
All die Sprachen, die ich dann generieren kann,
das nenne ich dann die Familie der kontextfreien Sprachen.
Und abkürzen tue ich das mit CF. Kontextfrei,
jetzt haben wir also die Familie der kontextfreien Sprachen und
wir haben die Familie der regulären Sprachen.
Und jetzt müssen wir nochmal gucken, wie wir das irgendwie zusammenbringen,
weil bisher das nicht so viel miteinander zu tun.
Auf der einen Seite haben wir Automaten,
die irgendwie für Reck jetzt gerade sind und auf der anderen Seite haben wir kontextfreie Sprachen,
die aber über diese Grammatiken definiert sind und irgendwo flattert auch noch der PDA rum,
den wir auch noch irgendwie nicht einsortiert haben.
Also der Kellerautomat
So, mal gucken, welche der folgenden Grammatiken ist nicht kontextfrei?
Wieder eine von den ersten dreien.
Oder zwei davon sind nicht kontextfrei oder alle drei sind
nicht kontextfrei
Na,
na, na
Was soll ich denn zu F sagen?
Keine Ahnung. Mensch, also nochmal,
eine Grammatik ist kontextfrei
Genau dann, wenn auf den Linken der, genau dann,
wenn, auf den linken Seiten aller Regeln immer genau ein Non-Terminalzeichen steht.
Wenn man sich also die erste anguckt, esst nach AB,
ist okay, auf der linken Seite steht S, das ist genau ein Non-Terminal.
Großartig, nach kleinen A-Großarten, ist auch okay,
auf der linken Seite steht das große A, ist genau ein neun Terminal.
Großartig nach Lamda, ist auch okay,
auf der linken Seite steht genau ein neun Terminal,
das rechts ein Lamda steht oder kein Lamda oder so,
das ist egal, das war nur noch diese Einschränkung für Gib's Lamda-Produktion oder nicht,
das hat erstmal kontextfrei nichts zu tun.
Und das nächste hier B nach Baby oder nach Lamda,
genauso wie bei DMA hier auch,
das ist auch okay,
also die erste ist kontextfrei
Jetzt kann man die zweite durchgehen. Auch wieder,
man guckt sich immer an, was steht links von dem Pfeil.
Solange links von dem Pfeil immer genau ein Non-Terminalzeichen steht,
ist alles okay. Das ist also auch dargegeben. Dritte,
S nach Abi, ist okay, links steht das S,
A-B nach A-A-B-B. Ist nicht okay,
auf der linken Seite stehen zwei Non-Terminalzeichen.
Ergo nicht kontextfrei. Auf der linken Seite dürfte nur genau
ein Non-Terminalzeichen stehen. Und die andere Regel hier von groß A-Großb,
nach Klein-A-Kleinb, die wir auch nicht kontextfrei.
Das müsste ich irgendwie aufsplitten in das große A wird aufs
kleine A abgebildet und das große B wird aufs kleine B abgebildet
Dass wir also, selbst wenn ich die hier streichen würde,
da wäre das immer noch nicht kontextfrei,
weil ich dann immer noch die Regel hätte von Groß-A-Groß-B,
jetzt nach Klein-A, Klein-B. Also nur die dritte.
C gewinnt. In 4. Okay. Jetzt klar.
Ja. Die zweite ist kontextfrei. Also alle sind kontextfrei
bis auf die dritte
Pah, wer hat denn die Frage so wie beantwortet,
als welche Grammatik ist kontextfrei? Das würde daher ein völlig
neues Bild geben. War das eine Frage? Frage?
Ja. Die einzige, die... Ja. Ja,
aber die Automaten haben damit ja jetzt nichts zu tun.
Es wurde jetzt eine Grammatik definiert,
wo gesagt haben,
eine Grammatik ist dieses Viertubel
Und wenn, ne, non-terminale Terminale einfach
eine Menge von Zeichen, so ähnlich wie Eingewaltverbiet auch.
Und wenn die Produktion so und so aussehen,
dann ist das halt kontextfrei. Hat erstmal mit den Automaten
nichts zu tun. Sonst noch Fragen? Also kommt gleich
, aber erstmal ist nichts mehr. Sonst noch Fragen?
Es wird jetzt nämlich nicht leichter mit den nächsten
zwei Fragen.
Das ist ja das Große. Ja, ja.
Also der Balken, der Balken ist dazu da,
mehrere Regeln mit der gleichen linken Seite zu trennen.
Also hier versteckt sich die Regel S nach Groß-A-Kleinb und esst nach Klein-A-Großb.
Und das Komma-Trend dann unterschiedliche linke Seiten quasi. Hier wird dann gesagt,
und als nächstes gibt es in der Regel,
wo links das große A steht und dann rechts steht Klein-A-Groß-A
oder eben von großem A geht zum Klein-A. Ja,
Was man relativ häufig macht,
wenn man ein bisschen mehr Platz hat als ich da, ist,
dass man halt quasi die Regeln für die gleiche linke Seite,
dass man die untereinander schreibt.
Dann habe ich von S geht es dahin oder dahin oder dahin und von A
geht es dahin oder dahin und von B geht es dahin oder dahin,
dann wird das übersichtlicher. So. Welche Ableitung ist mit,
jetzt habt ihr hier diese Grammatik, auch wieder,
entweder könnt ihr von S zu zwei verschiedenen Sachen oder ihr
könnt von A zu zwei verschiedenen Sachen,
wobei das einnehmen, das Lander ist,
ihr könnt von B zu zwei verschiedenen Sachen und ihr könnt von C zu zwei verschiedenen Sachen.
Und jetzt ist die Frage, welche Ableitung ist damit möglich?
Ist die erste möglich, ist die zweite möglich,
ist die dritte möglich, sind sogar zwei von diesen dreien
Wobei wir dann noch genau spezifizieren müssten,
welche beiden sind alle drei möglich?
Oder müssen wir noch mal drüber reden, wie die Ableitung geht?
Das hakt übrigens nur an einer völlig blöden Stelle.
Also die sehen fast alle so aus,
als würde ich nicht gehen
Wow,
wie soll ich mal nachdenken?
Das geht nicht
Musik HaBC, D-E-F. Wer hat alles viertens gemacht?
Zwei sind möglich. Welche beiden? Eins und zwei.
Wer ist noch für eins und zwei?
Ja, sieht gut aus, genau.
Woran hakt sie bei der dritten
Das ist noch ein ganz cooles. Ja, genau,
da hakt es, ne? Also können wir mal durchgehen
hier von S nach A, B, ist okay,
das ist die oberste Regel hier von der SNHB, so.
Dann muss ich hier irgendwie B durch Zeher setzen.
Gibt es so eine Regel, ja,
ich kann hier das B durch den Zeher setzen.
Das geht auch. Als nächstes hier muss ich
irgendwie von dem Großargroß-Zeh zu dem Großart kleinste Groß-Zeh kommen.
Das geht mit der Regel, dass ich das große C
zu kleinste Groß-Zeh mache. Dann bin ich da.
Weil Großart kleinste Groß-Zeh. Jetzt ist die Frage,
kann ich das große A irgendwie ersetzen
Also kann ich das, kann ich das wegkriegen, ne?
Kann ich, weil ich hier diese Lamda-Produktion habe, dass ich großartig ein Lamda setze.
Und jetzt muss ich noch irgendwie das große C wegkriegen.
Das geht auch, weil ich hier auch eine Lamda-Produktion habe.
Also die Schritte sind alle okay. Bei der zweiten kann
man eh nicht argumentieren, dass die Schritte alle gehen.
Und bei der dritten ist auch wieder,
ist das Problem genau, was er eben meinte,
wenn ich hier hingekommen bin zu dem kleinen A, nee,
wenn ich da hingekommen bin, zu dem kleinen A,
großartig kleinen B-Großzee, dann sieht das hier so aus bei dem Übergang.
Die Dramatik ist ja kontextfrei,
also müsste es eine Regel geben,
mir das große Ziel durch ein kleines Zeh ersetzt
Die gibt's aber nicht. Ich kann nur das große C
durch kleinste Grust hier ersetzen oder durch Lamda,
was ich machen könnte, wäre von hier das große C
erstmal durch kleinste Grust hier ersetzen und dann das große C durch Lamda.
Da bin ich auch da hingekommen, aber dafür brauche ich
zwei Schritte. Da müsste ich, wenn ich hier,
wenn bei dem Fall noch ein Sternchen drüber wäre,
dann wäre das okay, so wie es da steht,
komme ich da nicht mit einem Schritt hin.
Deswegen ist die nicht möglich. Die erste und zweite ist möglich,
die dritte nicht, wobei das ein bisschen, ja,
das ist schon so ein bisschen,
das Wort selbst kann man ableiten,
aber man müsste dann noch
einen Schritt mehr machen
Fragen dazu? Dass eine Arbeit bringt. Der Einverfeil hier oben,
das ist eine Produktion und der Doppelfeil, das ist ein Ableitungsschritt.
Ja. Was gilt für die Menge der Produktion
einer kontextfreien Grammatik?
Wie muss das aussehen
Ja, genau. Die dritte, ne?
Ich darf ein Non-Terminal-Zeichen ersetzen durch eine ganz beliebige Zeichenkette.
Das zweite würde nur bedeuten, ich darf ein Non-Terminal-Zeichen ersetzen
durch eine beliebige Zeichenkette, die nur aus Terminal-Zeichen besteht.
Wenn das zweite stimmen würde, dann könnte ich immer nur einen Schritt machen,
nämlich das Staatssymbol durch eine Zeichenkette setzen,
die nur aus Terminal-Zeichen besteht und dann könnte ich nicht mehr weitermachen.
Und das erste ist für allgemeine Grammatik nicht für kontextfreie,
also das dritte muss sein und das vierte Funktioniert auch nicht,
da hätte ich auf der linken Seite gar keine Nonterminale,
das ist ganz doof. Und das fünfte hier,
da würde ich immer nur ein Non-Terminal durch ein beliebiges Zeichen ersetzen,
also Non-Terminale oder Terminal, aber damit käme ich auch nicht sonderlich weit.
Ich fange ja immer nur mit einem Startsymbol an und
das muss ich erst mal ein bisschen verlängern unter Umständen.
Gut. Also Grammatiken findet man eigentlich alle naselang mal so,
wie gesagt, insbesondere bei Programmiersprachbüchern oder so, wenn man,
also zumindest wenn man sich jetzt irgendwie nicht,
wenn man jetzt in der Sprache programmieren will,
sondern wenn man sich halt ansehen will,
wie die Sprache intern aufgebaut ist oder so,
wenn man dann so über Grammatiken stolpert,
die einem eben sagen,
wie die Sintax aussieht und solche Geschichten
Und dafür braucht man das öfter mal oder wenn man sich irgendwie,
was weiß ich, irgendwas schreiben will,
wo man bestimmte Sachen reinpasen möchte,
also bestimmte Sachen von der Eingabe lesen können möchte und andere nicht,
dann kann man mit Grammatiken immer ganz gut ausdrücken,
wie das denn aussehen soll, was man eben lesen können möchte.
Dafür brauchen wir die Grammatiken. Und was hier jetzt anders
als bei den Automaten meistens ein wichtiges Problem ist,
da kommen wir aber erst nächstes Mal zu,
ist das sogenannte Wortproblem, sprich gegeben die Grammatik und ein Wort,
kann das Wort überhaupt von der Grammatik generiert werden?
Beim Automaten ist die Fragestellung ganz einfach,
wenn ich euch einen Automaten gebe und ein Wort und wissen möchte,
ob der Automat das Wort akzeptiert, was mache ich dann?
Also ihr habt den Automaten und das Wort und ihr
wollt wissen, ob der Automat das Wort akzeptiert,
was macht ihr
Ja, genau, wir geben dem Automaten das Wort Rechnen fertig.
Also entweder endet MN-Zustand oder halt nicht, wenn im Endzustand endet,
akzeptieren wir, wenn nicht, akzeptieren wir nicht.
Bei einer Grammatik ist das nicht so einfach. Ich weiß,
ich habe das Staatssymbol, also ich weiß,
dass ich da anfangen muss und ich weiß,
ich habe das Wort, wo ich möglicherweise hinkommen soll.
Jetzt habe ich keine Ahnung, wie ich von da nach da komme.
Also das Wortproblem bei Grammatiken wird sehr viel schwieriger.
Und wenn ich sowas ausprobiere wie,
ich teste immer alle Produktionen durch, das funktioniert natürlich,
also zumindest bei Connex-Fragematiken geht das gut,
aber dauert unter Umständen
viel zu lange
Machen wir gut. Ich glaube, das ist ein Wort. Man muss den Flyer sein,
die Erfahrung modifizieren, dass er nur akzeptiert wird,
seit Stärke, das Wort geht es mir,
dann könnte man da mit einer Maschine das simulieren.
Ja, er meinte gerade, dass man das mit Automaten nicht
so gut simulieren kann. Da kommen wir noch zu,
das kann man ziemlich gut mit Automaten simulieren, aber das kommt erst noch.
Was wollte ich jetzt machen? Ah ja, genau. Trotzdem,
also das Wortproblem wird nachher ziemlich zentral,
was aber erstmal auch interessant ist, ist wieder diese typische Fragestellung,
gegeben die und die Sprache, wo ich eigentlich gerne hin möchte,
wie konstruiere ich jetzt eine Grammatik dazu,
die genau diese Sprache generiert.
Also so ähnlich auch wie beim DFA, wo wir gesagt haben,
die und die Sprache konstruieren mein DFA,
der das tut
Das wollen wir jetzt auch bei den kontextfreien Grammatiken machen.
Und da gibt es so zwei typische Techniken, die man benutzen kann.
Und das gucken wir uns jetzt mal kurz an.
Das ist zur Nachbereitung. Da steht das auch noch,
welche 2-0 gehen und warum die dritte falsch ist.
Die Sprache, A-Stern-B-Stern, also beliebig viele Art,
gefolgt von beliebig vielen Bs.
Wie kann man das machen mit einer Grammatik?
Jetzt gibt man meistens einfach nur die Produktionen an.
Dann sagt man, von S, also vom Staat im
Bull S geht es zu dem großen A und dem großen B.
Und die Idee ist,
das große A erzeugt jetzt diese Kette von Klein As und
das große B erzeugt die Kette von Klein Bs
Dass da drunter nur der Vollständigkeit halber, also die Non-Terminale,
die Terminale, das Staatssymbol, üblicherweise reicht das, was oben steht.
Wie wird das hier realisiert? Wie gesagt,
vor groß, es geht zu groß A Großby.
Und da die ja kontextfrei ist, die Grammatik,
kann man sich jetzt immer angucken, was geht alles mit dem A?
Und was geht alles mit dem B? Die haben ja
nachher nichts mehr miteinander zu tun. Und dass die Worte,
die von dem großen A generiert werden, die können auch
nicht auf die rechte Seite von dem großen B kommen. Das heißt,
wenn man sowas hier aufschreibt von SG zu großer Großby,
dann weiß man schon, okay, das Wort ist jetzt irgendwie zweigeteilt,
ich kann mir bei den generierten Worten angucken,
was wird von A generiert, was wird von B generiert,
die flatsche ich dann aneinander,
aber dann habe ich die Worte,
die von der Grammatik generiert werden
Und die Idee hier ist relativ einfach, das große A kann halt immer
auf kleinen A-Groß-A abgebildet werden. Das mache ich immer,
dann habe ich da eh kleine Ars stehen und dann das große A. Und irgendwann,
wenn ich genug kleine Ars erzeugt habe, dann nutze ich die Produktion,
dass ich das A durch die Landerproduktion lösche und bin fertig.
Also von dem großen Arm wird irgendwas, was A Sterne erzeugt.
Und bei dem großen B,
genauso wird eben so eine Kette von kleinen Bs erzeugt und
irgendwann höre ich auf und lasse das große B auf Lande
abbilden und dann habe ich so und so viele kleine Ars und so und so viele kleine Bs.
Und weil die nichts miteinander zu tun haben,
erzeuge ich auch nicht so was wie A hoch IB-Hoch-I,
sondern ich erzeuge halt beliebig viele As und dann beliebe ich
viele Bs,
also E-As und JBs
oder so
Dass wir die Grammatik dazu, jetzt muss man noch zeigen,
dass sie tatsächlich das tut, was sie tun soll.
Ich habe das eben schon ein bisschen versucht zu erzählen,
aber wenn man das jetzt formal machen will,
oben nochmal die Sprache, darunter die Produktion.
Und jetzt sagt man, wenn M eine Teilmenge von der LG
sein soll, jetzt nehme ich mir irgendein Wort aus M.
Schön parametrisiert, damit es schön allgemein ist.
Also ich nehme das Wort A hoch in B hoch M,
mit N&M irgendwie aus den natürlichen Zahlen.
Und jetzt überlegt man sich, wie kann man in G
ableiten, um genau dieses Wort zu erzeugen?
Das sieht dann irgendwie so aus, dass man sagt,
ich kann ja nur als erstes von S nach AB gehen,
dann erzeuge ich mir durch die erste Produktion von dem A,
erzeuge ich mir eben M
viele kleine As
Und dann lösche ich das A durch die lange Produktion.
Und dann mache ich das Gleiche nochmal mit dem B,
nur dass ich jetzt eben nicht entfiele, erzeuge,
sondern empfiele, kleine Bs.
Und ganz zum Schluss lösche ich noch das große B. Jetzt
habe ich ein Wort, das nur aus Terminalzeichen besteht,
dass es also in der generierten Sprache drin und es sieht auch genauso aus,
wie es aussehen soll.
Wie auch bei Automaten ist die Richtung immer einfach.
Ich nehme mir das Wort aus der Menge M und ich
nehme ein allgemeines Wort aus der Menge M, zeigt,
dass es irgendwie von der Grammatik generiert werden kann und bin für die Richtung fertig.
Die andere Richtung wird schwieriger. Und wenn ich zeigen will,
dass LG eine Timing von M ist,
jetzt muss ich wieder irgendwie mit den Produktionen argumentieren.
Also ich weiß, das Wort ist in der generierten Sprache,
was ich also weiß,
dass ich starte beim Startsymbol und ich komme irgendwie zum Wort,
das nur aus Terminalzeichen besteht
Und jetzt kann man argumentieren,
an den Produktionen kann man zunächst mal erkennen,
dass eben für jedes Wort weh, das irgendwie aus A abgeleitet wird,
über beliebig viele Anwendungen der Regel, das kann nur aus kleinen As bestehen.
Warum ehemalige Anwendung, die ersten Produktionen führt zu dieser Satzform,
A hoch Igos A und irgendwann,
ich will ja jetzt ein Wort haben, das nur das Terminalzeichen besteht,
also muss ich das große A irgendwie wegkriegen.
Irgendwann kann ich dann diese Produktion A nach Lamda benutzen und
kann das große A löschen. Gleiches gilt für VHSB-Stern,
wenn ich von dem großen B komme und zu V gehe,
dann Ups. Ja, genau. Euer Gleiches gilt,
wenn ich eben von dem Non-Terminal Großb starte,
dann kann ich eben erstmal J mal die Satzform,
J mal die Produktion B nach Klein-B Großb benutzen.
Dann habe ich so wie hier auch, so wie hier auch IA,
habe ich dann B hoch JB und dann lösche ich das irgendwann.
Dann weiß ich, wenn ich irgendwie ein Wort ableiten kann,
dann muss ich mit dieser Produktion beginnen hier,
muss das der erste Ableitungsschritt sein.
Warum? Weil es die einzige Regel ist,
die vom Staatssymbol losgeht. Naja,
wenn jetzt das große A eben zu A hoch I geht
und das große B zu B hoch J,
dann hat das abgeleitete Wort U eben diese Form A hoch
IB hoch
Und das ist folglich in der Sprache M drin,
in der Menge M drin.
Also ist jedes von der Grammatik generierte Wort NM drin.
Damit gilt auch die Timing-Beziehung hier. Und dann ist der Beweis fertig.
Das ist die eine Technik, dass man irgendwie so nach rechts wandert.
Wie würdet ihr A hoch NB hoch N machen?
Eine Grammatik für A hoch NB hoch N?
Also da will ich jetzt ja nicht unterschiedlich viel,
oder hier habe ich ja nicht unbedingt unterschiedlich viele,
ich will nicht beliebig viele As und Bs,
sondern ich will genau N-Fila As gefolgt von N-Fila Bs.
Wie würdet ihr das machen
Genau. Jetzt wandere ich nicht quasi nach rechts,
wie ich das hier bei den Produktionen gemacht habe.
Also hier ist ja das Non-Terminal immer weiter nach rechts gewandert
und erschafft quasi links von sich so eine Kette von Buchstaben,
sondern jetzt lasse ich das Non-Terminal in die Mitte wandern.
Und am Rand wächst es quasi gleichzeitig. Also für A auch NBON,
die Sprache, für die wir schon PDA hatten,
aber noch kein DFA, kann man relativ einfach zwei Produktionen angeben,
die die Sprache erzeugen.
ASB oder Landa. Wenn ich jetzt eben die erste Produktion hier,
wenn ich die E mal benutzt habe,
dann habe ich A hoch ISB-Hochi
Und dann breche ich irgendwann ab und sage, okay,
jetzt bilde ich erst auf Lande ab und dann habe ich
eben das Wort, ah, auch IB, huchi.
Also M-Timing von LG, sei weh eben so ein Wort aus M,
dann kann ich, so wie eben beschrieben, ableiten.
Ich benutze eben N mal die erste Regel und dann lösche ich das.
Also gilt auch WNLG. Und da ist die Rückrichtung auch
relativ einfach, weil man eben nur zwei Produktionen hat.
Also wenn ich wie ein LG habe,
wenn ich nur zwei Regeln habe,
ist das einfach die einzige Möglichkeit, zu einem Wort zu kommen,
ist eben diese Löschproduktion einmal zu benutzen und vorher kann eben I mal die andere Produktion benutzt werden.
Also hat das Wort wieder diese Form A, auch IB,
hoch I. Genau. Das sind die zwei Techniken,
die man da so haben kann
Also einmal eine Zeichenkette sequenziell aufbauen, wie bei Ahochk oder sowas.
Da hat man das noch ein Terminal üblicherweise am Rand,
entweder rechts am Rand oder links am Rand,
je nachdem, wo man nachher weitermachen will.
Und wenn man aber einen linken und einen rechten Teil haben will eines Wortes,
den man miteinander in Beziehung setzt, also wo man sagt,
gleich viele davon und gleich viele davon,
dann kann man eben irgendwie das Non-Terminal in der Mitte wandern lassen sozusagen.
Das sind die beiden Techniken, die man da so haben kann. Gut,
es gibt natürlich noch weitere Techniken für kompliziertere und komplexere Sprachen,
aber das sind erstmal so Techniken, mit denen man ganz cool was machen kann.
Wenn man sich hier zum Beispiel bei diesem SAS,
wenn man sich da noch Regeln einführt, für SAS oder SBS oder SCS,
dann kann man quasi jedes Wort aus A, B,
C irgendwie aufbauen.
Man lässt das Große erst immer weiter nach rechts wandern und
links von sich zieht das einfach eine Schlange aus kleinen As,
kleinen Bs, kleinen Cs hinterher, dann kann ich jedes Wort mitbasteln.
Die jetzt aber auch in keinem Zusammenhang stehen,
also das ist dann für A, B, C Stern.
Und hier kann man eben auch so Sachen mitmachen wie A,
Hoch, N, C, Hoch, M,
B hoch N oder so.
Ich glaube, das kommt jetzt auch in den Fragen,
genau. Welche Sprache generiert die Grammatik da?
Ihr habt zwei Produktionen
Welche von denen darunter genannten Sprachen,
also N immer aus den natürlichen Zahlen irgendwie?
Welche Sprache meint ihr generiert das
Wer schon geklickt hat, kann sich um überlegen,
wie er die anderen generieren,
also wie eine Grammatik für die anderen Sprachen
aussehen könnte
Der große Block bei B gewinnt, müsste man das nochmal
formal zeigen, aber geht genauso schnell wie eben.
Man hat ja nur die eine Produktion hier oder mit der
kann man löschen und man kann quasi die erste Produktion beliebig oft benutzen wenn ich die Produktion immer und immer wieder benutze,
zuerst habe ich A, SBC, dann habe ich A-A-S-B-C,
B-C. Dann habe ich 3 A-S-S-B-C, B-C,
B-C. Dann habe ich 4 A-S-S-B-C,
B-C, B-C, B-C und so.
Also kriege ich dieses Zweite hin, dass ich irgendwie endviele As habe,
gefolgt von n mal dieser Kette B-C, B-C, B-C,
B-C., wie würdet ihr denn die vierte hier machen?
A-B-C hochrennen. Wie macht ihr die
Ja, genau, das Essen. Also Klein,
Klein-B, Kleinzäh und dann das Großessen,
dann erzeuge ich immer diese Kette A, B,
C, A, B, C, A,
B, C, A, B, C,
dann kriege ich das hier hin.
Die dritte, ja. Ja,
du kannst auch vorne das Essstehen haben und dann A,
B, C, dann wächst das halt nach links.
Das geht auch, genau. Ich überlege gerade,
ob noch was geht, aber ich glaube noch was geht nicht. Genau,
die dritte, die geht im Grunde genommen so wie die zweite,
nur dass man das S halt Klein-A-Klein-B, dann das S,
dann das kleine C. Dann kriege ich diese A-Bs-N mal gefolgt von den NCs.
Das zweite ist die Grammatik, die wir da oben haben.
Und wie würdet ihr das erste machen oder deine Idee?
Das erste. Jetzt hast du, bin ich nicht ganz sicher,
aber jetzt hast du ja nur gleich viele ASVBs.
Wo kommen die Cs her
Das war der Großsatz. Ach so,
dann hast du aber A hoch I, B, hoch J,
C, hoch K. Dann sind es ja nicht gleich viele.
Also du kannst zwar auch die erzeugen, die gleich viele haben,
aber du kannst ja noch viel mehr erzeugen.
Wenn du das erst ganz zum Schluss machst, dann kriegst du den hier.
A, B, C, hoch N. Bitte? Das
führt zum Gleichen. Wenn das S ganz vorne steht oder ganz hinten führt zum Gleichen,
zockst du immer drei, also erzeugst du immer A,
B, C und dann S, A, B,
C, S, A, B, C,
S oder halt eine A, B, C,
S, A, B, C,
S,
A,
War. Ich komme letztes Mal. Warum geht es denn
damit nicht? Warum geht es denn damit nicht?
Er meint, das geht nicht. Zweimals mussten wir fahren
, das ist gewaltig zur Seite.
Ja. Ja
Klingt gut, aber jetzt hast du eFila Ars und dann kriegst du
sowas hin wie B, Hochjord, C, Hochjord.
Ja, dann mischen die sich. Also entweder mischen sie
sich dann oder du kriegst nur sowas hin wie B,
Hochjord, COK oder so.
Juna? Was? Sagt er auch,
aber warum
Ja. Ja, genau, also vom Gefühl her,
man kriegt irgendwie nicht hin, diese Beziehung über die,
also alle drei miteinander in Beziehung zu setzen.
Zwei in Beziehung setzen geht irgendwie, wie bei A auch
in B hoch N, drei in Beziehung setzen, hm.
Du meinst sowas wie von Essen nach ASB, SC, ja?
Ja, aber dann hast du nachher sowas wie ASB,
SC und als nächstes jetzt A-A-S-B-S-C-A-A-B-S-C,
hast du zu viele As irgendwo und zu viele
Bs.
Jetzt mischen die sicher
Guck, wenn du es einmal machst, von S zu...
Ja genau, jetzt hast du Klein A, S-B-S-C. Ja.
Ich habe eine Tafel, aber keine Kreide.
Doch. Wenn du... Die Produktion, ne
Ja. Das ist quasi für den ersten hier. Und für den
auch noch. Jetzt hast du hier As, da A.
Und wir wollen ja erst endviele As, endviele Bs, endviele Cs.
Jetzt fängt an, sich das doof zu mischen.
Idee ist gut, aber funktioniert auch nicht. Nein,
nein, nein, nein, nein, drei, kein Problem.
Also es ist cool, dass sich das daran erinnert,
aber das führt ein bisschen zu weit.
Ja, das, was er vorhin meinte,
passt schon, irgendwie alle drei miteinander in Beziehung setzen,
das funktioniert nicht so gut.
Also auch sowas wie, Ja, warte mal.
A-Hoch-I, B-Hoch-J, C-Hoch-I plus J. Das könnte vielleicht schon wieder klappen.
Jetzt muss ich so viele Aserzeugen wie T, A,
so ein B-S-Prophine wie C's.
Das könnte schon wieder klappen. Der, der wird nicht
klappen. Der klappt auch nicht mit genau den Begründungen,
dass das irgendwie nicht kontextfrei ist. Also auch ein Bioch,
ein Seehochen wird nicht gehen, werden wir auch morgen nachweisen,
dass das nicht geht
Um euch schon mal ein bisschen Albträume zu verschaffen,
das kann man mit einem zweiten Pumping-Lämmer zeigen.
Und zuletzt noch,
welche Sprache generiert diese Grammatik
Ja, sehr gut. Ja, die dritte hier,
die dritte kann es nicht sein, da sind hinten die Cs.
Die Idee hier ist, ich erzeuge mit der ersten Produktion E-Fila Ars, vorne,
i-Fila Bs hinten und in der Mitte ist immer noch das S.
Also habe ich irgendwie nach ehemaliger Anbindung der Produktion,
habe ich A-Hoch-I-S-B-Hoch-I. Und jetzt kann ich irgendwann sagen,
ich habe genug davon und dann mache ich das S zum C.
Jetzt habe ich A-Hoch-I-C-B-Hoch-I und aus diesem C kann ich jetzt,
so wie wir das vorhin bei dem einen Beispiel auch hatten,
hier so eine Kette von kleinen Cs erzeugen,
die nichts mehr mit den i-Fila Ars und Bs zu tun haben.
Das heißt, ich habe A-Hoch-I vorne,
B-Hoch-I hinten und in der Mitte habe ich noch J viele Cs.
Also das vierte hier
Wie würdet ihr eine Grammatik für das dritte machen?
Das erste und zweite geht wieder nicht,
das ist ja im Grunde genommen auch, also das zweite,
das erste ist auch in Biochenziorien, das geht nicht.
Das zweite ist quasi die gleiche Sprache,
nur dass sich da BSNCs austausche, das geht auch nicht.
Das dritte funktioniert, aber wie mache ich das?
Na dann hast du AB, AB, AB,
AB nachher.
Das klappt nicht
Na, wie mache ich die dritte? Dritte? Ja
, dritte. Wie mache ich die dritte? Kleines Art,
kleines Bier, großes S. Dann kriegst du A,
B, S und danach wieder A, B, S,
A, B, S, A, B, S.
Ich will ja aber erst N-Fila As haben,
dann ennen viele Bs und dann beliebe ich viele von den Cs,
zweiter Versuch
Nee, wenn die Produktion S-A-B-S ist,
dann kriegst du ja immer weiter dieses A-B-Ding. Naja,
wenn du das jetzt als Produktion... Wenn du die Produktion nimmst,
ja, wenn du die einmal anwendest,
hast du A-B-S, wenn du die jetzt nochmal anwendest,
entsteht da A-B, A-B-S.
Das ist doof.
Also ihr müsst es irgendwie hinkriegen,
dass ihr
Die Idee da ist, was man sich erst mal
klarmachen kann, ist, dieses Wort ist irgendwie zweigeteilt.
Es gibt einen vorderen Teil in dem Wort,
wo ihr auch in Biohin erzeugen wollt.
Und es gibt einen hinteren Teil in dem Wort,
wo ihr eben viele Cs erzeugen wollt.
Oh Gott. Sagen wir noch mal, es geht wohin?
Fast. Jetzt würdest du hier gleich wieder ASBC haben und
so weiter.
Ist fast richtig
Ja, dann kannst du all diese Wörter zeigen,
aber du kannst noch mehr erzeugen. Das will ich,
ich will ich es nicht. So. Ja. Aber du musst,
nochmal, hatten wir bei den Automaten auch schon mal,
du willst nicht zu viel erzeugen.
Deine Grammatiken und so und deine Automaten,
die könne mal all das, was wir wollen,
aber die können immer noch viel zu viel.
Der ja jetzt auch wieder, der kann ja jetzt auch hier A,
B, A, B, A,
B,
A,
B machen
Ja, das ist doof. Die Idee hier war schon
total cool, aber das ist ein Teil,
und das ist ein anderer Teil, splittert das mal auf.
Ja, ich glaube, du meinst jetzt das Richtige.
Moderne Technik. Ja, irgendwie sowas, ne?
Von S geht es nach XY, X erzeugt mir jetzt
diesen Kram mit denen. Ich glaube, das hast du
eben gesagt,
nur anders genannt
X erzeugt mir den A-B-Teil. Und Y erzeugt mir
den Teil mit den Cs, ne?
Also das Wichtige ist, das Wort ist irgendwie zweigeteilt.
Ihr könnt vorne, oder wenn das Wort zweigeteilt ist,
dann sagt ihr euch, okay,
als erstes mache ich aus meinem großen S, zwei neun Terminalzeichen.
Das X ist jetzt für den Einteil des Wortes,
das Y ist für den anderen Teil des Wortes.
Und das große X, daraus mache ich jetzt mein A auch in BioN.
Und aus dem großen Y mache ich mein C hoch M.
Und dann funktioniert das. Und die beiden Geschichten da von
dem X und von dem Y,
die haben wir im anderen Kontext ja schon benutzt.
Also dass die Regeln, die da bei dem X stehen,
die erzeugen das auch in BON,
das hatten wir schon
Die Regeln, die beim Y stehen, die erzeugen,
das zehn Hochstern, hatten wir auch schon.
Und dann kriegt ihr hier auch ein BON-COM hin.
Fragen. Die Fragen, warte mal. Dann dass einmal eine Zwischenzusammenfassung.
Was hatten wir an Definitionen? Grammatik inklusive dieser Begriffe,
Non-Terminal-Terminal-Produktion, Staatssymbol, dann diesen Begriff der Ableitung und dann eben die generierte Sprache.
Und was wir bisher noch nicht benutzt haben,
aber die Äquivalenz, also wenn ich zwei Grammatiken habe,
die die gleichen Sprachen generieren, sind die beiden Grammatiken äquivalent.
Und dann haben wir eben speziell,
weil mit denen Grammatiken hier oben zu arbeiten,
macht keinen Spaß, haben wir speziell eingeführt, kontextfreie Grammatiken,
die auch Typ 2 Grammatiken heißen und haben über die eben diese Sprachfamilie CF definiert.
Und dass es Landerproduktionen gibt und den Begriff Landerfrei,
das gucken wir uns morgen nochmal an,
das ist für heute nicht so wichtig,
aber das gibt es da auch noch
Genau, und dann haben wir eben uns diese beiden Techniken
angeguckt und typische Fragestellungen sind jetzt eben zu einer Sprache eine Grammatik
zu konstruieren und dann eben wieder dieses LG gleich M zu zeigen.
Zwei Konstruktionstechnik haben wir kennengelernt und das untere habe ich auch schon erwähnt,
hier eine wichtige Fragestellung,
es ist üblicherweise zu einem Wort weh zu prüfen,
ob es von der Grammatik generiert wird oder nicht.
Beim Automaten einfach, ich lege dem Automaten das Wort vor,
bei Grammatik zunächst schwierig, da müssen wir auch vorher ordentlich was für basteln,
damit wir das gut hinkriegen.
Das machen wir morgen, glaube ich, ja.
Genau, und Und jetzt... Ja, das schaffen wir noch.
Jetzt möchten wir noch diese Brücke schlagen zwischen Automaten und Grammatiken.
Also bisher sind es ja irgendwie Grammatiken und die haben erstmal
noch nichts so viel zu tun mit Automaten.
Damit das nicht mit PDAs und so, ist das relativ kompliziert.
Wir gucken uns das mal mit DFAs an und dazu schränken
wir die Grammatik noch ein bisschen noch doller ein.
Wir nehmen eine kontextfreie Grammatik und die nennen wir jetzt wie folgt.
Linear nennen wir die
Wenn wir sagen, links ein Non-Terminal, genau eins,
sonst wäre die Grammatik ja nicht kontextfrei und rechts stehen entweder nur Terminalzeichen,
das ist der hintere Teil hier,
oder ganz viele Terminalzeichen, gefolgt von genau einem Non-Terminal,
gefolgt von wieder ganz vielen Terminalzeichen.
Sprich, auf der linken Seite ein Non-Terminal,
auf der rechten Seite auch ein Non-Terminal und dazwischen eben
noch beliebig viele Terminalzeichen davor und dahinter.
Oder eben nur Terminalzeichen. Und da gibt es noch
linkslinear und rechtslinear, da wird eben gesagt,
dass das Non-Terminal gleich links stehen soll oder eben gleich
rechts stehen sollten
Und mit den beiden unteren werden wir uns jetzt mal noch mal kurz beschäftigen,
mit Linkslinie und Rechtslinie, sprich diese Grammatiken, die wir vorhin hatten,
so von C geht es nach Klein-C, Groß-C,
das ist Klein-C, Groß-C, das war Rechtslinie ab.
Also die heißen auch Typ 3 Grammatiken oder reguläre Grammatiken,
da klingt es schon an, reguläre Grammatiken,
reguläre Sprachen, DFAs und so.
Und da unten mal so beispielhaft typische Produktionen für rechtslineare Grammatiken.
Genau. Eine Sprache ist regulär, genau dann,
wenn es eine rechtslineare Grammatik gibt mit LG ist
Sprich, die Aussage, die da steht,
wenn eine Sprache regulär ist, dann wissen wir ja schon,
da gibt es einen DFA, der die akzeptiert.
Und da steht jetzt, wenn das so ist,
dann gibt es auch eine rechtlinäre Grammatik, die genau diese Sprache generiert.
Und anders, wenn es eine rechtlinäre Grammatik gibt,
dann gibt es auch einen DFA, der genau diese Sprache akzeptiert.
Das wird jetzt die Brücke zwischen Automaten und Grammatiken.
Und wir werden dann sehen,
dass es zu jedem Grammatikmodell auch ein Automatenmodell gibt und andersrum,
zu den kontextfreien Grammatiken ist das Automatenmodell der PDA,
also der Kellerautomat.
Sprich, alles, was sie mit einer kontextfreien Grammatik machen könnt,
könnt ihr auch mit dem PDA machen und andersrum
Und der Beweis ist relativ, also das ist,
der ist auch okay, aber der ist halt so ein bisschen,
da muss man an ganz vielen Stellen irgendwie rumtweaken und verliert
dann so ein bisschen die eigentliche Idee aus dem Auge.
Deswegen machen wir jetzt hier mal den mit den DFAs.
Da kann man ganz hübsch sehen, wie das funktioniert.
Und das andere können dann, wenn ihr das
gerne lesen wollt und ihr das im Skript mal nachlesen.
Beweisideee. Wenn ich einen Buchstaben im Automaten lese,
also DFA, ne, vollständige DFA, Zustand,
Buchstabe, den ich lese, Zustand.
Also von Z0 geht es nach A, Z1 oder so.
Von Z0 geht es über A nach Z1. Das hier,
wenn ich so eine Kante habe, ZAZ-Strich,
Das kann ich wunderschön als so eine Produktion hier ausdrücken.
Warum kann ich das machen? Ich merke mir quasi im
Non-Terminal, in welchem Zustand ich bin.
Bei einer rechtslinearen Grammatik gibt es auch immer nur genau ein Non-Terminal.
Es wird ja ein Non-Terminal ersetzt durch beliebig viele Terminalzeichen und ein Non-Terminal.
Und dann wird wieder das Non-Terminal ersetzt durch Terminalzeichen und ein Terminal.
Wenn ich Automaten eine Kante entlang gehe,
dann heißt das quasi, ich habe das A gelesen.
Naja, und bei der Grammatik heißt es jetzt,
ich habe das A generiert.
Ich habe das also quasi auch gelesen, in Anführungsstrichen,
und bin jetzt in dem neuen Zustand, beziehungsweise in dem neuen Non-Terminal.
Und das kann ich immer so weitermachen und das,
worauf ich aufpassen muss, ist, das Ding hier,
das Non-Terminal löschen,
das darf ich dann nur,
wenn der Automat im Endzustand ist
Was dann gleichbedeutend damit, der automatisch im Endzustand,
sprich das Wort, was er bisher gelesen hat,
akzeptiert er. Und in der Grammatik würde das bedeuten,
ich will das neuen Terminal weghaben, damit ich eben Wort habe,
was nur das Terminalzeichen besteht und was ich dann akzeptieren will.
Und das ist im Grunde genommen schon die ganze Idee.
Andersrum geht es dann auch,
weil wenn ich so eine rechtslineare Grammatik habe,
dann sehen alle Produktionen ja auch so aus.
Also von großartig geht es nach kleiner Großb oder so.
Und dann kann ich mir quasi für alle Non-Terminale einfach Zustände einführen.
Und das, was bei der rechtslinearen Grammatik hier die Terminalzeichen sind,
da schreibe ich mir an die Kante und dann bin ich
auch fertig.
Von regulär zur Grammatik. Wenn ich so ein DFA habe hier,
der eben die Sprache eher akzeptiert,
dann definiere ich mir jetzt eine rechtsliniale Grammatik.
Und zwar mache ich das wie folgt. Für jeden Zustand
Z führe ich mir das Non-Terminal Set in eckigen Klammern ein.
Das ist jetzt ein Symbol. Das Terminal-Alphabet ist gerade das Eingabealphabet des Automaten.
Startzustand wird das Non-Terminal-Zeichen, was eben aus dem Staatszustand hervorgegangen ist.
Und jetzt kommen die Produktionen. Und die hier,
das ist die erste, das ist die,
über die wir schon geredet haben,
wenn ich eben irgendwie eine Kante habe von Z,
geht es über Lesen von A nach Z-Strich.
Dann führe ich mir eben die Produktion ein,
das Non-Terminal-Z ersetze ich durch
Ja, und dann muss ich eben darauf aufpassen,
wenn ich eben eine Kante habe,
die in einen Endzustand führt, ZAZ-Strich,
wobei ZZ-Strich jetzt ein Endzustand ist, dann führe ich einmal,
weil das ist ja weiterhin eine Kante,
einmal mache ich weiterhin das, was hier oben schon gemacht wurde,
weil vielleicht kann ich den Endzustand ja wieder verlassen und weiterarbeiten.
Und ich mache es aber auch so,
weil vielleicht will ich das gar nicht, sondern will da aufhören.
Das Wort wird ja dann ja akzeptiert, wenn es da zu Ende ist.
Also führe ich mir zusätzlich noch diese Kante ein,
die Z von Z direkt nach A geht. Dann wird eben,
anders als wie ich das eben gemeint habe,
eben hatte ich gesagt, irgendwie Z-Strich muss auf Landa gehen,
da kann man auch machen,
aber so klappt es dann eben auch,
dass ich von Z zu A gehe,
jetzt besteht das Wort nur noch aus Terminalzeichen und ich bin
fertig,
ganz generiert
Und als Sonderfall, wenn Z0 eben Endzustand ist,
dann kann auch das leere Wort akzeptiert werden vom Automaten.
Also muss das auch generiert werden können.
Also mache ich mir Startprodukt, Staatssymbol gibt nach Lamda.
Fertig. Das ist schon die ganze Grammatik.
Oben stehen nochmal die Produktion, weil das das Wichtigste ist.
Und jetzt kann man sich halt überlegen,
wenn es eine Erfolgsrechnung in A1 gibt,
dann geht die irgendwie eine bestimmte Anzahl von Kanten entlang.
Ennen viele in dem Beispiel. Und dann kann ich aber
genau die diesen Kanten entsprechenden Regeln benutzen
Von Z.0 geht es nach X-1, Z1. Wenn ich dann
die nächste Regel da benutze, dann geht es da eben,
dann bin ich bei X-1, X-2, Z2 und immer so weiter.
Und als letztes, wenn ich hier diese Kante nehme im Automaten,
da nehme ich jetzt eben nicht die Produktion Z-I-1,
X-N-Z-N, sondern ich benutze die Produktion,
die hier nach X-N abbildet und dann bin ich fertig.
Genau. Umgekehrt geht das auch. Also wenn ich so eine Ableitung habe,
dann gibt es auch immer eine Erfolgsrechnung,
weil ich einfach all die Produktion, die ich benutze,
die nehme ich als Kanten im Automaten.
Und dann habe ich insgesamt,
dass die Grammatik und der Automat die gleiche Sprache akzeptieren
bzw. generieren
Rückrichtung, wenn ich eine Grammatik habe und ich will dazu einen Automaten generieren,
basteln, jetzt habe ich eine rechtslineare Grammatik,
jetzt definiere ich mir einen NFA, in dem ich sage,
für jedes Non-Terminal aus der Grammatik führe ich mir einen Zustand ZA ein,
und dann zusätzliche Weihnachtszeit Lamdam, Eingabealphabet sind die Terminalzeichen,
Startmenge ist gerade die Menge, wo eben der Zustand drin ist,
der aus dem Startsymbol hervorgegangen ist, Endmenge sind die,
ist der Zustand hier Zepp Lamda,
den ich mir extra eingeführt habe, und jetzt sage ich,
jetzt führe ich mir noch hier diese Kantenmenge ein,
und zwar führe ich mir ein,
für je zwei Non-Terminale Q&R mit der Eigenschaft,
das QU-U-R-Ebene Produktion ist, Rechtslinie haben.
Für die führe ich mir so eine Kante, ein Set,
Q geht überlesen von um nach ZR und dann führe ich mir
eben noch für diese Produktion von Q geht es direkt nach U,
das sind die Produktionen, wo die Satzform dann quasi abbricht,
also wo das Generieren in der Grammatik abbricht,
weil ich jetzt rechts keinen Non-Termin an mir habe.
Für die führe ich mir noch Produktion ein,
dass ich von ZQ durchlesen von U direkt nach Zepp Lambda komme und da eben akzeptiere.
Dann kann man wieder ganz schnell zeigen, dass alles,
was in der Grammatik generiert wird,
auf dem Automaten akzeptiert wird und andersrum und dann ist man fertig.
An welcher Stelle klappt das gerade nicht
Das macht immer richtig Spaß, so fünf Minuten vor Ende.
Leute so vollknallen mit mathematischen Notationen und Fehler einbauen.
Da ist eigentlich kein Fehler drin, aber da steckt was
drin, was wir bisher noch nicht gemacht haben.
Wenn ihr euch die Kantenmenge K anguckt, erste oder zweite
Zeile ist eigentlich egal, dann nehmen wir mal die erste Zeile.
Was passiert da mit den Kanten,
was wir eigentlich bei den LFAs noch nicht hatten?
Wie sehen die Kanten da aus?
Anders als was wir
bisher erlaubt haben
Genau. Hier an der Stelle, dass U,
also hier bei den Produktionen wird gesagt, ich komme vom Non-Terminal
Kuh zu der Zeichen von mir UR,
wobei U eben aus beliebig vielen Terminalzeichen bestehen darf.
Das heißt, hier die Kante geht von Zustand ZQ
zum Zustand ZR und liest das mehr als,
also das Unkanon aus mehr als einem Buchstaben bestehen.
Also liest das Wort, uh, das ist okay,
das kann man so machen. Also man kann ja
den NFA so einführen, dass er das machen kann.
Wer sich daran stört, guckt sich eben an,
wie viele Buchstaben hat U und führt sich dann von ZQ
nach ZR genau so viele Zwischenzwischenzustände ein und über die
wird dann eben alle gegangen
Und die Zustände sind sonst mit nichts verbunden,
sondern die sind nur für dieses Wort da. Sprich,
ihr macht aus dem, was sonst ein Pfeil ist,
macht ihr halt einen Fall mit mehreren Zwischenzuständen und fertig ist.
Das klappt also auch. Da steht es nochmal als Hinweis. Wer sich hier daran stört,
dass mir als ein Buchstabe an der Kante steht,
der kann auch Zwischenzustände für die einzelnen Buchstaben des Wortes einführen.
Das war das. Was haben wir insgesamt gemacht?
Achso, Entschuldigung, andersrum. Jetzt haben wir bewiesen,
dass zu jeder regulären Sprache ist eben dieser Typ 3-Grammatik gibt und andersrum.
Und was man auch zeigen kann, ist,
wenn eine Sprache kontextfrei ist, dann gibt es einen PDA,
der diese Sprache mit Leam Keller akzeptiert.
Umfangreicher ähnliche Idee, man muss halt nur irgendwie gucken,
dass man anständig mit dem Keller arbeitet,
dass wir auf den Keller werden,
dann quasi immer die linken Seiten der Produktion geschrieben und dann kann man die nach und nach abarbeiten.
Findet ihr im Buch von Hauptcraft Ulman da, Madvanni oder eben auch im Skript?
Wollte ich jetzt in der Vorlesung nicht im Detail machen.
Also was wichtig ist, ist, dass ihr wisst,
dass es zu den regulären Sprachen auch die regulären Grammatiken gibt und
dass es zu den PDAs auch die kontextfreien Grammatiken gibt,
aber wie der Beweis genau funktioniert,
das braucht ihr jetzt nicht wissen.
Schön, dass ihr wisst, dass es das gibt.
Wen es interessiert, kann es sich auch angucken,
ist auch schick, aber führt dann vielleicht
ein bisschen zu weit
Und noch als letzte Anmerkung, hier steht mit Lea im Keller.
Wir hatten ja vorher schon mit Lea im Keller und mit Endzustand
ist Äquivalent. Also die obige Aussage da,
die gilt auch für PDAs, die mit Endzustand akzeptieren.
Wichtig aber, das Modell hier, also dieser PDA,
ist in jedem Fall nicht deterministisch. Also egal,
ob ihr mit Endzustand akzeptiert oder mit Lea im Keller,
das ist ein nicht deterministisches Automatenmodell.
Also bei dem regulären Sprachen können wir sagen, DFA,
NFA, reguläre Ausdrücke und Typ 3-Grammatiken.
Macht alles das Gleiche, ist alles für die gleiche Sprachfamilie.
Bei PDAs können wir nur sagen, nicht die deterministischen Modelle.
Also PDAs mit Lea im Keller, PDAs mit Endzustand und kontextfreie Grammatiken.
Die erzeugen die gleiche Sprachfamilie, aber deterministische Kellerautomaten,
die machen noch eine andere Sprachfamilie.
Die machen wir auch nicht mehr im Detail,
aber die machen noch was anderes. Gut, Zusammenfassung,
Sprache ist regulär, wenn es die Rechtsliga gibt.
Mathekiebsprache ist kontextfrei, wenn es mit Leer im Keller gibt.
Fragen? Ich habe doch noch zehn Minuten.
Ich kann auch Babyfotos zeigen oder so. Guck mal,
mein letzter Urlaub. Ah, nee, das wird langzugehen.
Gut, fragen noch
So, was? Zu den Kellerautomaten, ja.
Wenn ich das richtig verstanden habe, war die Frage,
ob wir die Lamda-Kante jedes Mal gehen, wenn sie da ist.
Nee, so wie beim NFA auch.
Du kannst sie entlang gehen, musst aber nicht.
Also es ist ja nicht die terministisches Modell. Wichtig ist nur,
dass es für das Akzeptieren jetzt wichtig ist,
nur dass es eine Rechnung gibt, bei der das Wort akzeptiert wird,
dass es vielleicht noch andere gibt oder welche,
wo es nicht akzeptiert wird, ist nicht wichtig.
Ja. Alles klar. Dann bis morgen 8 Uhr,
Feierabend, heute