Wollen wir? Eine Dienstagmorgen-Vorlesung. Gestern, Kontextfreigrammatiken haben wir eingeführt. Und genau,
im Kontext Frank Ramatiken eingeführt und wir haben am Ende noch gezeigt,
dass die,
wenn man die noch weiter einschränkt und man dann bei diesen rechtsliniaren Grammatiken ist,
dass das dann das Gleiche ist wie reguläre Automaten.
Und ich habe zumindest erwähnt, dass man eben kontextfreie Grammatiken und PDAs,
dass die auch äquivalent sind, dass man das auch zeigen kann.
Haben wir nicht im Detail gemacht,
aber dass man das eben weiß,
dass es also diese Brücke gibt zwischen Grammatiken und Automatenmodellen
Was ja erstmal recht unterschiedlich aussieht und dann können die aber
eben doch irgendwie das Gleiche.
Erst mal kurze Wiederholung für heute und dann machen wir drei neue Sachen.
Einmal die Definition der Grammatik, dass wir gesagt haben,
wir haben dieses endliche Alphabet von Non-Terminalen.
Das sind immer die Zeichen, aus denen man nachher weiter ableiten kann.
Also wo man wieder irgendwie Ersetzungen vornehmen kann.
Und das Ziel ist es eben immer,
zu einem Wort zu kommen, das nur noch aus Terminalzeichen besteht.
Deswegen auch das Terminalalphabet. Dann hat man das Staatssymbol,
bei dem geht es immer mal los bei jeder Ableitung und
dann eben wichtig, diese Definition für die Produktion oder Regeln
Und wenn man das ganz generell hält,
wie bei der Grammatik hier, dann ist eben nur wichtig,
dass auf der linken Seite der Produktion irgendwie mindestens ein Non-Terminal steht.
Wie der insgesamt aussieht, ist egal,
mindestens ein Non-Terminal muss dabei sein und die rechte Seite,
da ist ganz egal, das dürfen einfach irgendwelche Symbole sein.
Und wenn man dann eben die linke Seite irgendwie findet in seiner bisherigen Satzform,
dann darf man die durch die rechte Seite so einer Regel ersetzen.
Und so definiert es die Grammatik eben ziemlich mächtig und auch relativ schwierig zu benutzen.
Und dann hat man sich diese kontextfreien Grammatiken eingeführt,
da ist fast alles genauso definiert,
der einzige Unterschied ist eben hier bei den Produktionen,
wo gesagt wird,
auf der linken Seite der Produktion
steht genau ein Non-Terminal
Deswegen kontextfrei, weil man dieses Non-Terminal dann unabhängig von dem Kontext,
in dem es steht, also unabhängig davon,
was links und rechts von dem Non-Terminal steht, kann man das dann ersetzen.
Genau, und die sind eben genauso mächtig wie Kellerautomaten.
Bei den ursprünglichen Grammatiken, die werden genauso mächtig sein wie das mächtigste Automatenmodell,
was wir noch kennenlernen, aber das kommt dann später.
Jetzt erstmal Kontextfreigrammatiken, dann die einschrittige Ableitung formal,
wenn man irgendwie von einem U durch Anwendung der Regeln in der Grammatik G zu V kommen will,
dann ist das eben so definiert, dass man sagt,
uh, muss ich darstellen lassen, als U1 WLU2,
wobei U1 und U2 irgendwelche Wörter sind,
die sich dann eben nicht ändern und WL ist eben
der linke Teil einer Regel
Und dann muss V eben auch wieder aussehen wie U1,
WRU2, das heißt das U1,
U2 stehen geblieben und das VL wurde eben durch WR ersetzt.
Also genau durch die rechte Seite der Regel. Das wäre
dann eine einschrittige Ableitung, also eine Regel einmal angewendet,
mehr schrittige Ableitung symbolisiert durch so einen Stern hier oben über dem Pfeil,
da benutzt man eben mehrere Ableitungen hintereinander. Genau,
das ist das, da nochmal, was man macht,
wenn man einen Ableitungsschritt machen will, dann betrachtet das Wort, guckt,
ob da irgendwo eine linke Seite auftritt von der Regel, falls ja,
kann ich mir eine von diesen Regeln aussuchen und dann eben diese linke Seite durch die rechte Seite ersetzen.
Beispiel, Die Grammatik da unten hatten wir gestern noch einmal
kurz in der Tafel. Am Anfang kann ich es entweder
durch XY ersetzen oder eben durch das leere Wort.
Das sind zwei Regeln. Dann gibt es zwei weitere Regeln mit
einer neuen linken Seite. X ist jetzt die linke Seite
und dann kann ich das X ersetzen durch AXB oder eben durch AB.
Und dann gibt es noch, wenn das Y-Link steht,
die Möglichkeit Y durch CY oder durch das kleine C zu ersetzen.
Und die Idee ist eben, am Anfang teile ich das
S sozusagen auf in zwei neue Symbole, X und Y.
Aus dem X kann ich jetzt durch Anwendung der beiden Produktionsregeln für XA hoch
NB hoch N machen. Und aus dem Y kann ich
durch Anwendung der Regeln für das Y C hoch M machen.
Und dann kann ich eben irgendwie auch in BON C
hoch M machen als Wörter
Um. Da soll ein Beispiel,
Ableitung von S zu XY, dann wurde das X ersetzt,
dann das Y durch CY, dann nochmal das Y durch CY,
dann das X durch AB und dann das Y zuletzt durch C und dann hat man A Quadratb
Quadrat und C hoch 3. Und da auch nochmal so,
also hier bei den einzelnen Schritten kann man sehen,
dass man eben auch das Non-Terminal, was man jetzt ersetzen will,
das kann man immer völlig beliebig wählen.
Also es muss nicht, dass am weitesten Linksstehende sein oder
dass man weit ist und rechts stehen oder so,
sondern das kann man ganz beliebig machen.
Und die Regeln, die man benutzt, kann man eben auch beliebig machen.
Also ob man X durch AXB ersetzt oder durch AB,
bleibt man auch überlassen.
Ergibt dann unter Umständen
unterschiedliche Worte
Das ist eine Ableitung. Und wenn man sich eben alle Ableitungen anguckt,
mit denen man von S aus zu einem Wort,
wie kommt das nur noch aus Terminalzeichen besteht,
all die Wörter packt man in eine Menge.
Das ist die von der Grammatik erzeugte Sprache.
Und wenn man sich jetzt eben auf Kontextfreisprachen,
kontextfreie Grammatiken erstmal einschränkt, dann nennt man all die Sprachen,
die man damit generieren kann, eben kontextfreie Sprachen.
Und die Familie ist dann eben die Familie der kontextfreien Sprachen.
Und das ist die gleiche Sprachfamilie wie die,
die man durch PDAs kriegt. Also alle Sprachen,
die vom PDA akzeptiert werden,
wenn man die alle in der Familie tut,
hat man
die Familie der Kontextfreien Sprachen
Genau. Dann hatten wir Grammatiken konstruiert. Dann gab es diese zwei Möglichkeiten erstmal,
dass man eben entweder so eine Zeichenkette sequenziell aufbaut,
von links nach rechts gelesen oder von rechts nach links,
also dass man solche Regeln hier hat und dadurch eben immer längere Ketten von Ars kriegt.
Oder dass man so wie hier im zweiten Teil das Non-Terminal
irgendwie in die Mitte schreibt und dann wächst eben links und
rechts von diesem Non-Terminal ein Textblock möglicherweise gleich,
so wie auch in Biorin oder sowas.
Oder A, auch NB hoch 2N kriegt man damit auch hin oder so.
Und dann hat man hier immer zwei Bs stehen.
Gut, das, achso, genau das noch.
Jetzt konnte man die Grammatik noch weiter einschränken, dass man gesagt hat,
ich nehme jetzt eine kontextfreie Grammatik schränken noch die rechten Seiten der Produktion ein.
Da stand ja bisher einfach nur V-Stern. Und jetzt sagt man,
die rechten Seiten der Produktion müssen jetzt so aussehen,
entweder ein Wort, das nur aus Terminalzeichen besteht,
also aus VT-Stern oder ein Wort,
wo genau links das Non-Terminal steht und dann so eine Zeichenkette von Terminalen kommt,
dass wenn man links linear oder eben genau rechts das eine Non-Terminal steht und dann eine Kette von Terminalzeichen davor.
Sprich, die rechte Seite ist so eingeschränkt, es gibt dann
nur noch genau ein Non-Termin, also null oder ein Non-Terminalzeichen.
Und wenn es einen neuen Terminalzeichen gibt, dann steht das entweder ganz links,
dann nennt man die Grammatik-Linkslinie oder ganz rechts, dann nennt man die Grammatik Rechtslinie.
Und für die haben wir eben gezeigt,
dass die genauso mächtig sind wie DFAs oder NFAs,
sprich, die erfassen gerade die Sprachfamilie der regulären Sprachen.
Also eine Sprache ist regulär, genau dann, wenn es
so eine Grammatik da oben gibt, die sie generiert.
Das haben wir gestern noch bewiesen und dann habe ich nur gesagt,
dass man das eben auch für kontextfreie Grammatiken machen kann und eine Sprache ist eben an Kontext,
genau deinem Kontext frei, wenn es eine Kontextfreie Grammatik gibt,
die sie generiert oder eben,
wenn es ein PDA mit Lea im Keller gibt,
der die Sprache akzeptiert oder mit Endzustand akzeptieren.
So, das war das, was wir
gestern alles gemacht haben
Da noch die Definition, die wir da so hatten,
alles, was eben mal fast alles,
was ich eben erzählt habe,
das mit dem Landerproduktion und Landerfrei, habe ich nicht erzählt,
eine Landerproduktion war eine Produktion von einem Non-Terminalzeichen nach Lander,
also A nach Lander ist eine Landerproduktion, Landerfrei ist eine Grammatik,
wenn sie solche Produktionen eben nicht enthält.
Und da drunter noch die beiden Resultate.
Fragen bis dahin. Ist das alles soweit klar
Wenn man Grammatiken so benutzt und so, okay.
Dann hatten wir ja bei DFAs. Hatten wir bei DFAs Abschlusseigenschaften,
dass wir gesagt haben, wenn ich zwei reguläre Sprachen nehme,
dann ist auch die Vereinigung wieder regulär oder der Durchschnitt oder
die Sprache hoch plus oder Hochstern und sowas.
Das hatten wir alles gemacht. Da gab es bei den,
oder das mit dem Kompliment,
da gab es beim DFA zum Beispiel einmal den Komplimentautomaten,
mit denen man das nachweisen konnte oder den Produktautomaten,
mit denen man das für einen Durchschnitt nachweisen konnte.
Und die Frage kann man sich jetzt bei kontextfreien Sprachen
auch wiederstellen. Sprich, wir geben zwei kontextfreie Sprachen,
ist die Vereinigung wieder kontextfrei,
ist der Durchschnitt wieder kontextfrei,
ist die Konkretation
wieder kontextfrei und so weiter
Also gegen was für Operationen ist die Sprachfamilie der kontextfreien Sprachen abgeschlossen und gegen welches sie nicht abgeschlossen.
David behauptet, sie ist abgeschlossen gegenüber Vereinigung,
Punkt und Stern, also Vereinigung Konkordination und Sternen.
Kann man ganz schick mit Grammatik machen, gegeben,
zwei kontextfreie Grammatiken, G1 und G2. Ist jetzt die Frage,
wie konstruiere ich mir jetzt eine Grammatik,
sodass ich eine neue Grammatik habe für die Sprache L1,
vereinigt L2 oder L1,
konkordiniert mit L2 oder eben L1 Sternen.
Nutzen wir mal
die Frische am Dienstagmorgen
Produktion ist gut, jetzt hast du also,
er wollte die Produktion vereinigen, das ist gut.
Weil die brauchen wir alle wieder für die Vereinigung.
Was willst du hinzufügen
Warte, warte. Also du willst jetzt die Vereinigung machen.
Okay. Welche Produktion fügst du hinzu? Welche Produktion fügst du
jetzt hinzu? Ja, genau, und welche noch?
Ja, genau. Von S3 geht es nach S1 oder
von S3 geht es nach S2, die beiden Produktionen.
Genau, genau. Jetzt kann ich,
also ich fühle mir ein neues Staatssymbol,
S3 ein und von dem kann ich entweder zu dem alten Staatssymbol
der ersten Grammatik oder zu dem alten Staatssymbol der zweiten Grammatik und vor da kann ich ganz normal weitermachen.
Dann kann ich halt alle Worte ableiten,
die ich vorher auch ableiten konnte
Dass wir für die Vereinigung und für Konkrete Nation?
Ja, genau. Einfach zu S1S2, also neue Startsymbol S4,
von dem aus komme ich zuerst 1S2. Und dann kann ich
eben von dem so ähnlich wie eben auch von S zu XY,
da gehe ich jetzt zuerst 1S2,
von dem S1 kann ich irgendwie ein Wort aus der ersten Sprache ableiten.
Von dem S2 kann ich Wort aus der zweiten Sprache ableiten,
dann habe ich insgesamt eins aus L1.L2 abgeleitet.
Und Stern
Ja, genau. Und dann kann ich wieder so
eine Kette hinkriegen, ne? Also für die erste,
was er eben auch meinte, ich vereinige die beiden Produktionsmengen
auf jeden Fall, die würde ich immer haben.
Und dann habe ich mir ein neues Staatssymbol S3 eingeführt und
von S3 geht es jetzt eben entweder zu S1 oder von S3 geht es zu S2.
Dann ist quasi mein erster Schritt ist, wenn ich ableiten will,
muss ich als erstes eine von diesen beiden Produktionen nehmen,
S3 nach S1 oder S3 nach S2.
Und danach kann ich so weitermachen wie bisher und von S1
ging es ja nur zu irgendwie Wörtern,
die in LG1 drin sind und von S2 ging es nur zu Wörtern,
die in LG2 drin sind.
Und dann habe ich
genau die Vereinigung
Bei der Konkurrenation sieht es eh nicht aus,
da geht es von dem neuen Staatssymbol S4 zu S1, Punkt S2.
Und bei der Sternbildung geht es von S5 zu S1 S5
oder zu Lamda. Und dann kann ich eben erst
mal so viele S1 erzeugen, wie ich haben möchte.
Und von jedem kann ich dann eben ein Wort aus L1 erzeugen.
Fertig. Oder ich kann eben auch ganz am Anfang gar nichts erzeugen.
Dann habe ich eben das leere Wort erzeugt. Das sind die drei,
jetzt müsste man streng genommen das formal noch zeigen,
dass das wirklich stimmt,
aber mit der Argumentation eben ist das relativ klar,
wie man
das machen kann
Und dann hat man eben tatsächlich diese Gleichheiten hier alle.
Und dann weiß man, okay, die Familie ist abgeschlossen.
Die Familie der Kontextfreien Sprachen ist abgeschlossen gegenüber Vereinigungen,
Konkretinationen und Sternenbildung. Also müsste man noch zeigen,
haben wir eben nur kurz mündlich gemacht, dass das stimmt.
Jetzt kann man sich überlegen, also da fehlt ja jetzt
noch so einiges, da fehlt Durchschnitt und Kompliment.
Da wird jetzt bautet, das ist nicht abgeschlossen gegenüber Durchschnitt,
ist nicht abgeschlossen gegenüber Kompliment und ist nicht abgeschlossen gegenüber Mengendifferenz.
Wenn man zeigen will, dass das nicht abgeschlossen ist,
muss man immer irgendwie ein Gegenbeispiel finden.
Also für den Durchschnitt wollte ich das einmal machen hier.
Jetzt muss man sich zwei Sprachen suchen,
die beide kontextfrei sind
Und zu einer Sprache hinkommen. Also dann steige ich die beiden
und dann muss ich zu einer Sprache hinkommen, die nicht kontextfrei ist.
Jetzt kennen wir noch gar keine Sprache, die nicht,
also zumindest haben wir noch für keine Sprache bewiesen,
dass sie nicht kontextfrei ist.
Wir haben aber gestern schon so die Vermutung gehabt,
dass A hoch NB hoch NC hoch N wohl nicht kontextfrei ist.
Nehmen wir mal an, dass das so ist.
Also wir arbeiten jetzt einfach mal da und das auch in
die Hoenzierung nicht kontextfrei ist.
Jetzt brauchen wir zwei kontextfreie Sprachen, die geschnitten,
A hoch NB hoch
NC-Orenner geben.
Ja. Also wir brauchen zwei kontextfreie Sprachen, sodass in beiden A hoch NBO,
NCO Rennen drin ist. Und wenn ich die schneide,
dann sollen eben nur diese Auch NBO-NCO Rennen übrig bleiben.
Und nicht das Überzählige. Beispielsweise es sind A-Stein-B-Stern-C-Sternen auch,
auch in Bio-Rennen drin, auch in Bio-NCORen,
aber halt noch viel, viel, viel mehr.
Den Kram will ich nachher alles raushaben. Hatten wir gestern,
ja, haben wir gestern schon gesehen,
die zwei Sprachen,
mit denen
man das machen kann
Ja, genau. Also wir hatten ja gestern,
oder auch vorhin in dem kleinen Beispiel bei der Ableitung,
Produktionen für sowas wie auch in BUNC hochM.
Und dann nehme ich die auch in BUNC hochM,
also wo ich gleich viele ASVBs habe und dann irgendwie beliebig
viele Cs, die ist kontextfrei.
Auch in Björn Ziehholm und dann nehme ich noch als zweites,
im Grunde genommen eine sehr, sehr ähnliche Sprache,
nur dass da jetzt die BS&Cs gleich viele sind und
vorneweg eben unterschiedlich viele As
Und wenn N&M aus den natürlichen Zahlen sind oder I und Cows,
die natürlichen Zahlen, es wird ja nicht ausgeschlossen,
dass N&M hier gleich ist oder dass I und K hier gleich ist.
Das heißt, in beiden Sprachen ist auch A hoch NB hoch NC hoch N drin.
Und in der ersten Sprache ist halt zusätzlich noch so was drin wie 3As,
3Bs gefolgt von, und jetzt eben 5Cs oder 6Cs oder sowas,
die sind aber alle nicht in der zweiten drin,
weil in der zweiten wird verlangt,
dass sich gleich viele BSVCs haben muss.
Das heißt, die fallen alle raus und in der zweiten
sind halt zusätzlich noch so Sprachwörter drin,
5As gefolgt von 3Bs und 3Cs und das fällt alles raus,
weil das in der ersten nicht drin ist.
Das heißt, das, was im Schnitt übrig bleibt,
ist tatsächlich gleich viele A ausgefolgt von gleich vielen Cs
Naja, und dann, wenn wir von der nachher noch zeigen,
dass die nicht kontextfrei ist, dann sind wir fertig,
weil wenn L1 und L2 kontextfrei sind,
der Schnitt aber nicht,
dann kann die Familie der kontextfreien Sprachen ihm nicht gegenüber dem Durchschnitt abgeschlossen sein.
Und dann folgt auch sofort, dass das Komplimentbildung nicht gehen kann,
weil wenn Komplimentbildung gehen würde, dann folgt eben mit dem Morgen,
dann habe ich Vereinigung und Komplimentbildung,
dann müssten sie auch gegenüber Schnitt abgeschlossen sein und Magendifferenz kriegt man dann auch raus.
Man kann aber auch für die anderen beiden noch weitere Gegenbeispiele
konstruieren, könnt ihr im Skript nachgucken.
Genau, das zu den Abschlusseigenschaften als Einstieg heute
Also, Vereinigung geht, Konkretenation geht und Sternbildung geht und
Hofplus geht auch und Schnitt, Komplimentbildung und Hängendifferenz geht eben nicht.
Und bei regulären Sprachen ging das ja alles.
Die waren gegenüber alles ab, gegenüber fast allen Operationen abgeschlossen.
Bitte? Ne, regulär ist, wenn du einen Automaten,
also einen DFA dafür angeben kannst.
Nur bei dieser Sprachfamilie gehen eben die Sprachfamilie jetzt gegen
ganz viel von diesen Operationen abgeschlossen.
Also gegen die, die da imstanden ist,
die Gegner alle abgeschlossen
Und die kontextfreien Sprache, die eben über die kontextfreien Grammatiken definiert sind,
also die Familie ist über die von den Grammatiken definiert oder eben über PDAs,
die sind eben gegenüber die drei Operationen zum Beispiel nicht abgeschlossen.
Man könnte jetzt auch, wenn man jetzt irgendwie ein neues Modell hat,
also was weiß ich,
ein DFA mit fünf Köpfen oder so und sagt,
so ist das jetzt eine neue Sprachfirmie oder nicht,
dann könnte man sich auch angucken,
gegen was die Sprachfamilie abgeschlossen ist und wenn man feststellt,
oh die ist nicht gegenüber Schnitt abgeschlossen,
dann kann die Sprachfirmie nicht regulär sein.
Sowas kann man auch machen
Nee, weil die Richtung nicht so geht.
Also die Richtung ist nicht, dass wenn eine Sprachfamilie
gegenüber abgeschlossen ist, dass die Sprachfamilie dann regulär ist.
Sondern die Richtung ist, wenn die Sprachfamilie regulär ist,
dann hast du die so und diese und diese Abschlusseigenschaften.
Ja. Ja. Ja. Ja, das stimmt,
genau. Aber für die Sprachfamilie, ne?
Nicht für eine reguläre Sprachfamilie, ja, okay.
Genau. So, Jumpsky Normalform. Was wir jetzt brauchen
Gleich bei verschiedenen Beweisen und so und Algorithmen ist eine Normalform für kontextfreie Grammatiken bisher sind,
die Produktionen ja nur so weit eingeschränkt,
dass wir gesagt haben, es gibt auf der linken Seite
immer genau ein Non-Terminal und die rechte Seite sieht dann wieder irgendwie beliebig aus.
Das stört bei vielen Beweisen, weil das so viel Beliebigkeit in Anführungsstrichen reinbringt.
Man möchte lieber eine Normalform, dass man weiß,
die rechten Seiten sehen auch immer so und so aus oder
ich kann zumindest jede kontextfreie Grammatik in so eine Form überführen.
Und eine sehr schöne Normalform ist die sogenannte Chomsky-Normalform,
die sieht so aus, dass gesagt wird,
wenn ich eine kontextfreie Grammatik habe,
dann ist die in Chomsky Normalform genau dann,
wenn alle Produktionen eine dieser beiden genannten Formen entsprechen.
Das heißt entweder, also links muss ja immer
ein Non-Terminal stehen, das ist sowieso klar.
Und die rechten Seiten sind jetzt wie folgt eingeschränkt.
Entweder genau zwei Non-Terminale oder genau ein Terminalzeichen. Wenn man das wüsste,
dass man jede kontextfreie Grammatik in diese Form überführen kann,
dann kann man nachher bei beweisen oder auch bei Algorithmen immer davon ausgehen,
dass die Grammatik, die man hat,
diese Form hat und damit lässt sich ziemlich bequem arbeiten nachher.
Ein Nachteil hat diese Form, was geht damit nicht?
Also da geht was ziemlich Elementares und nicht,
was nervt
Ja, vor allem, das Schlimme ist nicht, dass es keine Landerproduktion hat,
sondern das Schlimme ist, dass sich Lambda nicht ableiten kann.
Also damit könnte ich nicht mal reguläre Sprachen hinkriegen,
in denen ja relativ häufig das leere Wort drin ist.
Deswegen führt man sich noch sowas ein, wie die erweiterte Chompsky-Normalform,
die steht jetzt hier. Die wichtige Aussage ist oben die erste,
wenn ich eine kontextfreie Gemeintik G habe,
dann kann ich eine kontextfreie Grammatik G Strich generieren,
die Äquivalent ist, sprich beide generieren die gleiche Sprache,
mit der zusätzlichen Eigenschaft G-Strich ist in Chompsky Normalform.
Und was wir eben halt hatten, bei Chompsky Normalform kann eben Lambda nie generiert werden,
das heißt, wir müssen das noch unterscheiden,
und zwar wird das so gemacht, dass man sagt,
wenn in G-Lam da gar nicht drin war,
Also in LG-Lamm da nicht drin war,
dann ist die Strichstunde in Trumpsky Normalform.
Und wenn das leere Wort in LG enthalten ist,
dann hat diese Grammatik gestrich eben die Lamda-Produktion vom Staatssymbol geht es nach Lamda.
Alle anderen Produktionen sind in Trumpsky Normalform und Essstrich kommt auf
keiner rechten Seite vor. Das hat den Vorteil,
dass man nicht irgendwann in der Ableitung später nochmal von Essstrich zu Lamda gehen kann,
sondern man kann das entweder nur ganz am Anfang machen,
um das leere Wort zu erzeugen.
Und danach geht es weiter. Also die Idee wäre,
dass man hier sagen kann, hier alle Regeln sind von
dieser Form
Nirgendwo auf der rechten Seite steht das Staatssymbol.
Und das Staatssymbol hat sozusagen die Möglichkeit,
entweder zu Landa zu gehen oder vielleicht zu dem eigentlichen Staatssymbol.
Und von da kann ich dann loslegen.
Dann ist es in der Weite der Jobsklimafilm.
Bitte? Ja, genau. Ja, was heißt ausschließen?
Da ist es nicht drin. Und um es wieder reinzukriegen,
sagt man, als ersten Schritt darf ich es machen.
Dann habe ich das leere Wort oder sonst mache ich
ganz normal weiter mit einer Tomskino im iPhone.
So. Das ist auch nicht, da kann man gleich einen Beweis sehen,
dass man das auch rauslesen kann, ob Landa erzeugt wird oder nicht.
Und wenn Landa eben erzeugt wird,
dann macht man eben genau diese Geschichte,
dass man einfach sagt, okay,
ich mache mir noch ein neues Staatssymbol vor und weg,
mit dem ich zu Landa gehen kann und fertig
Genau so. Und das wollen wir jetzt machen.
Also wir wollen einen Algorithmus angeben, mit dem wir jede
kontextfreie gemeinte G, eine kontextfreie Grammatik G-Strich überführen können,
die dann eben in Charmeski-Normalform ist.
Und später wollen wir dann damit arbeiten.
Aber erstmal müssen wir irgendwie wissen, wie man das macht.
Und das Problem ist eben, was kann man alles haben,
wenn man nur Regeln haben will, die so aussehen.
Dann kann man auf der rechten Seite eine Regel haben,
die aus, wo Terminalzeichen und Non-Terminalzeichen stehen.
Das ist schon mal doof. Da kann man sich vielleicht
überlegen, naja, wenn ich sowas habe,
wie groß A,
Dann mache ich aus dem kleinen A ein neues Non-Terminalzeichen,
das weiß ich, kleiner mit dem Kreis drüber oder so.
Und das leite ich nachher nur zu klein ab.
Dann habe ich schon mal auf der rechten Seite keine Terminalzeichen mehr, sondern nur ein Non-Terminalzeichen.
Dann kann noch auftreten, dass die Regel zu lang ist,
also dass ich sowas habe wie Großbier, Groß, C, Großdee.
Da haben wir uns überlegt, okay,
dann mache ich das so, dass ich aus dem Groß-B-Groß-C Ein-Nonn-Terminalzeichen mache,
von dem aus ich dann zu groß bin, Großsee gehen kann.
Und das Letzte, was auftreten kann,
ist, dass man sowas haben kann,
die sogenannte Kettenregeln von Groß AG zu GroßB. Und von GroßB geht es zu Groß C oder irgendwie sowas.
Das ist auch doof, da muss man dann irgendwie gucken,
dass man diese Kette rauskriegt und einfach direkt zu dem Ziel geht,
in Anführungsstrichen
Das sind ja auch schon so die Kernideen, die da
so drin rumflattern. Als erstes muss man aber dafür sorgen,
dass diese Landerproduktionen weg sind, die stören.
Und als zweites macht man quasi noch so einen Zwischenschritt,
bei dem man sich darum kümmert,
dass alle Non-Terminal auch irgendwie einen Sinn haben.
Stichwort produktiv und erreichbar, non-terminal ist produktiv,
wenn es auch wirklich irgendwie zu einem Terminalwort ableiten kann,
sonst brauche ich sie auch nicht.
Und erreichbar, wenn ich irgendwie vom Staatsymbol dahin kann,
sonst brauch ich es nämlich auch nicht.
Und die beiden will ich noch rausschmeißen.
Ich glaube, meine war dann nicht schlimm.
So, also erster Schritt,
Lander freimachen
Zweiter Schritt reduzieren, produktiv und erreichbar machen,
dritter Schritt Kettenregeln entfernen. Das war diese Geschichte mit A,
B, C, D. Ersetzt ein langer Terminalregeln,
wenn ich also irgendwie auf der rechten Seite eine zu lange Regel habe,
wo noch Terminalzeichen drinstehen.
Dann verkürzen zu lange Regeln. Und der sechste Schritt ist
eben für, wenn ursprünglich das Lamder generiert werden konnte.
Genau, jetzt gehen wir nach und nach alle diese sechs Schritte durch.
Ich zeige euch immer, wie die Konstruktion funktioniert und gebe
ein Beispiel. Wobei das Beispiel ist nicht kontinuierlich,
sondern es ist quasi zu jedem Schritt ein neues Beispiel.
Dass man in jedem Schritt einmal kurz sehen kann,
was so die Ideen sind
Und genau, die Beweise überspringe ich. Also die kann man
sich relativ schnell überlegen, dass das immer klappen muss.
Aber wir konzentrieren uns mal auf die Konstruktion.
Also Lamm da freimachen. Lamm da freimachen sieht eigentlich noch
am wildesten aus. Also man beginnt mit,
was man jetzt nicht mehr haben möchte,
ist Produktion der Art von S geht's nach Lamm da oder von A,
jetzt nach Lamm da oder so.
Das heißt, man bestimmt erstmal alle Non-Terminale,
mit denen man über beliebig viele Ableitungsschritte zum leeren Wort kommen kann.
Das macht man jetzt wie folgt,
dass man quasi auf den rechten Seiten anfängt und guckt,
steht da irgendwo
ein Lamm da
Und dann guckt man sich die linken Seiten an, also welche Non-Terminale führen direkt zu Lamda.
Die packt man sich alle eine Menge M0. Sprich,
ich gehe einmal durch alle Regeln durch, gucke,
weil ich so eine Lamda-Produktion, dann nehme ich mir die linke Seite.
Als nächstes guckt man jetzt, jetzt hat man ja zum Beispiel,
dass ich von A zu Lamda komme und von D zu Lamda komme.
Wenn ich jetzt irgendwo eine Regel habe,
wo auf der rechten Seite nur A und D vorkommt,
dann kann ich davon ja auch wieder zu Lamda kommen,
nämlich erst zu AD gehe und dann von A,
die zu Lamda gehe und von dir zu Lamda gehe.
Das ist das,
was hier jetzt im nächsten Schritt passiert,
dass man sagt, ich nehme ja all die Symbole,
die ich eben schon bestimmt hatte,
also alles aus MI und dann nehme ich mir noch alle neuen Non-Terminale hinzu,
für die irgendwie ein Wort existiert,
was nur aus Symbolen aus MI besteht,
sodass ich von A
zu W komme
Weil dann, ne, die Symbole in der MI,
die gehen ja schon zu Lamda,
also von denen kann ich nach Lamda ableiten,
also kann ich mit einem Non-Terminal, das zu einem Wort geht,
das nur aus Symbolen aus der MI besteht,
kann ich dann eben auch nur zu Lamda,
kann ich dann auch zusammen.
Und das mache ich dann sukzessive weiter. Und irgendwann gibt
es eben so einen Index K mit der Eigenschaft,
das MK gleich MK plus 1 ist, den muss es geben,
weil ich ja hier immer nur neue Non-Terminale dazu nehme.
Und die Menge der Non-Terminale ist endlich,
also muss das irgendwann mal aufhören mit dem wachsen.
Im schlimmsten Fall kriege ich alle Non-Terminale,
aber irgendwann muss das mal aufhören
Das ist noch relativ okay, was jetzt ein bisschen wild aussieht, ist das mit der Substitution? Ja,
die definieren wir uns jetzt so, dass wir sagen,
wenn wir, also dieses MK, das haben wir jetzt Frau Lamda genannt,
wenn wir jetzt ein Non-Terminal haben, das da nicht drin ist,
sprich mit dem ich nicht zum leeren Wort ableiten kann,
dann ist die Substitution dafür, dass A selbst,
also da soll sozusagen nichts passieren.
Und wenn ich aber ein Symbol habe,
das von dem, was ich zu Lande ableiten kann,
dann ist die Substitution eben entweder A wieder oder eben das leere Symbol.
Die Idee ist, dass man jetzt auf alle Produktionen
diese Substitution anwendet und quasi immer auswählen kann,
ob man dieses Non-Terminal von dem aus ist,
zum leeren Wort gehen kann, ob man das löscht oder nicht aus der Produktion.
Ergo, neue Grammatik soll so entstehen, dass wir sagen,
wir nehmen all die Produktion jetzt rein in unsere neue Grammatik,
bei denen die rechte Seite nicht das leere Wort ist.
Und genau, die gerechte Seite ist nicht das leere Wort sein und entsteht dadurch,
dass wir auf die rechte Seite einer ursprünglichen Produktion unserer Substitution
Beispiel, wenn ich die Grammatik da habe,
da oben durch die Regeln und ich gucke jetzt erstmal,
was sind die Non-Terminale von denen aus ich zusammen gehen kann.
Jetzt gucke ich mir erstmal an, was sind die Landerproduktionen.
Als erstes habe ich nur diese Landerproduktion von C zum leeren Wort.
Das heißt, das große C kommt nach M0 und jetzt
gucke ich als nächstes Schritt, wo gibt es rechte Seiten,
wo nur große Cs auftreten.
Beispielsweise geht es von dem A
hier zu CC
Und da ich schon weiß,
dass ich von C aus zum leeren Wort komme, kann ich jetzt schließen,
dass ich auch von A aus zum leeren Wort komme,
weil ich von A zu CC gehe und dann die beiden CSC Lamde ableiten kann.
Also komme ich auch von A zu Lamde. Also nehme
ich das dazu. Im nächsten Schritt würde ich gucken,
gibt es jetzt irgendwie linke Seiten, äh,
gibt es jetzt Produktion bei denen auf der rechten Seite, nur As und Cs vorkommen.
Dann kann ich die linke Seite wieder mit dazu nehmen. Wenn ich jetzt sowas hätte,
wie von B, geht es zu ACC, dann weiß ich,
okay, von B kann ich zu ACC gehen,
das A kann ich zu Lamde machen,
das C kann ich zusammen machen,
das C kann ich zu Lamde machen,
also kann ich auch das Bier zu Lamde machen.
Also würde ich das auch dazu nehmen. Und immer so
weiter, bis es halt aufhört. Hier hört es jetzt
schon auf, weil ich nirgendwo eine rechte Seite habe,
wo nur Cs und As vorkommen.
Das heißt, ich habe dieses M2
So, und jetzt Beispiel für die Anwendung der Substitution und jetzt eben,
das hat jetzt nichts mit dem oberen Beispiel zu tun,
wenn ich jetzt so ein Wort U habe,
auf das ich die Substitution anwenden will,
dann werden in U einige, inklusive alle oder keins,
Symbole aus Faulam da gestrichen.
Wenn ich beispielsweise, so wie um,
als V-Lammder A und C habe und ich wende jetzt die Substitution auf dieses XA,
B, C, Y an,
dann sollen da jetzt all die rechten Seiten rauskommen,
in denen ich das A und das C streiche oder eben nicht.
Das heißt, erstmal kommt das Wort selbst raus,
da habe ich A und C beide nicht gestrichen.
Dann kommt das Wort raus,
wo ich nur das Arsch reiche, das Wort raus,
wo ich nur das C-Streich und das Wort
raus,
wo ich beide streiche
All diese Substitutionen stehen da. Das heißt,
wenn ich eine Produktion habe, wo auf der rechten Seite dieses Wort steht,
X-A-B-C-Y, und ich habe als V-Lander AC bestimmt,
dann würde jetzt in die neue Produktionsmenge,
würden all die Produktionen reinkommen, wo linke Seite bleibt,
wie sie ist, und rechte Seite ist jetzt das Wort,
das Wort, das Wort und das Wort.
Also all diese Worte, die da in der Menge stehen.
Das ist das, was... Das ist das, was
hier steht. Ja, ich nehme mir eine Produktion,
die ich ursprünglich schon hatte. Und wenn auf dieses W,
meine Substitution, Sigma an, und das,
was da rauskommt,
das V,
das werden alles
die neuen rechten Seiten
Ausnahme, wenn da bei ein Lamm da entsteht,
weil Landerproduktion will ich ja gerade weg haben, deswegen sollen die nicht dazukommen.
Das passiert hier. Das passiert hier Schritt für Schritt. Das heißt,
wenn hier in dem unteren Beispiel, wenn hier,
wenn das X hier nicht stünde,
dann würde ich auch all die Worte hier kriegen bei der Substitution,
aber das leere Wort, also wenn das X da nicht da wäre,
dann wäre das letzte hier das leere Wort,
das würde ich eben nicht als neue rechte Seite einführen.
Weil dann führe ich ja gerade wieder in Landerproduktion, nein,
das will ich nicht machen. Und dann habe ich eine Grammatik erzeugt,
die Dann habe ich eine Grammatik erzeugt,
die fast die gleiche Sprache generiert, wie meine ursprüngliche,
mit dem Unterschied, dass das leere Wort nicht mehr drin ist.
Kann ich mir drin sein, ich habe ja keine Landerproduktion mehr.
Wenn das leere Wort also drin war,
dann muss ich nachher das wieder irgendwie dazunehmen.
Aus dem Schritt hier kann man rauslesen,
ob die Grammatik G das leere Wort generieren kann oder nicht.
Stopp, meinst du die Produktion um? Ja,
du meinst Produktion um, dass ich von A zu B
gehen kann. Ja, okay, ja. Ne,
also enthalten sein und so macht ja keinen Sinn,
das sind ja nur Non-Terminale.
Also ich kann das neun Terminal A
durch das neun Terminal B ersetzen.
Das sagt die Regel
Warte, warte, warte, das oben hat nichts damit,
also das Obere und das Unterarm nichts miteinander zu tun, ne?
Oben ist ein Beispiel für Produktionen und wie bestimme ich das V-Lamm da?
Und unten ist ein Beispiel für, wie würde ich eine Substitution anwenden?
Nur bei dem Oberen würde man jetzt, also bei dem Oberen
hätte man jetzt diese Menge V-Lamm da bestimmt, daraus ergibt sich die Substitution.
Und jetzt würde man nach und nach die Substitution darauf anwenden.
Jetzt würde man aus dem hier Aus der Produktion her,
das ist von B nach XC geht, daraus wird die Produktion,
dass es von B nach XC geht, die bleibt und die Produktion,
dass es von B nach X geht, weil ich das zäh streiche.
Und die Produktion hier von B geht es nach ACX,
da kann ich das A oder das A und oder das C streichen,
also kriege ich da die Produktion raus,
von B geht es nach ACX,
von B geht es nach CX,
von B geht es nach AX und von B geht es nach X.
Von ACX kann es nirgendwo hingehen, wir haben ja eine,
oder meinst du jetzt mehrere Schritte?
Ja, Ja. Nee, das, was du machst,
ist, also erstmal bestimmst du diese Mengen im 0 M1 um 2.
So, jetzt hast du die. Jetzt weißt du,
alle Non-Terminale, von denen aus man durch beliebig viele Schritte
nach Lander kommen kann, das sind die Non-Terminale C&A.
Nur die beiden. Und jetzt geht man alle rechten Seiten
der Produktionen durch und guckt immer tritt dann C oder ein
A auf und falls ja, darf ich die rausnehmen.
Und dadurch entstehen neue Produktionen. Und dann gucke ich mir die Produktionen,
wie gesagt, dieses BXC an,
da steht das C auf der rechten Seite,
das heißt, einmal lösche ich es nicht und einmal lösche
ich es
Zwei Produktionen, die ich immer in eine neue Grammatik tue.
Dann gucke ich mir die Produktion B-A-C-X an.
Da darf ich das A und oder das C löschen.
Einmal lösche ich sie beide nicht. Einmal lösche ich
jeweils eins, einmal lösche ich sie beide.
Vier Produktionen tue ich alle meine neue Menge.
Und dann gucke ich mir noch A, B-A-C-C an.
Da kann ich das C eben löschen oder nicht.
Das heißt, da kriege ich die Produktion A nach C-C.
A nach C, oder das war's.
Weil A nach Lamm, da kriege ich nicht,
weil dann hätte ich wieder eine Lamm der Produktion eingeführt,
das will ich nicht.
Die würde ich alle kriegen. Und die hier,
die lösche ich auch, dieses C nach Lamm,
da lösche ich auch,
das will ich auch nicht mehr haben
Also wenn du irgendwann mal ACX stehen hast, so,
jetzt kannst du in den Ableitungen das A durch CC ersetzen.
In den Ableitungen. So, ja, kannst du machen.
Kannst aber auch immer noch machen. So, die Produktionen
bleiben ja. Nur du kannst eben auch von dem Ader
nur zu dem C gehen. Die Idee ist halt,
dass wenn du früher von A zu CC gehen konntest und von
dem C irgendwie zu Lamda, dann hättest du ja quasi,
wärst im Grunde genommen von dem A zu CC gegangen und von daher irgendwie zu zäh.
Und diesen Schritt, den willst du wieder machen können,
aber jetzt ohne Landerproduktion. Deswegen willst du jetzt irgendwie von A
direkt zu C gehen können. Genau, da nochmal,
wie gesagt, die Idee ist, ich bestimme diese Dinger hier,
oder da, diese M0 bis MK.
Irgendwann hört es auf, das ist mein Frau Lamder.
Und jetzt definiere ich mir eben mit diesem Frau Lamder
diese Substitution
Und die sagt eben,
wenn ein Non-Terminal nicht in dem Vorlamm da drin ist,
dann lass es so, wie es ist.
Und wenn es drin ist, dann kann man es
jetzt entweder stehen lassen oder man löscht es.
Deswegen kann das entweder auf A bilden oder es auf Lamda bilden,
dann wird es gelöscht. Und die neuen Produktionen stehen dann dadurch,
dass ich mir, wie gesagt, die rechten Seiten angucke,
die Ws und auf die eben die Substitution anwende.
Und dann gucke ich immer, was entsteht da alles?
Und all das werden neue Produktionen. Außer eben,
wenn da das leere Wort entsteht.
Noch Fragen dazu?
Auch klar, ja
Achso, das wollte ich noch fragen. Wo kann man denn jetzt
hier rauslesen? Also hier steht ja jetzt die neu generierte Grammatik,
ist von der Sprache gerade die alte, aber ohne das Lamda.
Dass das Lamda nicht mehr drin ist,
ist irgendwie klar, weil ich habe keine Lamda-Produktion mehr.
Aber wo in dem Verfahren kann ich denn jetzt rauslesen,
ob früher das Lamda in der Grammatik drin war oder nicht?
Also wo kann ich rauslesen, ob Lamda in LG
enthalten ist oder nicht?
Wo kann man
das machen
Ja, genau. Wenn die einzige Möglichkeit,
dass Lamda in LG drin ist, ist ja,
dass es eine Ableitung zu Lamda gibt.
Also es gibt irgendwie eine Ableitungsfolge, die mir,
von der ich von S aus zu Lamda komme,
vom Staatsunboden muss ich irgendwie zu Lamda kommen,
sonst ist Lamda nicht in LG drin.
Das ist die Definition vom generierten Wort. Und das fange ich,
versuche ich ja aber gerade hier oben auch zu ermitteln.
Ich bestimme alle Non-Terminale, mit dem ich von diesen Non-Terminalen
eben durch beliebig viele Schritte zum leeren Wort komme.
Und wenn S also in dieser Menge drin ist,
bedeutet das, dass ich von S aus zu Lamda gehe,
also ist Lamda in LG drin.
Das heißt, ich kann nachher überprüfen,
ob Lamda in LG drin ist oder nicht
Muss einfach nur gucken, war es in dieser Menge Frau Lamda drin,
wenn ja, ist Lamda in der LG drin, wenn nein, nicht.
Und dann kam ich eben nachher im sechsten Schritt,
kann ich im sechsten Schritt gucken, ob ich eine Trumpsky-Nomalform
nur brauche oder ob ich diese erweiterte Trumpsky-Nomalform brauche.
Bitte? Ja, wenn das S enthalten ist,
genau, was du eben ja schon meintest,
dann kann ich das Lamda generieren und dann komme ich nachher nicht mit dieser Trumpsky-Nomalform aus im letzten Schritt,
sondern muss halt noch zu dieser weiteren Trumpsky Nomalform übergehen.
Also ein Neustartsymbol davor machen, mit dem ich zusammen gehen kann
Achso, das hatten wir. Genau,
man kann die Technik auch benutzen, um Lamda-Elemente aus LG
zu entscheiden, also zum Überprüfen, ob das gilt.
Da steht das im Grunde genommen schon, wie man das machen würde.
Lamda in LG gilt, wenn SNV Lamda ist.
Und wenn das eben so ist,
dann fügt man ein neues Startsymbol erst neu hinzu,
sowie die neuen Produktionen von erst neu jetzt nach Lamda und von
des Neugierds zu weh für jede Produktion essen nach wie.
Dann hat man eine Grammatik,
die nur eine Lamda-Produktion hat
Bitte? Ja, genau. So, jetzt kommt der Schritt mit dem Reduzieren.
Beim Reduzieren will man jetzt erreichen, dass in der Grammatik
quasi nichts unnützes dabei ist. Produktive Non-Terminale sind welche,
von denen aus man irgendwie zu einem Terminalwort kommen kann.
Da passt der Begriff produktiv auch irgendwie. Also die können ja
irgendwas tun oder irgendwas produzieren. Und erreichbar sind Non-Terminale dann,
wenn ich irgendwie vom Staatssymbol aus da hinkomme. Jetzt versucht man erstmal,
all die produktiven neuen Terminale zu bestimmen,
dann schmeißt man die nicht produktiven raus und dann bestimmt man alle erreichbaren,
schmeißt die nicht erreichbaren raus und dann hat man eine Grammatik,
bei der alle Regeln wirklich irgendwie einen Sinn ergeben.
Also bei dem man mit allen Regeln irgendwie was machen kann
Weil wenn ich so Produktionen habe wie von GroßA geht es nach GroßB und von GroßB
geht es nach GroßA und sonst habe ich nichts so,
dann bringen die beiden Produktionen da irgendwie nichts.
Da kann ich zwar A durch B setzen und B durch A,
aber da komme ich irgendwie nie zum Termin als Zeichen so.
Genau, den bringt das nichts. So,
was macht man, um die Produktiven zu bestimmen?
Das geht fast genauso wie eben. Eben haben wir ja,
sind wir bei dem Lamde angefangen, haben dann geguckt,
was steht alles auf der linken Seite.
Dann haben wir die Symbole alle in eine Menge getan und
dann haben wir danach geguckt, wo gibt es rechte Seiten,
wo nur diese Symbole auftreten und immer so weiter.
Das machen wir jetzt so ähnlich,
nur dass wir jetzt nicht bei der Menge M0,
die nur das leere Wort,
die nur die Symbole enthält,
die zum leeren Wort gehen,
sondern wir fangen mit M0
bei der Menge der Terminalzeichen an
Die Terminalzeichen sind, in Anführungsstrichen, produktiv. Es sind
eigentlich keine Non-Terminale und so, aber das sind die,
mit denen man, die schon beim Terminal Ward sind.
Und dann nimmt man all die Non-Terminale dazu in die Menge.
Also all die A aus VN, mit denen ich irgendwie
zu einem Wort komme, kann das nur als Terminalzeichen besteht.
Die nehme ich mir alle dazu. Das ist meine Menge M1.
Als Menge M2 nehme ich mir dann all die Non-Terminale dazu,
mit denen ich zu einem Wort kommen kann,
das nur aus Terminal-Zeichen besteht oder wo Non-Terminale drin sind,
aus dieser Menge M1.
Weil mit denen komme ich ja schon zu Terminalzeichen.
Dann mache ich das auch so sukzessive
so weiter
Muss auch irgendwann aufhören mit der gleichen Begründung wie eben.
Hier kommen ja immer Non-Terminale dazu. Ich nehme nichts weg
, komme nur welche dazu. Das heißt,
da die Menge endlich ist, muss das irgendwann aufhören.
Dann habe ich, und da wo das aufhört,
bei dem MK, da habe ich die Menge,
die nur aus nur produktive Non-Terminale enthält.
Wie mache ich mir jetzt die Grammatik? Bei der Grammatik
sage ich, ich nehme mir meine Menge VN,
aber ich nehme da halt nur die Symbole aus dem MK.
Und dann nehme ich noch das S dazu,
weil das Staatssymbol soll immer nochmal mit dabei sein am Anfang.
Termina-Zeichen bleiben, Staatssymbol bleibt auch. Und hier ist halt Die Produktion,
ich nehme nur die, wo auf der linken und rechten
Seite halt nur produktive Non-Terminale stehen und eben Terminalzeichen.
Genau, also der Schritt ist, wenn man den einmal gemacht hat,
ist der relativ eingängig. Also erstmal die produktiven Non-Terminale bestimmen Unternehmen,
nur die Bruder, oder im Grunde genommen,
ihr schmeißt die Produktion raus, wo links oder rechts,
egal wo, irgendwie die nicht produktiven Non-Terminale stehen,
die schmeißt ihr raus.
Ich verstehe immer, Rest. Was meinst du denn
mit Rest? Ja, ja, ja. Wenn es
dir hilft als Eselsbrücke, ja. Genau, so,
jetzt haben wir die, jetzt haben wir eine Grammatik,
die ist weiterhin Äquivalent zu der ursprünglichen und alle Produkte,
alle Non-Themen, die da drin sind, sind produktiv.
Jetzt ist nur noch das Problem,
da können auch noch welche drin sein,
die gar nicht erreichbar sind
Beispielsweise, wenn es von Großart zu Kleinart geht,
dann ist das neun Terminal produktiv.
Aber wenn das gar nicht erreichbar ist,
also wenn ich von dem Staatssymbol da gar nicht hinkomme,
kann ich damit trotzdem nichts machen.
Die wollen wir jetzt auch noch rausnehmen. Das heißt,
wir bestimmen jetzt die erreichbaren Non-Terminale. Bei den ersten beiden
Schritten sind wir von rechts losgegangen und haben immer geguckt,
was links steht. Hier machen wir es genau andersrum.
Wir fangen mit dem Staatssymbol an, also mit dem Essstrich.
Und dann nehmen wir sukzessive all die Non-Terminale hinzu,
die ich von dem Staatssymbol aus erreichen kann. Sprich,
ich gucke jetzt, gibt es irgendwie so eine Produktion,
hier als AUBV geschrieben, mit der Eigenschaft A von A,
weiß ich schon, dass es erreichbar ist.
Also A ist in einer
vorher bestimmten Menge MI hier
Was links und rechts von dem B steht, ist mir egal.
Also U und V sind irgendwie aus V-Stern und B ist wieder ein Non-Terminal.
Dann nehme ich das dazu. Also sprich,
ich fange mit dem Startsymbol an, gucke mir an,
auf den rechten Seiten der Regel von dem Startsymbol.
Was treten da alles für Non-Terminale auf? Die packe ich
mir alle in die Menge M1. Und für die Menge M2
gucke ich mir dann an, von denen eben bestimmten Non-Terminalen,
was sind da die rechten Seiten, stehen da wieder Non-Terminale,
die ich bisher noch nicht drin hatte in der Menge.
Die kommen alle für M2 dazu. Und dann gucke ich
mir wieder an, von denen überall die linke Seite angucken,
was steht da auf der rechten und so weiter.
Das sind die erreichbaren und Terminale
Und dann macht man im Grunde genommen das Gleiche wie eben auch,
dass man eben wieder die Non-Terminale übernimmt,
die Terminale übernimmt und als Produktion übernimmt man eben nur die Produktion,
bei denen die linke und rechte Seite erreichbaren und Terminale hat.
Oder eben Terminalzeichen. Genau. Da kann man auch,
das kann man auch einfach nur so machen,
also ohne jetzt das Ganze drumherum mit der Trumpsky Normalform,
wenn man einfach zu einer Grammatik eine sogenannte reduzierte Grammatik angeben will,
das heißt eine Grammatik,
bei der alle Non-Terminale irgendwie einen Sinn haben,
also sowohl produktiv sind als auch erreichbar
Ja, umgangssprachlich nützlich, habe ich ihn geschrieben.
Dann kann man auch einfach diese beiden Schritte machen, kommt in den Präsenzaufgaben dran.
Deswegen gibt es zu dem Schritt jetzt kein Beispiel,
aber ich hoffe, das ist klar geworden, was man da macht.
Dass man erstmal die produktiven Non-Terminale bestimmt,
indem man von rechts nach links geht und dann die Erreichbaren,
indem man halt von links nach rechts geht,
anfangen im Staatssymbol, immer gucken, was ist erreichbar.
Und bei produktiv eben anfangen, bei den Terminal-Zeichnungen,
immer gucken, von welchen Non-Terminalen kann ich da hinkommen.
Genau, das ist das.
Fragen dazu
Produktiv archbar. Wichtig ist auch die Reihenfolge,
wenn ihr es andersrum macht, funktioniert es nicht.
Also wenn ihr erst die Erreichbaren bestimmt und dann die Produktiven, dann klappt es nicht.
Da gibt es Gegenbeispiele, wo dann eben plötzlich dadurch,
dass ihr erst die Erreichbaren bestimmt, dann sagt ihr,
okay, jetzt habe ich die erreichbaren Non-Terminale.
Und wenn ihr dann die Produktiven bestimmt und eben die Nicht-Produktiven rauslöscht,
dann kann wieder passieren, dass dann plötzlich wieder Non-Terminale nicht erreichbar sind.
Deswegen funktioniert es so rum nicht, sondern nur andersrum erst produktiv und dann erreichbar. So,
jetzt kommt der blöde Schritt mit den Kettenregeln,
die nerven auch, dass man irgendwie sagt,
wenn ich von A nach B komme und von B nach C,
das ist irgendwie doof, Das ist deswegen doof,
weil wir eben bei Chompsky Normalform sagen,
wir wollen auf der rechten Seite immer genau zwei Non-Terminale haben.
Und das wollen wir weghaben. Wir wollen diese Kettenregeln nicht mehr
haben. Deswegen definieren wir uns so eine neue Relation,
dass wir sagen, wenn zwei Non-Terminale in dieser Beziehung,
also wenn ich von einem Non-Terminal direkt zu einem anderen Non-Terminal gehen kann,
dann schreibe ich das nochmal so und bestimme dann eben die reflexive und transitive Hülle.
Und dann kann ich mir eine neue Grammatik so definieren,
dass Non-Terminalzeichen bleiben, Terminalzeichen bleiben, Staatssymbol bleibt,
aber die Menge der Produktion ändert sich.
Und zwar definiere ich mir die neuen Produktionen
wie folgt
Ich gucke mir an, was habe ich als Produktion in P2,
also in meiner vorherigen Produktionsmenge,
wenn ich da irgendwie von B nach W komme und B jetzt nicht nur ein Non-Terminal ist,
also wie es nicht einfach irgendein Non-Terminal,
weil dann hätte ich gleich wieder eine Kettenregel,
das ist doof.
Also ich will das hier auf der rechten Seite,
irgendwie ein Wort steht, das nicht nur aus einem Non-Terminal besteht.
Wenn ich also von B irgendwo hinkomme und ich weiß,
dass ich von A über Kettenregeln zu B komme,
dann führe ich mir jetzt die Regel ein von A direkt nach W.
Und die andere fliegt zwangsläufig raus. Nee, warte. Nee,
die andere fliegt nicht raus, die andere bleibt drin,
die fliegt nur dann raus,
wenn V nur ein Non-Terminal-Zeichen ist
Beispiel, wenn ihr, oben steht das nochmal,
wie die Produktion definiert ist, wenn ihr die Regeln habt,
die da drunter stehen, dann kann man ablesen,
dass ich von A zu B komme und von B zu C und dann eben,
weil es reflexiver transitiver Abschluss ist,
komme ich auch von A zu C, von A nach C.
Also die drei Relationen weiß ich und jetzt gehe ich eben
die Produktion oben durch und erstmal bleiben all die Produktionen übrig,
die gar keine Kettenregeln sind,
also die Produktion von A geht es nach B,
die kommt weg, das ist eine Kettenregel,
die Produktion von A geht es nach CB,
die bleibt da,
das ist nämlich
keine Kettenregel
B, nach C, fliegt wieder raus,
weil es eine Kettenregel ist, B,
nach Klein D, ist okay, die bleibt da.
Und C, nach kleinen E ist auch okay,
die bleibt auch da. Das sind die oberen drei hier
. Und jetzt geht man eben nach und nach durch,
dass man zum Beispiel weiß, ich komme hier von A nach B.
Das ist das, was hier oben steht. Deswegen gucke ich
mir jetzt die rechten Seiten von B an, die wies.
Und da, wo das keine Kettenregel ist, also sprich,
wo ich nicht so es habe, B, B,
nach C, sondern von B geht es nach Klein D.
Da nehme ich mir die rechte Seite jetzt auch als rechte Seite von A. Das heißt,
ich weiß, ich komme von A nach B durch diese kleiner,
kleiner Relation und ich weiß, von B geht es zu Klein D,
dann muss es jetzt auch von A zu Klein D gehen.
Als nächstes gucke ich mir an,
von B geht es zu C, über die kleine,
kleine Relation und von C geht es zum kleinen E,
also muss es jetzt auch von B zu dem kleinen E gehen.
Warum? Weil ich eben vorher von B zu C gehen
konnte und von C zu Klein E und das will ich jetzt halt direkt machen können,
dass ich ohne Benutzen der Kettenregel von B zu Klein E gehen kann.
Und dann weiß ich noch,
ich kann hier auch von A nach C gehen und dann gucke ich mir genauso wieder an,
wo die rechten Seiten von dem großen C,
das ist nur das kleine E und dann kommt eben noch
diese Regel hinzu
Und das eigentlich Schwierige hierbei ist, die reflexible und transitive
Hülle hier zu bestimmen. Das ist bei den kleinen Beispielen,
die man dann üblicherweise so hat, da geht das immer.
Ansonsten muss man da irgendwie mit richtigen Algorithmen dran,
um eben von einer Relation diese reflexible und transitive Hülle zu bestimmen.
Das wollen wir nicht im Detail machen bei unseren Beispielen,
das machen wir dann in AD, also in Algorithmik und Datenstrukturen,
aber hier ist es jetzt so, dass man sagt,
okay, das kann man im Grunde genommen rauslesen.
Also wenn ich weiß, ich komme von A zu B
und von B zu C, dann kann ich rauslesen,
dass ich auch von A zu C kommen kann.
Und wenn ihr jetzt diese beiden Grammatiken vergleicht,
dann habt ihr oben noch Kettenregeln von AG zu Großb und unten
habt ihr keine Kettenregeln mehr.
Also die Kettenregeln sind raus und die Grammatik tut trotzdem
das Gleiche
Vierter Schritt, ersetzt ein langer Terminalregeln, das ist der einfachste Schritt,
glaube ich, in der Jumpsky-Normalform darf auf der rechten Seite,
steht es nur genau ein Terminalzeichen stehen.
Das heißt, wenn auf der rechten Seite irgendwie mehr steht,
wenn ihr also eine rechte Seite habt,
die länger ist als eins und noch ein Terminalzeichen enthält,
dann ersetzt ihr auf der rechten Seite einfach jedes Terminalzeichen durch ein neues Non-Terminal.
Hier dargestellt, als jedes Terminalzeichen klein A,
wird durch so ein Non-Terminal A in eckigen Klammern ersetzt.
Wichtig ist, das soll
ein Non-Terminalzeichen sein
Also einmal alle rechten Seiten durchgehen, gucken,
welche sind länger als eins,
wenn eine Regel länger als eins ist, gucken enthält die Terminalzeichen,
falls ja die eben ersetzen durch neue neuen Terminale.
Ja, das macht nichts. Ja,
das darf da von Anfang an gar nicht drin sein.
Also das fliegt dann vorher schon raus, wenn das Ziel
nicht erreichbar ist. Also da wäre ja, nee,
warte, Moment, was meinst du?
Warte, warte, warte, ich glaube,
ich habe Unsinn erzählt.
Was hast du gemeint?
Das C
Ja. Gute Frage. Warte mal. Nehmen wir mal
ein A ist das Staatssymbol, ne? Nehmen wir mal
ein A ist das Staatssymbol. Denn kann man ja vorher
von A zu B zu C zu Klein E. So.
Und jetzt... Und das wäre ja vorher nicht rausgeflogen,
ne?
Das ist vorher rausgeflogen
Ach, reich besitzt sie auch alle. Das wäre vorher auch nicht rausgeflogen.
Also im ersten Schritt passiert ja gar nichts beim Lamm da freimachen.
Im zweiten Schritt erst die Produktiven, zähe es produktiv,
dsproduktiv, Cs produktiv, B ist produktiv,
A ist produktiv, auch alles gut, voll erreichbar,
A, B, C ist erreichbar,
bleibt alles so.
Kettenregeln entfernen. So. Von Agis nach CB?
Wie ist das denn?
Das ist ja komisch
Ja, ist Pause. Nee. Das klappt alles nicht
. Das Fundament funktioniert nicht. Alles Klausur fällt aus.
Ist im Livestream ja und auf Video
Lamm da freimachen funktioniert. Produktion bestimmt funktioniert. Ja,
das, wenn oben die Grammatik, wenn wir mit der
anfangen würden hier. So, die ist ja kontextfrei.
Das heißt, ich muss mit den Regeln da,
ich muss eine Jumpsky Nummer einfach mal erzeugen können.
Und wenn ich jetzt aber dies mit den Kettenregeln anwende,
dann kommt diese Produktion hier raus
Und da ist das C hier noch drin.
Und das C ist gar nicht erreichbar.
Hä? Hab ich da eben viel eingebaut?
Von A jetzt nach B?
Von B geht's nach
Ja, wir haben ja noch eine halbe Stunde.
Ein CB? Also das ist ja strange.
Das fliegt ja auch... Bitte? Ja. Ja,
das ist mir schon alles klar. Ja, das ist mir
schon klar, aber das ist ja nicht im Algorithmus.
Ich meine, das sehe ich auch,
dass ich das C rausschmeißen kann,
aber das ist ja nicht
im Algorithmus drin
Ich kann ja nicht sagen, wenn ihr den Algorithmus an,
naja, und dann guckt nochmal.
Manchmal kommt da was Falsches raus. Käse. Ich meine,
das ist ja noch schlimmer als die Aussage, die Klausur fällt aus.
Da mache ich halt lieber das. Das verstehe ich aber
echt gerade nicht. Das ist ja merkwürdig.
Also Aster starten sie mal. Weil man zwei Minuten noch
. Aster starten wollte
Das sind die Punkte
Muss ich, gucke ich mir nachher nochmal an,
sehe ich gerade nicht, warum,
also irgendwie müsste es drin bleiben und es...
Nee, das Komma ist ja die Trennung für,
dass jetzt ein neuer Regelblock kommt
Also der eine, es gibt die Regel von A nach B,
von A nach C B,
dann gibt es die Regeln von B nach C,
von B nach D und dann gibt es die Regeln von C nach E. So,
und irgendwie, irgendwas ist da komisch.
Ja. Warum ist es komisch? Weil das fliegt jetzt
auch in den nachfolgenden Schritten nicht raus und eigentlich müsste das eh equalent sein.
Muss ich mir zu Hause nochmal angucken, sehe ich gerade nicht.
Keine Ahnung. Ich hoffe,
ich schreibe den ungefähr in der dreiviertel Stunde noch eine E-Mail dazu,
aber irgendwie sehe ich es gerade nicht
Eigentlich müsste das so klappen. Also im Grunde müsste das
rausfliegen oder so. Ich finde komisch. BNAC? Nee
, mhm, komisch. Ich gucke ich mir zu Hause
nochmal an, sehe ich gerade nicht.
Machen wir mal. Machen wir mal weiter kurz.
Naja, den hatten wir ja gerade.
Also nochmal zusammengefasst kurz, damit wir alle wieder auf dem
gleichen Dings sind
Das, da will ich machen, gegeben zu einer kontextfreien Grammatik.
Ich will irgendwo hinkommen, wo die Produktionen alle so aussehen.
A nach B, C oder A nach A. Ja,
dann wird gesagt, das geht auch.
Erster Schritt landerfrei machen, zweiter Schritt reduzieren,
dritter Schritt Kettenregel entfernen und die nächsten drei Schritte machen wir jetzt gleich noch.
Landerfreimachen von dem Lamda ausgehen und gucken, mit welchem Non-Terminal
komme ich direkt zu Lamda. Dann die Non-Terminale bestimmen,
mit dem ich jetzt eben zu Wörtern komme,
wo nur diese Non-Terminale drin vorkommen und immer so weiter,
bis es abbricht,
dann mir die Substitutionen definieren und dann durch anwendende Substitutionen eben
die neuen Regeln bestimmen
Also das geschah so, indem man gesagt hat, sich jetzt die rechten
Seiten anguckt und bei der rechten Seite immer nach Belieben die Non-Terminale aus Faulamda löscht oder eben nicht löscht und all die Produktionen, die dabei entstehen, die tut mir in die neue Produktionsmenge. Zweiter Schritt reduzieren,
erstmal die produktiven Non-Terminale bestimmen, ich fange bei den Terminalzeichen an,
von welchen Non-Terminalen komme ich nur zu Wörtern aus Terminalzeichen,
als nächstes, von welchen Non-Terminalen komme ich nur zu Wörtern,
nur aus Terminalzeichen oder diese Non-Terminale und immer so weiter und dann entsteht dann eine Grammatik,
die nur produktive Non-Terminale enthält,
dann erreichbare Non-Terminale beim Startsymbol anfangen und immer gucken,
wo komme ich damit hin dann die Produktion so einschränken,
dass nur noch diese Non-Terminale dabei sind und dann habe ich die Grammatik reduziert und im dritten Schritt eben das mit den Kettenregeln,
wo jetzt gerade irgendwas komisches passiert ist, wo ich eben diese kleine,
kleine Relation bestimme und dann eben die neuen Produktionen dadurch,
dass ich eben sage, okay,
ich nehme quasi die Kettenregeln raus und die rechten Seiten von Regeln,
die rechten Seiten von Regeln,
wie jetzt hier dieses von C nach E, wenn ich wusste,
ich komme von A nach C und ich wusste,
ich kann von C nach E,
den kann ich jetzt eben auch von A nach E und
dann habe ich eben unten keine Kettenregeln mehr und warum das da jetzt gerade an der Einstellung nicht funktioniert,
muss ich gleich nochmal nachlesen
Oder nochmal durchrechnen, irgendwas. Vierter Schritt,
nochmal die rechten Seiten angucken, die länger sind als eins.
Und sofern das Terminalzeichen auftreten, die durch ein neues neuen Terminal ersetzen.
Fünfter Schritt. Achso, da hatten wir beispielsweise diese Regeln,
dann entstehen jetzt eben, jetzt guckt man sich an,
die rechten Seiten der ersten und zweiten Regel sind länger als eins und enthalten noch ein Terminalzeichen.
Deswegen ersetzt man die Terminalzeichen jetzt durch neues Non-Terminal. Dann nennt man das. Und jetzt kommt,
wenn man jetzt noch Regeln hat, die länger sind als zwei,
Zwei wäre okay, weil dann kann ich von großartig zu groß,
big groß sehen, so, das ist alles okay.
Aber wenn die länger sind als zwei, dann müssen wir die kleiner machen als zwei.
Das sieht formal ziemlich wild aus. Idee ist einfach,
also formal sieht das wirklich wild aus,
das könnt ihr euch gleich, wenn ihr die informale Idee gesehen habt,
könnt ihr euch das zu Hause nochmal angucken,
dass das tatsächlich das tut, was es tun soll.
Die Idee ist einfach, wenn ich so eine Produktion habe,
von A geht es nach B, CDE,
BCDE ist klar länger als zwei,
dann führe ich mir jetzt solche Produktionen ein, dass ich sage,
von A geht es nach BCD als ein Non-Terminal und E.
Jetzt habe ich auf der rechten Seite zwei neun Terminale,
einmal das Non-Terminal hier B,
CD und einmal das neun Terminal
Und dann muss ich das B-CD halt aufbrechen,
dass ich jetzt sage, ja, das ist eine Non-Terminal-B-CD,
das kann ich zu dem Non-Terminal-B-C und dem D bringen und
das Non-Terminal-B-C kann ich eben zu dem B-C führen.
Und das Wichtige ist, das, was in Klammern ist,
das ist immer ein Non-Terminal jetzt. Und das,
was in der formalen Definition eben auf der anderen Folie drinsteht,
ist, dass man immer vorne das neuen Terminal einführt.
Also sonst könnte man hier ja abkürzen und sagen,
ich kann ja von A zu B-C als ein neues Non-Terminal
und DE als ein neues Non-Terminal gehen und dann eben von
B-C zu B-C und von DE
zu DE
Aber das macht man eben nicht,
sondern man sagt eben, okay,
wenn ich ein Wort der Länge fünf habe oder vier in dem Beispiel,
dann führe ich mir für die ersten drei Buchstaben ein neues neuen Terminal ein.
Und die drei Buchstaben breche ich dann wieder auf,
dass man quasi immer hinten das alte einzelne Non-Terminal stehen hat
und vorne dann eben das geklammerte Neue.
Und so bricht man dann diese langen Regeln runter und hat
die schön verkürzt. Und jetzt hat man es hingekriegt,
dass es alle Regeln entweder genau zwei Non-Terminale auf der rechten
Seite haben oder ein Terminalzeichen.
Jetzt ist man im Grunde genommen fertig,
als sechsten Schritt kann man jetzt noch gucken,
ob ganz am Anfang galt das SNV-Lamm
da drin ist
Falls ja,
war Lamda ja in der Sprache drin in der Generierten und dann
fügen wir eben zu der zuletzt konzentrierten Grammatik noch das neue Startsymbol hinzu und diese Produktion,
also die eine Lamda-Produktion und dann eben von S. Neu geht es nach W für jede Produktion SW.
Man geht nicht von S. Neu zu S, weil dann
hätte man wieder eine Kettenregel eingeführt. Und man geht von
S. Neu zu W. Und dann hat man die neue Grammatik
G6 und die erfüllt die im Satz aufgestellten Bedingungen.
Das dürft ihr in den Übungsaufgaben noch einmal durchexerzieren, das ganze Verfahren,
dass man das mal so jeden Schritt davon gemacht hat und sieht, was da so passiert.
Und dann kann man eben zu jeder Grammatik in zu jeder kontextfreien Grammatik,
eine Grammatik in Champskin um Ups,
eine Grammatik in Champskin Normalform generieren und das Schöne an der Trumpskin Normalform ist eben,
dass wir uns bei Beweisen hilft und auch bei einigen,
bei einigen Algorithmen.
Und eine Sache wollen wir jetzt noch machen, nämlich das Pumping Lammer für Kontext frei sprachen.
Das sieht so ähnlich aus wie das Pumping Lammer für reguläre Sprachen,
nur dass es größer und fieser wird. Vorher hatten wir gesagt,
wenn eine Sprache regulär ist, dann gibt es eine natürliche Zahl N derart,
dass ich jedes Wort Z zerlegen kann in UVW,
mit UV Kleiner gleich NV größer gleich 1 und dann eben noch
das mit den Pumpen und hier kann man das Wort jetzt Dollar zerlegen,
dass man es eben nicht nur in UVW zerlegt,
sondern in den UVW XY.
Aussage ist wieder, wenn L kontextfrei ist,
dann gibt es eine natürliche Zahl N,
sodass man jedes Wort Z zerlegen kann oder jedes Wort Z,
das länger ist,
als N zerlegen kann in die Form UVW XY mit VW X soll Kleider gleich N sein,
VX soll größer gleich eins sein,
das sieht alles irgendwie so ähnlich aus wie beim Pumping immer für reguläre Sprachen und UV-Hoch-IW X-Hoch-I-Y soll immer in Älteren sein.
Das, was halt anders ist als bei regulären Sprachen,
ist bei regulären Sprachen war es so, dass wir gesagt haben,
UV soll Kleiner gleich N sein, da wussten wir,
dass es immer am Anfang des Wortes drin Hier wird jetzt gesagt,
wenn ich das Wort zerlege, ein UVW XY,
dann ist dieses VW X kleinerleich Ende.
Und das VW X ist also irgendwie, kann in der Mitte des Wortes sein.
Das führt dazu, dass dieser Teil, der Kleine gleich N sein soll,
dass der irgendwie über das Wort rüberwandern kann,
weil man das U halt beliebig lang wählen kann. Wenn ihr also,
wenn wir gleich so ein Wort haben wie A,
auch in Beoren C hochennen,
also wir sagen,
sei N,
die Zahl aus dem Pumpinglemmer und jetzt betrachten wir das Wort auch in Beoren C hoch N,
dann wissen wir nur,
VW X ist kleiner gleich N und dann kann das zum Beispiel in
den ersten NAs drin liegen oder es kann zwischen den As und Bs liegen oder es kann in den Bs drin liegen oder in den Bs und Cs oder in den Cs.
Das kann dann so rüberwandern über das Wort
Und das Zweite, was eben anders ist, ist,
dass man nicht an einer Stelle pumpt,
sondern dass man den Faust und den Xen hier pumpt und
dass das noch durch das Weh getrennt ist.
Das führt dann auch meistens noch so zu mehreren Fallunterscheidungen.
Ansonsten ist der, wenn man das einsetzen will und so, aber alles gleich.
Genau. Ja, kontextfreie Sprachen, das ist die Sprachfamilie,
die mit kontextfreien Grammatiken generiert wird oder eben über diesen Beweis oder mit PDAs, also Kennautomaten.
Ja, das jetzt noch einmal benutzen und dann Ja,
dann machen wir Schluss. Also das für, könnt ihr nachlesen,
wenn euch das interessiert, Beweis ist wieder so ein kombinatorisches Argument,
nur bei dem Beweis für reguläre Sprachen hat man ja mit dem Automaten argumentiert und mit der Zustandsansanzahl der Automaten.
Hier würde man über einen Ableitungsbaum argumentieren,
der Baum geht so, dass vorne,
als Wurzel hat man das S und dann eben je nachdem,
welche Produktion man benutzt, wenn man jetzt so eine Produktion benutzt,
wo auf der Rechenseite zwei Non-Terminale stehen,
dass es eben zwei Kinder, wenn man eine Regel benutzt,
wo man einen Non-Terminal nur hat,
dann hat es eben nur ein Kind.
Und dann kriegt man so einen Ableitungsbaum hin und
da kann man dann mit so Sachen arbeiten,
dass man eben genau V-End-Non-Terminale hat und dann kann man für
das N so ein 2 hoch K wählen und kann gucken,
wie viel Ableitungsschritte kann man machen und so weiter
Und wann muss ein Non-Terminal doppelt auftreten in so einem Ableitungsbaum?
Da, was? Ja. Genau, Piping,
glaube ich, für kontextfreie Sprachen. Steht im Skript
drin, steht auch in jedem Buch eigentlich drin.
Ja, könnt ihr da nachlesen, wenn euch das interessiert.
Benutzt eben die Chompsky Nomi iPhone. Das ist so,
deswegen stellt man die halt her, wenn man die dann
in solchen Beweisen benutzen kann oder eben in Algorithmen.
Den Algorithmus will ich euch, ich glaube,
übernächst Smile oder so, machen wir nochmal den Algorithmus für das Wortproblem.
Und da braucht man eben auch die Chompsky Nomi vor
Jetzt das, was wir vorhin auch gebraucht haben
bei diesem Beweis für die Abschlusseigenschaften. Angenommen, auch NBONC
hoch N wäre Kontext 3. Jetzt funktioniert das erstmal genauso wie
bei dem Pumping-Lämmer für Regeljägersprachen auch. Wir nehmen an,
die Sprache wäre kontextfrei, dann wissen wir,
das Pumping-Lämmer muss gelten für kontextfreie Sprachen.
Und dann sagen wir, sei Karl die Zahl aus dem Pumping-Lämmer
und jetzt betrachten wir dieses Wort Z auch, Kabio KC hochkam.
Dann wissen wir,
Z ist in Älteren und Z ist größer gleich K. Und
jetzt betrachten wir eben diese Zerlegung Z in UVW XY,
die die ersten beiden Eigenschaften erfüllt und wollen zeigen,
dass sie dann die dritte Eigenschaft nicht erfüllt
So eine Zerlegung mit VWX ist Kleine gleich K und VX ist größer gleich eins.
Und da jetzt das U eben im beliebigen,
beliebig langen Teil am Anfang einnehmen kann,
kann das VWX jetzt eben entweder in den Ast drin sein
oder in den Bs oder in den Cs oder es kann eben
an dieser Grenze zwischen den As und Bs liegen und dann eben erst aus As bestehen und dann aus Bs oder eben Erst aus Bs und dann aus Cs.
Und was ist eben nicht, was eben nicht geht,
ist, dass das VWX aus As,
Bs und Cs besteht,
weil der K viele Bs haben und er müsste das Wort
länger sein als K und es ist aber Kleine gleich
Wenn das VWX halt in A plus B plus oder C plus ist,
dann ganz bestimmt das VX auch. Jetzt kann man sich eben überlegen,
wenn ich jetzt da dran pumpe,
also in dem ersten, zweiten oder dritten Fall,
wenn ich dann da dran pumpe, dann habe ich mehr As,
als ich Bs und Cs habe oder eben mehr Bs,
als ich As und Cs habe oder mehr Cs,
als ich As und Bis habe.
Und dann ziehe ich dann auch schon um die Ohren.
Und beim vierten und fünften ist es halt so ähnlich.
Das ist jetzt nochmal einmal sehen können für die ersten drei Fälle führt UV-Quadrat
B X-Quadrat Y zum Widerspruch, weil ich dann eben auch
N plus JBO NCON habe oder sowas, was nicht mehr in L ist.
Und für die letzten beiden Fälle kann man,
wenn man möchte, nochmal eine Fallunterscheidung machen oder sollte man
Da gibt es nämlich die Möglichkeit, wenn ich hier sage,
da, wenn ich hier bei dem Vierten sage,
dass das VX in A plus B plus ist,
dann gibt es die Möglichkeit,
dass zum Beispiel das V sowohl als sowohl aus As als auch aus Bs besteht.
Und wenn ich dann dran pumpe, dann kriege ich schon die Reihenfolge durcheinander.
Also wenn V A hoch 3 B hoch 3 ist oder so
und ich pumpe da dran, dann habe ich irgendwie A hoch
N plus 3, dann habe ich die 3 Bs,
dann habe ich nochmal 3 As und dann kommen erstmal die NBs oder so.
Also dann ist das schon nicht mal mehr ein Arschstern,
Bier stehen C-Stern drin. Es kann aber auch sowas sein wie,
dass das V in den As drin ist und das
X in den Bs
Also wenn das V aus 3As besteht und das X
aus 3B ist und ich pumpe dann da dran,
dann bleiben die As und die Bs weiterhin gleich.
Also die Anzahl der As und der Bs. Aber weil
das dann mehr werden als die Cs, ist das immer noch ein Widerspruch.
Aber das sind dann die zwei Pfeilerscheine, die man da noch machen kann,
wenn V oder X eben sowohl A als auch Bs enthält und man pumpt da dran,
dann ist das nicht mehr mehr ein Arsch,
dann wir stellen C-Stern, klappt also nicht.
Wenn ich aber sowas habe wie Vs in A plus und X SNB plus,
dann ist einmal hochpumpen, dennoch ein Widerspruch,
weil dann die Anzahl der Cs eben nicht mehr
mit denen der As und Bs
Und die Pfeilunterscheidung muss man immer machen. Und jetzt kann man sich überlegen,
das kann man auch machen für A-Hoch-IB, hoch-J-C,
hoch-k mit i-kleiner, J-kleiner K oder irgendwie sowas,
was man bei solchen Fällen manchmal beachten muss, ist,
dass man eben nicht nur hochpumpen kann,
sondern das eben auch weglassen kann.
Also, dass man irgendwie hier an der Stelle da inklusive der Null,
also ich kann hier auch das Wort U-W-Y betrachten,
also das V und X wegfallen lassen.
Das führt dann manchmal schneller zum Widerspruch
So, genau, anders als beim Pumping-Lämmer gilt hier,
das VWX wandert über das Wort mehrere Fallunterscheidungen und dann kann man
oft so Formulierungen benutzen wie in einem Blog oder so,
also entweder es ist in dem Blog der As oder in
dem Blog der Bs oder im Blog der Cs drin oder so oder an den Grenzen.
Und dann kann man insbesondere da, soll die nominieren,
man kann viele Fälle analog behandeln,
also so wie eben war der erste, zweite und dritte Fall,
die lassen sich komplett leicht behandeln.
Also ob das VWX jetzt in den As drin ist,
in den Bs oder in den Cs,
das ist bei dem Beispiel ziemlich egal gewesen.
Und dann kann man das einmal machen und sagen,
die anderen beiden Fälle sind analog.
Und dann nochmal als Hinweis,
auch das Wort kann man betrachten
Genau, das hatte ich vorhin schon erzählt,
das wollen wir auf jeden Fall nochmal machen,
hier Lösung des Wortproblems für kontextfreie Sprachen,
weil das eben auch das ist, was in Anwendungen recht wichtig ist,
dass man gegeben ein Wort feststellen kann,
ob das überhaupt von der Grammatik generiert wird oder nicht.
Und damit nochmal die Zusammenfassung kurz,
was haben wir gemacht, Abschlusseigenschaften,
Chompsky-Normalform, ich gucke mir gleich den dritten Schritt nochmal an
und dann das zweite Public Lever
Das ist auch eine Zeit, die Frage war gerade,
ob man das nicht so machen kann bei diesem VWX,
dass man das V irgendwie als ein Wort hat und
das W und X als Lander wählt.
Richtig verstanden? Ja. Ja, auch das ist eine mögliche Zerlegung irgendwie,
aber du musst dir alle Zerlegungs- und Widerspruch führen.
Nicht nur eine spezielle. Dann hast du ein Problem.
Ach so, jetzt weiß ich,
was du meinst
Du meinst, wenn hier jetzt,
wenn das X zum Beispiel leer ist oder so,
W und X sind leer und nur V besteht aus irgendwas.
Das geht nicht, weil das, also die... Ja,
warte mal kurz,
ich will mal für alle, die Frage war gerade,
man kann ja das V und W in den A plus B
plus drin haben und das X in den C plus,
Er will das V in A und B drin haben und
das X in den Zehs. Jetzt richtig? Geht nicht,
weil VWX soll ja von der Länge kleiner gleich K sein.
Ja? Wenn du jetzt komplett über die Bs rübergehen willst,
hast du ein Wort,
was länger ist als K. Also dein VWX soll ja gerade
bei den As irgendwo anfangen und bei den Cs irgendwo aufhören.
War deine Worte, wann ich meine? Dein VWX soll
bei den As anfangen, bei den Cs aufhören, richtig?
Wenn es das tut, muss es über alle Bs rübergehen,
VWX. Das sind aber K-Fiele. Dann wird VWX länger
als K. Es soll über kleiner,
gleich K sein
Das ist die Jesusköpfe, die da rumliegt.
Machen wir gleich. Ich muss es mir leider nochmal angucken.
Ich schreibe ja gleich noch eine E-Mail,
wenn ich rausgefunden habe, wo das hakt.
Ich weiß gar nicht, wenn meine E-Mail.
Noch Fragen. Präsenzaufgaben. Erst habe ich gerade vergessen,
die zweite ist eine Grammatik reduzieren und in den Übungsaufgaben
Chomsky-Normalform herstellen und zweites Pumping-Lever benutzen,
glaube ich
Genau. Nochmal. Ja. Ja. Doch, doch
, doch. Die Folien könnte zum,
also die Frage war gerade wegen des Problems,
ob man die Folien dann nicht zum Nachbereiten benutzen kann.
Doch könnt ihr, das Verfahren funktioniert so. Ich sehe gerade nur den,
also wahrscheinlich ist ein Beispiel irgendwo ein Fehler oder ich weiß nicht,
was irgendwas, das Verfahren funktioniert so, das kann man auch so anwenden.
Bei der Übungsaufgabe klappt das auch so. Ich muss gar nicht,
vielleicht geht bei den Dritten, ich weiß nicht genau,
ich gucke gleich nochmal. Ich denke mal auch,
das kriegt, in einer halben Stunde müsste das eigentlich,
dann müsstet ihr eine E-Mail haben,
so,
dann müsste das passen
Gut, sonst noch Fragen? Erstes. Ja.
Die Frage war, weil Freitag der 1. Mai ist,
ich habe euch ja gestern eine Stinemail geschrieben,
wie das funktioniert mit Abgabe und bla bla bla.
Und die Präsenzlösung sind dann irgendwie Donnerstagnachmittag online. Wenn das
die Frage wäre. Und für die Freitagsgruppen hatte ich ja
rumgeschrieben, wie ihr abgeben könnt und sollt und so.
Das müsste eigentlich gut, okay. Dann schöne Woche und
bis nächste Woche