Beim letzten Mal hatten wir uns damit beschäftigt,
wie groß das Aufblähen bei der Potenzautomatenkonstruktion sein kann.
Wir wissen ja, wir konstruieren deinen Potenzautomaten, indem wir Potenzmengen bilden.
Das heißt, wir betrachten die Menge aller Teilmengen.
Das führt zu einem exponentiellen Aufblähen in der Zustandsanzahl.
Beim letzten Mal haben wir schon gesehen, dass es nicht ein Artefakt ist,
das heißt, ein schlechte Variante der Konstruktion,
sondern wir haben gesehen, dass das zwingend so sein muss.
Und das haben wir dadurch gesehen, dass wir uns einen Automaten angeguckt haben,
der für jede Zahl N ab zwei dazu führte,
Dass jeder andere Automat per vollständig sein sollte und dazu Äquivalent zum Ausgangsautomaten,
dass der mindestens 2 Uhr in viele Zustände braucht.
Da der Potenzautomat genau 2 Uhr in viele Zustände braucht,
sind wir also genau bei dem Minimum an Zuständen, die dafür notwendig sind.
Und wie ein solcher Automat aussehen kann,
das ist der folgende Automat, der einen großen Zyklus hier beschreibt,
am Anfang den großen Nicht-Determinismus hat zwischen A,
ich bleibe in diesem Zustand oder A,
ich gehe jetzt echt in diesen Zyklus hinein und verführe dann
N mal das A und da habe hier überall noch
die Möglichkeit,
ein B auszuführen
Von diesem Automaten kann man jetzt zeigen, dass er genau die Eigenschaft hat,
in deterministischer Formulierung, mindestens zwei UN-Zustände zu brauchen.
WN, hier im Wesentlichen die Größe dieses Kreises ist.
Was wir dann als letzte Überlegung hatten,
da hört ihr die Dienstagvorlesung auf, war die Fragestellung,
wenn wir einen Automaten gegeben haben,
dann gibt es natürlich zur gleichen Sprache verschiedenste Automaten,
die alle die gleiche Sprache beschreiben.
Wir hatten hier zwei Automaten gesehen. Dieser Automat ist vollständig,
wir sehen aus jedem Zustand gibt es eine Kante für
ein A und eine Kante für ein
Diese automatisch auch vollständig. Und wenn man jetzt noch beobachtet,
dass dieser Automat überall Endzustände besitzt, können wir daraus Schluss folgen,
dass jedes Wort akzeptiert werden muss in beiden Worten.
Hier sieht man das sofort, jegliche Sequenz von As und Bs
führt mich wieder zurück in ein Zustand Z, der gleichzeitig Staat und Endzustand ist.
Und beim anderen Automaten ist es so, egal welches Wort
ich bislang gelesen habe, ich bin auch in meinem Endzustand.
Also ergibt sich die natürliche Frage, gibt es so etwas wie einen kleinsten Automaten?
Und die Motivation, die ganz offensichtlich damit verbunden ist,
ist die Frage, kann ich es schaffen,
zu einer gegebenen Spezifikation eine Hardware-ökonomische Darstellung zu finden?
Also gibt es einen Algorithmus am besten, der mir zu einen gegebenen Automaten,
die kleinstmögliche Variante berechnet? Wir hatten zwar eben gesehen,
es gibt Spezialfälle, wo zwei hochend Zustände notwendig werden,
wenn ich aus einem nicht deterministischen Automaten einen deterministischen mache.
Es könnte aber sein,
dass in vielen praktischen Fällen der minimale Automat trotzdem viel,
viel kleiner ist,
als diese zwei hochend viele Zustände,
die sich ergeben müssten bei der Potenzautomatenkonstruktion
Und die Antwort ist ein mehrfaches Jahr. Ja,
es gibt einen solchen minimalen Automaten. Es ist sogar
nicht nur möglich von der kleinstmöglichen Zustandsanzahl zu sprechen,
sondern es ist auch möglich, von dem kleinstmöglichen Automaten zu sprechen.
Kleinstmöglich in dem Sinne, dass es natürlich ganz viele verschiedene Bezeichnungsmöglichkeiten
für die Zustände gibt. Aber wenn wir davon abstrahieren,
wie die Zustände heißen, uns nur die Struktur des Automaten anschauen,
dann werden wir feststellen,
dass diese ganzen Automaten mit der minimalen Zustandsanzahl,
dass die auch komplett gleich aussehen
Das heißt, nur durch Umbenennen der Zustände bekomme ich es hin,
dass die Automaten tatsächlich auch gleich sind. Das Einzige,
was sie unterscheidet, sind also tatsächlich nur die Zustand,
die Zustandsbeendungen, nicht aber die Übergänge zwischen den Zuständen.
Die sind dort gleich. Und dieser Automat,
egal wie die Zustände nun wirklich bezeichnet sind,
bezeichnen wir als minimalen, vollständigen DFA.
So, das ist jetzt erstmal die Existenzaussage.
Die zweite Frage ist, gibt es ein Verfahren,
diesen minimalen Automaten auch tatsächlich zu konstruieren?
Und hier ist auch wieder die Aussage,
ja,
das kann man
Und man benutzt dort ein mathematisches Hilfsmittel. Und das heißt
, das Hilfsmittel heißt Nirode-Äquivalenz. Und diese Nirode-Äquivalenz will nichts
weiter als herausfinden, wann zwei Zustände das Gleiche leisten.
Wir betrachten im folgenden also Zustände dann als Äquivalenz,
als Äquivalent, wenn sie in der Lage sind,
Gleiches zu leisten und Gleiches zu leisten, heißt die gleichen Wortmengen zu akzeptieren.
So, ich betrachte also jetzt diesen Zustand quasi als Staatszustand
und frage mich, ob ein anderer Zustand,
wenn ich ihn als Staatszustand betrachte,
das Gleiche kann
Mathematisch gesehen sieht das ein bisschen abstrakter aus.
Ja, dort definieren wir die Relation folgendermaßen.
Wir sagen, wir haben erstmal einen deterministischen Automaten.
Es ist also klar, was der Nachfolgezustand ist für eine Eingabe.
Und jetzt definieren wir eine Äquivalenz auf den Eingabeworten.
Erstmal nicht auf den Zuständen, sondern auf den Eingabeworten.
Also eine allgemeine Automaten-spezifische Äquivalenz-Relation. Er steht für Relation,
A steht für diesen Automaten.
Und das ist eine Äquivalenz zwischen Worten. Das heißt,
die Relation ist eine Teilmenge von Sigma Stern,
Menge aller Worte,
Kreuz,
Sigma Stern
Und in der Schreibweise,
wo man die Relation zwischen zwei Worte schreibt,
dann sagt man, uh, steht mit V in Relation,
genau dann, wenn Folgendes gilt,
wenn ich mit dem Wort uh vom Staatszustand aus zum gleichen Zustand komme,
den ich auch mit dem Wort V auserreichen würde.
Das heißt, wenn ich nur gucke,
welcher Zustand ist der Zielzustand nach Eingabe des Wortes,
Uh und Eingabe des Wortes V und dann kommt das Gleiche raus,
dann will ich diese Worte als Äquivalent betrachten.
Also die Äquivalenz, die dadurch entsteht,
dass die Zustandsübergänge verglichen werden
So, und das ist offensichtlich ein gutes Indiz dafür,
zwei Zustände, die die Eigenschaft hätten, das... Oh nö.
In Nachfolgezustände kommen, also U und V haben möglichst immer
den gleichen Nachfolgezustand. Dann wären offenbar die Zustände nicht unterscheidbar und
diese Worte würden auch zueinander letztendlich nichts Informatives mehr beitragen.
Und ein bisschen anders kann man das auch noch mathematisch aufziehen,
definieren wir weiter, das brauchen wir noch.
Wir brauchen, das nennt sich etwas, Das ist eine Rechtskongruenz,
rechts, weil ich rechts anmultiplizieren möchte.
Da sieht man hier, man sagt,
u&V stehen genau dann in einer solchen Äquivalenz, RL.
Und L ist jetzt eine reguläre Menge. Genau dann,
wenn für alle Worte, die ich neben das U bzw.
neben das V schreiben kann, folgendes gilt.
Ich beginne mit U und schreibe ja ein Wort dahinter,
dann ist es in der Sprache L, also wird akzeptiert,
genau dann, wenn V mit dem gleichen W dahinter in L ist.
Beziehungsweise genau die Negation, Wenn es nicht in L ist,
dann ist es auch VW nicht in L.
Und da das für alle Worte weh gelten soll,
gilt es insbesondere auch für das leere Wort.
Das heißt, hier steht auch, dass UNL ist,
genau dann, wenn VNL ist. Das heißt,
ich beginne hier mit zwei Worten und sage,
ich setze sie genau dann in Beziehung,
wenn sie zum einen beide in der Sprache enthalten sind,
also Us in der Sprache enthalten und Faust und ersparet halten.
Und immer dann, wenn ich dahinter das gleiche Wort setze,
dann sind auch diese beiden Worte genau dann in der Sprache
oder genau dann nicht in der Sprache
So, und diese Definition sieht erst mal komplett anders aus.
Es ist rein syntaktisch. Algebrage mit Äquivalenzen definiert,
indem ich rechts multipliziere. Aber man kann zeigen,
und das gucken wir uns jetzt an,
dass das im Prinzip genau das Gleiche ist,
was auch endliche Automaten beschreiben.
Denn es gilt folgende Aussage. Eine Sprache ist regulär,
das wissen wir schon. Das heißt, sie wird von
einem DFA akzeptiert. Aber genau äquivalent dazu hätte man
es auch folgendermaßen definieren können.
Ich hätte sagen können, es ist die Vereinigung von Äquivalenzklassen
Also von Mengen zueinander, äquivalenten Elementen, einer rechtsinvarianten Äquivalenzrelation.
Also etwas, was wir eben gesehen haben, man kann
rechts etwas ran multiplizieren und es verändert sich nichts bezüglich der Akzeptanz.
Und das Ganze steht hier, hat einen endlichen Index,
was nichts weiter heißt, als dass sich nur endlich viele Äquivalenzklassen habe.
Das heißt, die Aussage ist,
eine Sprache ist regulär, genau dann,
wenn sie eine endliche Vereinigung von Äquivalenzklassen einer solchen Rechtsinvariantenstruktur ist
Und wenn man das hat, dann sind die Äquivalenzklassen nichts anderes als Zustände.
Das ist intuitiv auch halbwegs anschaulich, wenn man noch eine Folie zurückgehen,
dann steht ja hier, zwei Worte sind in Relation,
genau dann, wenn von dort aus ein W hinterher keinen Unterschied mehr macht. So,
wenn aber Äquivalente Zustände gleich auch den gleichen Zustand nachher bilden sollen,
also die gesamte Äquivalenzklasse in der U drin ist V und vielleicht noch andere Worte,
dann ist ganz klar, wenn das ein Zustand ist,
führt er dazu,
dass wenn ich dann das Wort W betrachte und ab dort schaue,
wo komme ich hin,
dann ist das entweder in der Sprache den Zustand U oder für jeden Zustand V,
weil sie beide in der gleichen Äquivalenzklasse sind und deswegen auch beide den gleichen Zustand beschreiben.
Gut, das wäre also die erste äquivalente Formulierung.
Man muss nicht dieses, sagen wir mal,
anschauliche mit den Zuständen im Hinterkopf haben. Man kann auch
ein wenig abstrakter von Äquivalenzklassen auf Sprachen das Ganze aufziehen.
Muss dann in eine sehr spezielle Äquivalenzklasse betrachten,
also eine Rechtskongruenz betrachten
Ja, und was hat man dennoch als dritte Aussage?
Wir wissen jetzt, okay, es ist allgemein,
es ist eine endliche Vereinigung von solchen Äquivalenzklassen.
Aber man kann auch zeigen,
dass die beiden Aussagen wiederum Äquivalenzen zu der dritten Aussage,
nämlich, dass diese spezielle Nerode-Äquivalenz endlichen Index hat.
Also diese Nerode-Äquivalenz ist gewissermaßen eine besonders interessante Äquivalenz.
Wenn man diese Äquivalenz hat und sich von dort aus nähert und
die Äquivalenzklassen betrachtet, dann kann man das verschiedentlich benutzen.
Man kann aus der Ecke dann einen endlichen Automaten offensichtlich konstruieren
Denn die Aussage, dass ich endlich einen Index habe,
ist ja Äquivalenz zu der Tatsache, dass es regulär ist.
Das heißt, immer wenn eine solche Nerode Äquivalenz
endlichen Index hat, gibt es endlich viele Äquivalenzklassen.
Und abstrakt gesehen sagt uns der Satz,
dass es dann wohl ein DFA gibt, weil erstens sagt,
ja, die Sprache muss dann regulär sein.
Und das konstruktive Verfahren, um das zu betrachten,
ist eben die Äquivalenzklassen selbst wiederum als Zustände zu nehmen.
Man kann es aber auch als mathematisches Hilfsmittel benutzen,
man kann es benutzen,
wie man sagt,
manche Sprachen können gar nicht
regulär sein
Sie können mich dann nicht regulär sein, wenn ich feststelle,
dass die Nerode-Äquivalenz einen unendlichen Index hat.
Also nun endlich viele Äquivalenzklassen zerfällt. Wenn das der Fall
ist, dann gilt die dritte Eigenschaft ja nicht.
Und weil die dritte Eigenschaft Äquivalent ist zuersten,
wissen wir dann sofort, dass die Sprache nicht regulär sein muss.
Und jetzt kann man das beispielsweise anwenden,
um so eine einfache Sprache wie die Menge aller As genau
ein Stück gefolgt von NBs, das diese Menge nicht regulär ist.
Für die kann man mich zeigen, dass die Nerode-Qualenz
unendlich viele Äquivalenzklassen hat
Das kann man machen, das ist relativ mathematisch,
aber es gibt auch zum Glück,
dass wir uns gleich noch angucken, ein etwas kompakteres Verfahren,
das UVW-Lämmer, mit dem man gleiche Resultate auch zeigen kann.
Was wir jetzt machen wollen, wir wollen im Prinzip
diese Idee einer Nerodiequalenz benutzen, um die Zustandsmenge,
die wir derzeit in einem DFA haben, zu verkleinern.
Wir wollen also herausfinden, welche Zustände können das Gleiche,
muss ich also nicht getrennt betrachten,
sondern darf ich zusammenpacken.
Da ist die Idee
ungefähr folgende
Wenn wir wissen wollen, welche Zustände schon mal das Gleiche können,
dann fangen wir an mit Zuständen,
bei denen wir schon mal sicher sind,
dass sie auf jeden Fall sich unterscheiden.
Also ich bilde jetzt zwei Häuflein. Das sind Zustände und das
sind Zustände und die Zustände der linken Box kann ich schon
mal klar von den Zuständen in der rechten Box unterscheiden.
Und das unterscheidende Kriterium,
das ich ganz am Anfang offensichtlich zur Verfügung habe,
ist die Tatsache, dass manche Zustände, Endzustände sind,
die akzeptieren also das leere Wort.
Und manche Zustände sind gerade keine Endzustände,
die akzeptieren das leere Wort also nicht
Und das ist so das erste Unterscheidungsmerkmal. Es gibt ein
Wort, hier das leere Wort, das sie unterscheidet.
Und jetzt suche ich sukzessive weiter. Ich versuche,
diese Kästen noch weiter zu verfeinern,
indem ich nach Worten suche, die Zustände da drin unterscheiden.
Wenn ich ein Wort finde, das sie unterscheidet,
dann sage ich, okay, dann gehört ihr in verschiedene Klassen.
Und wenn ich dieses Spiel ganz lange treibe und nicht feststellen kann,
dass es sie unterscheidende Worte gibt, dann sind sie offensichtlich Qualent,
denn ich kann sie nicht unterscheiden.
Also ich mache folgendermaßen weiter dieses Verfahren ist rekursiv definiert.
Ich gehe also davon aus, dass ich nach I-Schritten schon eine gewisse Unterscheidung getroffen habe.
Ich konnte also die Zustandsmenge schon in verschiedene Blöckchen separieren. Und in jedem Kasten,
wie hier in S-I-1, befinden sich solche Zustände,
von denen ich noch nicht weiß, ob sie sich unterscheiden,
aber was ich auf jeden Fall weiß, ist,
dass die Zustände es E-1 und die Zustände in S-I-2,
dass die sich irgendwie unterscheiden und genauso alle anderen Kästen.
Und jetzt überlege ich, okay,
wie kann ich denn herausfinden, ob sich zwei Zustände unterscheiden?
Ich schaue mir einfach zwei Zustände an,
P-Strich und Kuhstrich und betrachte mal,
was sind die Nachfolgezustände
Wo komme ich dahin gewissermaßen? Und dann überlege ich,
ja, also mit A und B und A und B
jeweils ein P und Kuhstrich und wir nehmen an,
das sind alle Zeichen, die ich zur Verfügung habe.
Da lande ich letztendlich in einem solchen Kasten,
wenn ich da rückwärts gucke. Das heißt also,
P-Strich und Kuhstrich haben als Vorgänger nur Zustände,
die ich nicht unterscheiden konnte. Dann sage ich,
gut, jetzt habe ich nichts gewonnen,
kann ich die immer noch nicht unterscheiden,
packe sie also wieder in einen Kasten
Also keine neue Information. Anders bei diesen beiden Zuständen,
da stelle ich fest, Kuh bleibt mit A und B
in dieser Zustandsmenge SE2. P, dagegen nur mit B,
mit A habe ich einen Zustand aus einer anderen Box.
Das heißt aber, dass ich jetzt die Möglichkeit gefunden habe,
da ich ja weiß,
dass die Box SE1 und SE2 sich durch irgendein Wort unterscheiden,
kann ich jetzt rückwärts schließen, aha,
dann müssen sich auch P und Kuh unterscheiden.
Denn wenn Wenn ich hier ein Wort habe,
sie unterscheidet und hier noch ein A dazu packe,
dann unterscheidet sich das offenbar von Kuh.
Denn das kürzere Wort unterscheidet die beiden Zustände hier drin,
dann erscheidet das um A,
verlängerte Wort offenbar P und Kuh auch noch.
Und als Konsequenz packe ich die beiden in verschiedene Kästchen.
So, und das mache ich jetzt immer so weiter.
Bis ich da alle Zustände irgendwie sortiert habe.
Das ganze Verfahren kann ich nur endlich lange treiben,
denn in jedem Zustand muss sich was ändern,
also die Kästchenunterteilung wird in jedem Schritt
ein bisschen feiner
Das heißt, es kommt eigentlich immer ein Kasten dazu oder es ändert sich nichts mehr.
Aber dieses immer feiner machen kann ich auch nicht beliebig lange machen.
Denn das ganze Verfahren endet spätestens dann,
wenn jeder Kasten nur noch einen Zustand enthält und da ich nur endlich viele Zustände habe,
ist da spätestens nach Anzahl der Zustände vielen Schritten Schluss.
Also erhalte ich ein konstruktives Verfahren. Und wenn man von dieser Skizze das nochmal formulieren will,
dann sieht das ungefähr so formal aus, dass man sagt,
ich habe hier meinen DFA und versuche jetzt iterativ,
so wie eben skizziert, eine immer feiner werdende,
das jungte Zerlegung,
das nennt man dann
auch Partition zu erzeugen
Und die initiale Partition P1 besteht aus zwei Mengen.
S11 und S2, genauso wie eben gezeigt,
aus den finalen Zuständen und denen eben nicht finalen Zuständen.
Und jetzt der Induktionsschritt, ich gehe davon aus,
ich habe schon im Iten-Schritt eine Zerlegung in KI,
viele Partitionen und bilde mir daraus jetzt die neue Partition PI plus
1. Jetzt gucke ich nach,
so wie wir das eben gemacht haben.
Ich nehme zwei Zustände P und Kua
Und pack sie dann in denselben Block hinein,
wenn für jedes Symbol A gilt,
dass der Nachfolgezustand von Q mit diesem A und von P
mit diesem A im gleichen Block nach der Eaten-Iteration,
also ein PI, zum Liegen kommen.
Wenn das also der Fall ist,
dann kann ich P und Q nicht unterscheiden und dann kann
ich sie auch im nächsten Schritt iPlus 1 nicht unterscheiden,
dann gehören sie also im gleichen Block.
Wenn mir das gelingt, sie zu unterscheiden mit irgendeinem A,
dann packe ich sie in verschiedene Blöcke und dann ist
im Zweifelsfall die Unterteilung
feiner geworden
Ja, man mache sich hier klar,
dass in jedem Schritt die Unterteilung nur feiner werden kann.
Also es entsteht nicht eine völlig neue, sondern ein
alter Block wird höchstens noch in viele kleine Subblöcke zerlegt.
Aber es wird nie irgendwie neu zusammengewürfelt.
Und dann muss nach endlich vielen Schritten irgendwann mal gelten,
dass keine weitere Verfeinerung möglich ist.
Das heißt, was nach dem Einverfeindungsschritt zu iPlus 1 rauskommt,
ist das genau das Gleiche, was ich vorher hatte.
Die Partition unterscheidet sich nicht mehr, ist nicht mehr
feiner geworden
Dann terminiert dieses Verfahren. Und was ich dann bekomme,
ist eine Partition, so von der Art, wie sie hier aufgeschrieben ist, mit Zustandsmengen.
Und diese Zustandsmengen sind dann die Zustände des minimalen Automaten. Ja,
das sind mich jetzt Zustände, jeweils in allen so Mengenblock,
die ich bezüglich keines Wortes mehr unterscheiden kann, dass ich so heranziehen kann.
Und wie stricke ich jetzt die Übergangsfunktion oder Relation? Ich sage,
na gut, von einem solchen Zustand,
der ist ja jetzt eine Menge, ist IJ,
komme ich dann zu einem anderen Zustand, also einer Menge SIK,
genau dann, wenn es möglich gewesen wäre,
mit irgendeinem Zeichen von dem Zustand P in diese Zustandsmenge K zu kommen.
Für das X. Hier fehlt noch ein Komma X. Wenn ich
das alles brav mache, da kann auch nichts Schlimmes passieren,
wenn da die zuständige Qualent sind, das ist ganz klar,
da lande ich auf jeden Fall immer in dem Block SIK.
Vielleicht nicht beim gleichen Nachfolgezustand für ein X,
aber wenn ich von der Menge SI J starte,
lande ich doch auf jeden Fall immer in einer Menge SIK
Ja, sonst wären sie ja nicht äquivalent gewesen. So,
auf diese Art und Weise habe ich mir ein DFA konstruiert,
von dem man dann auch beweisen kann,
dass er nicht kleiner mehr geht.
Gut, damit sind wir also zufrieden. Wir wissen also jetzt,
es gibt ein konstruktives Verfahren zu jedem Automaten mit endlich vielen Schritten,
den minimalen Automaten zu konstruieren.
Wir müssen uns also keine Sorgen darüber machen,
wenn wir beim Entwurf eines Systems irgendwie einen Automaten erstmal bauen.
Es gibt Algorithmen, die uns das immer in die
minimale Repräsentationsform bringen können
Müssen wir also nicht selbst tun. Wir wollen jetzt weitergehen. Und noch ein,
zwei nette Eigenschaften hinzufügen, wenn wir schon dabei sind,
die Ausdrucksmächtigkeit für den Modellierer zu erhöhen,
dann war nicht die Terminismus eine praktische Sache,
aber jetzt fügen wir etwas hinzu,
was auch ganz praktisch ist.
Wir erlauben es auch,
dass ein nicht-deterministischer Automat Zustandsübergänge macht,
ohne dass er etwas von der Eingabe gelesen wird
Das heißt, der Zustand ändert sich,
ohne dass ein Beobachter einen Grund dafür erkennen könnte.
Es wird ja nichts Externes konsumiert. Wenn wir das jetzt beschreiben wollen,
müssen wir jetzt noch kurz einen kleinen Unterschied machen,
denn bislang konnten wir immer mit dem aktuellen Restwort,
also alles, was noch nicht gelesen wurde,
und dadurch ergebend auch alles,
was schon gelesen wurde,
das hat
den Zustand des Automaten
komplett beschrieben
Ich musste nur wissen, aha, dieser Prefix wurde gelesen.
Daraus ergab es sich vollständig deterministisch, denn der Zustand,
in dem der Automat jetzt sein musste, wenn er deterministisch war.
Oder ich konnte daraus ausrechnen, was die Menge aller möglichen Zustände
gewesen wäre, wenn der Zustand ein nichtdeterministischer Automat ist.
Wenn ich jetzt erlaube, dass ich noch Schritte mache,
Zustandsübergänge ohne, dass etwas von der Eingabe gelesen wird,
dann ist diese Menge nicht mehr ausreichend,
um das zu charakterisieren.
Da brauche ich noch eine Hilfsinformation,
die mir
noch mehr verrät
Diese Hilfsinformationen, die den eingenommenen Automatenzustand und die Eingabe irgendwie zusammen koppelt,
das Ganze nennen wir eine Konfiguration eines Automaten.
Wird uns noch später in verschiedenster Form von allen Automaten
haben ihre Konfiguration. Auch ein NFA hat eine Konfiguration,
wir fangen mal ganz einfach an und sagen,
eine Konfiguration K besteht aus einem Zustand P und einem Wort W.
Und die Lesart dieses Paares ist,
dass der Automat sich im Zustand P befinden mag und alles,
was er noch lesen muss,
das Wort W ist
Und der Spezialfall, das weh, das leere Wort,
Y ist, das ist auch erlaubt.
Und das soll bedeuten, dass die Eingabe vollständig schon gelesen wurde.
Wenn die Eingabe schon vollständig gelesen wurde,
dann kann ein normaler NFA oder ein DFA nichts mehr tun.
Wenn wir jetzt noch weitere Y-Übergänge erlauben, ist das nicht mehr so.
Und jetzt ist das Ganze natürlich Übergänge zwischen solchen Systembeschreibungen,
also Übergänge zwischen Konfigurationen, zu definieren.
Und das Wichtigste ist dabei, werden wir schon eine Konfiguration
haben, was dann die Folgekonfiguration ist
Also wir nehmen wieder an, wir haben ein NFA,
Peer und Kusen, Zustände und A seien ein
beliebiges Eingabesymbol und W sei ein beliebiges Eingabewort.
Und jetzt wollen wir definieren, dass QW eine Folgekonfiguration ist.
Und das kriegen wir genau dann hin, wenn wir sagen,
wir sind aktuell in der Konfiguration im Zustand P und das Restwort
ist ein Symbol A gefolgt von dem Wort W. Ja,
dann bin ich also gerade dabei, das Symbol A zu lesen.
Und jetzt schaue ich nach, was wäre denn ein
möglicher Nachfolgezustand bei der Eingabe A. Also ich schaue nach,
ich bin im Zustand P, lese das Zeichen A, Delta
Stern liefert mir dann eine Menge von Nachfolgezuständen, in die
ich jetzt eintreten kann. Wenn Kuh ein möglicher,
dieser Nachfolgezustände ist, dann weiß ich,
nach dem Konsumieren des As hier vorne,
wenn ich im Zustand P bin,
gelange ich einen Zustand Kuh und das A ist weg.
Also ist Kuh weh denn eine Folgekonfiguration. Und das kann man
ein bisschen suggestiver so notieren, dass man sagt,
P, im Zustand, Restwort AW,
geht über in die Konfiguration Nachfolgezustand Kuh mit dem Restwort
Und dieses umgedrehte Tee benutzt man als Pfeil-Symbol, ja,
eine asymmetrische Relation. Ich komme von der linken Konfiguration zu Rechten,
aber offensichtlich komme ich von der Rechten nicht zu linken.
Das ist ganz klar, das Wort wird ja immer kürzer, auf jeden Fall nicht länger.
Ich arbeite es ja nur ab. Deswegen die Asymmetrie. Und was ich jetzt noch beschreiben möchte,
ist, dass ich nicht nur einen Übergang machen kann,
wie hier, sondern dass ich ganz viele machen kann,
dann schreibe ich das Sternchen hinzu,
das kennen wir auch schon, dass ich bei Relationen reflexiv,
transitiven Abschluss machen darf, haben wir schon definiert,
aber anschaulich bedeutet das, wenn ich das Sternchen ranschreibe,
dass ich endlich viele Schritte Konfigurationsübergänge machen darf.
Endlich viele umfasst auch null Schritte zu tun, dann verändert sich
die Konfiguration gar nicht. So, und wie ist das definiert,
wenn man es komplett definieren will? Naja, ich weiß,
in null Schritten komme ich von K einmal nach K,
also nichts tun, ist die Option der Wahl, bei null Schritten
Und ich komme von K1 zu K3 in endlich vielen Schritten,
genau dann wann, wenn es eine Zwischenkonfirmation K2 gibt,
sodass ich von K1 in endlich vielen Schritten zu K2 komme.
Und von K2 in einem Schritt zu K3. Also letztendlich komme ich
hier in N plus 1 Schritten von K1 zu K3,
wenn ich hier in Endschritten von K1 zu K2 und dann in einem Schritt zu K3 komme.
So sind die Konfirmationsübergänge zusammengesetzt. So mit dieser neuen Schreibweise
können wir jetzt auch das Akzeptieren einer Sprache folgendermaßen definieren.
Also wir können es weiter so belassen. Wir hätten es auch so definieren können, wie jetzt in dieser Definition. Wir könnten also sagen,
wenn ich einen NFA A habe, gegeben wie bisher,
dann ist die Sprache, die akzeptiert die Menge aller Worte,
aus Sigmar Stern, sodass ist ein Startzustand P gibt und einen Endzustand Q,
sodass gilt, wenn ich in einer Startkonfiguration,
bei dem das gesamte Wort W noch vorhanden ist,
noch abzuarbeiten ist, in endlich vielen Schritten,
mich das Ganze zum Zustand Q,
das wäre ein Endzustand führt,
wobei denn
die Eingabe komplett abgearbeitet ist
Das ist exakt das Gleiche,
was ich schon mal als Definition der Sprache hatte,
nur jetzt mit dieser Notation einer Konfiguration und den Konfigurationsübergängen.
Wir haben also nicht viel mehr gemacht als Delta-Stern
jetzt mit einer anderen Syntax auch nochmal auszudrücken.
Warum haben wir das gemacht? Was haben wir gemacht als
Fingerübung, um jetzt die Apcelon-Übergänge einfacher definieren zu können?
Wir machen jetzt nämlich eine kleine Neuerung. Wir sagen,
wir haben jetzt einen endlichen Automaten, der erlaubt Äpcelon-Übergänge,
kurz Äpstelon FA. Äpstelon war ja das leere Wort
Das heißt, der Name sagt es schon, dass es
ein Automat, der kann Übergänge machen mit dem leeren Wort.
Und die Stelle, wo sich das bemerkbar macht,
ist die Stelle Delta. Denn Delta war ja vorher etwas,
das nahm ein Symbol und gab mir dann eine Menge von Zuständen zurück.
Ja, hier als Relation notiert. Und was wir jetzt hinzupacken,
ist, dass wir auch schauen, was ist der Nachfolgezustand,
wenn ich hier in Epsilon habe.
Also es gibt Übergänge, die weiterhin für einzelne Symbole definiert sind,
aber es gibt auch Übergänge,
die für das leere Wort definiert sind
So, hier ist das als Relation geschrieben. Manchmal ist es praktischer,
ist als Funktion zu schreiben, das ist genau das Gleiche.
Dann sage ich nicht mehr, du bist eine Relation,
sondern du bist eine Funktion, die einen Zustand Q nimmt.
Entweder ein Symbol oder das leere Wort und du lieferst jetzt
ein Element aus der Potenzmenge von Q, also eine Teilmenge von Q.
Und das ist wie gehabt die Menge der Zustände,
die ich mit diesem Symbol oder jetzt halt auch noch
neu mit dem leeren Wort erreichen kann
Und jetzt nehmen wir die Konfigurationsübergangsrelation heran, um dort zu definieren,
welche Übergänge sind jetzt mit dem Äpsteron möglich.
Und da sagen wir, okay, wir haben jetzt
ein X und X ist entweder ein Symbol oder Epstilon.
Wie ist, wie gehabt, ein beliebiges Wort,
also ein Element aus Sigma Stern.
Und jetzt sage ich, okay,
wenn ich einem Zustand pe bin und auf der Rest-Eingabe steht
noch XW
Ja, das sind zwei Fälle zu unterscheiden. Entweder es ist ein Symbol,
das da steht und ein Restwort weh,
dann ist es klar, da möchte ich dieses Wort X,
äh, dieses Zeichen X abarbeiten und was nachkommt,
naja, das Restwort weh und der Nachfolgezustand Q,
also muss ich nur schauen,
ist dieses P-X-Q-Element dieser Überführungsrelation Delta.
Ja, das heißt ja nichts weiter,
als ich komme mit einem X von P nach Q.
Das ist jetzt die Notation,
wo Delta eine Relation ist, also eine Teilmenge aller möglichen
beschrifteten Kantenzüge
Interessanter wird das Ganze hier, dieser Ausdruck,
wenn X das Äpzilon ist,
dann ist es ja etwas Neues, dann steht da ja,
ich komme von P und ich bin gerade ja,
weil hier vorne XY ist, in der Konfiration mit dem W eigentlich nur,
komme ich zu einer Konfirmation im Zustand Q,
aber mit dem Restwort W.
Das heißt, das Wort ist nicht kürzer geworden,
sondern ist gleich lang geblieben. Und das darf ich auch genauso machen,
wenn ich mit einem Äpzilon von P nach Q kommen kann,
also eine solche Kante vorfinde
So, wenn ich das so gemacht habe,
dann muss ich jetzt nur noch mal auf die Folie von eben schauen und sagen,
die Sprache ist jetzt die Menge aller Worte,
die mich von einem Staatszustand erst null in der Initialkonfiguration,
wo ich noch das Restwort V habe, in einen Finalzustand S führt,
wo ich nur noch Epsilon als Eingaberestwort habe.
Ja, und das einzige, was jetzt sich inhaltlich geändert hat,
also die Notation ist komplett gleich zur Folie eben,
das einzige, was jetzt hier passieren kann,
ist eben, dass XY ist und ist deswegen Zustandsübergänge,
also Konfigurationsübergänge gibt dadurch auch,
die nichts am Resteingabewort ändern
Was man ganz offensichtlich hat, ist es eine echte Erweiterung.
Denn so ein Äpzilon-Übergang, den muss ich ja nicht einbauen um meinen Automaten.
Diese Relation, wie sie hier geschrieben ist,
die kann ich ja so bauen, dass gar keine Äpzilon-Übergänge vorkommen.
Das heißt, diese Automat kann mit dem leeren Wort gar
keinen direkten Übergang machen. Wenn ich das also gar nicht nutze,
dieses neue Feature, dann erhalte ich eigentlich nur einen NFA,
so wie er schon mal definiert war
Und ich halte auch die gleiche Sprache, denn diese Konfigurationsübergänge,
wenn Epstilon gar nicht in der Kantenrelation steht,
dann gibt es ja auch keine Äpstilon-Übergänge,
dann funktioniert das Ganze wie bereits gehabt.
Das heißt, jede NFA ist irgendwie auch ein Spezialfall,
dieses neuen Äpstilon-NFAs. Und jetzt stellt sich die Frage,
gut, und wenn ich jetzt die Äpstilon-Kanten hinzupacke,
bekomme ich dann mehr oder bleibt das noch genauso mächtig,
wie es vorher war?
Oder kann ich jetzt andere Sprachen akzeptieren,
nicht vorher nicht akzeptieren konnte
Und die Aussage ist, nein, da tut sich nicht viel. Und die Idee ist,
wie man das konstruktiv macht, wir zeigen wieder,
dass ich zu jedem Epsilon-FA, also zu jedem Automaten,
der diese Epsilon-Kanten benutzt, wiederum ein NFA baue,
der dazu äquivalent ist, also keine anderen Zustände hat,
nur ein paar andere Kantenzüge und am Ende sogar noch die gleiche Sprache akzeptiert,
also wirklich äquivalent ist.
Und wie mache ich das? Ich mache das folgendermaßen,
die Idee ist, dass ich, wann immer,
Äpsilon-Kanten möglich sind, also wie hier an diesem Blau,
markierten Stellen, dass es möglich,
diverse Äpfel und Schritte hintereinander zu machen,
das sieht man daran,
hier steht unter der Count in Äpfelon und über der Kante so ein Stern.
Das heißt, von diesem Zustand Q0 komme ich zum Zustand Q1 in endlich vielen Äpfelon-Schritten.
Null sind auch möglich, dann mache ich gar keine,
dann wäre Q1 und Q0 identisch. Ja,
aber so erlaubt mir das immer zu sagen,
dass zwischen jedem Symbolen-Prinzip A, B, C,
ja, immer dazwischen kommen endlich viele Y-Schritte,
davor kommen endlich viele Y-Schritte und dahinter kommen
auch noch viele endlich,
endlich viele Äpfelon-Schritte
Sodass jedes Wort A, B, C,
wenn ich geschickt viele Epstilons dazu packe, eventuell auch null,
ich vom Staatszustand Kunnull in einen Endzustand Kunnull komme.
Und die Idee ist jetzt,
dass ich dort lokal am Zustandsdiagramm diese Äpstilon-Schritte abkürze.
Das heißt, von Kunnull jetzt direkte Übergänge zu Q2 mache.
Jetzt gibst du die erste Frage, kann man diese Äpstilon-Übergänge dieses Äpstilon-Sternchen,
also diese Relation, kann man das überhaupt effizient ausrechnen?
Eine effizient ist erstmal gar nicht wichtig,
ob das schnell geht
Kann man das überhaupt ausrechnen? Wird uns schon mal reichen?
Ja, und man kann es ganz aus elementaren Gründen,
kann man es immer ausrechnen, weil ich nur endlich viele Zustände habe.
Und es ist mir im Prinzip endlich viele schleifenfreie Übergänge gibt
, kann ich im Prinzip alle ausprobieren.
Und deswegen kann ich feststellen, welche Zustände nur durch Apsodon
Kanten miteinander verbunden sind. Das kann ich machen,
das geht. Für die mathematischen Beweis wäre die Tatsache,
dass man das ausrechnen kann,
gar nicht
so wichtig
Wenn ich einen Algorithmus haben möchte, der das tatsächlich umsetzt für mich,
irgendwie als hilfreiche Prozedur in einem Tool, dann wäre das schon ganz schön.
Um mathematisch festzustellen, ob dieser neue Äpzilon-Automat tatsächlich mehr kann,
wäre das gar nicht mal so wichtig.
Aber natürlich ist es schön, wenn man es tatsächlich ausrechnen kann.
So, wie sieht das jetzt aus? Wie verkürze ich
das? Ich habe also hier vorne die folgende Sequenz,
wie die ich auch eben hatte, um A,
B und C herum sind jeweils endlich viele Äpzilon-Schritte,
wie viele auch immer.
Und jetzt kürzt sich ein bisschen ab. Ich stelle fest,
hier ist dieser Übergang für Arme von Q1 nach Q2 und hier vorne endlich viele Apslon-Schritte.
Dann entferne ich die alten Kanten und füge stattdessen eine A-Kante hinzu,
die direkt von Q0 nach Q2 führt.
Das heißt, ich habe eine Abkürzung geschaffen.
Genauso mache ich das hier, die endlich vielen Y-Schritte,
die ich ausgerechnet habe und das B führen zu Q4,
das kürzt sich wieder ab, kommen von Q2, Dreck zu Q4.
Für das Ziel genau das Gleiche, Die beiden kannten hier,
die Kantenzüge mit dem Äpstelon, die kommen weg.
Und stattdessen wird direkt von Q4 nach Q6 ein Übergang gemacht.
Und jetzt behandle ich nochmal die letzten Äpstelon-Schritte. Da mache ich
jetzt keine Kante mehr, sondern ich mache folgenden Trick.
Von Q6 könnte ich ja durch schieres Nichts tun,
also nur durch Zustandsübergänge, aber ohne etwas zu lesen,
könnte ich direkt in einen Endzustand kommen.
Und das simuliere ich jetzt so in diesem neuen System,
dass ich einfach rückwärts alles zu Endzuständen mache,
was rückwärts durch Äpstelon kann,
verbunden ist
Ich schiebe also die Endzustände näher an das Wort ran.
So, das ist die Idee, die haben wir
jetzt hier skizziert für ein Wort. Im Prinzip möchte man
das ja jetzt allgemein machen können für ein beliebiges Wort.
Davon gibt es unendlich viele. Aber zum Glück muss ich
das ja nicht für jedes Wort machen, das es da so gibt,
sondern ich muss es eigentlich nur für jede Kante,
die im Automaten vorkommt, machen.
Also wenn es eine A-Kante ist im Automaten, dann muss ich sagen,
okay, dann füge ich hier diese Abkürzung ein.
Und im Automaten selbst gibt es nur endlich viele Kanten.
Das heißt, ich habe auch nur endlich viele Dinge zu
So, und diese Idee kann man jetzt komplett ausnutzen,
um folgenden Satz zu beweisen. Nämlich,
dass es zu jedem NFA, der Äpzilon-Übergänge erlaubt,
also zu jedem Äpzilon FA, gibt es einen Äqualenten NFA,
der dann keine Äpzilon-Übergänge mehr hat.
Was insbesondere auch impliziert, dass Äpzilon NFAs nicht mächtiger sind
als die alten NFAs. Ich habe also nichts bekommen,
was die Menge der Akzeptierten Sprachen über reguläre Mengen
hinaustreiben könnte
Wir sind also immer noch im regulären Bereich. So,
und mathematisch definieren wir das folgendermaßen. Wir haben also ein NFAA,
der hat Äpfelon-Kanten und konstruieren uns jetzt ein NFAB,
der keinem Äpfelon-Kant mehr haben wird.
Und da verändern wir nichts oder fast nichts,
Zustände bleiben gleich, Alphabet bleibt gleich, Staatszustände bleiben gleich.
Was sich verändert, sind die Übergänge.
Klar, wir müssen jetzt Abkürzung schaffen. Und wie wir
eben gesehen haben, wir müssen die Endzustandsmenge vergrößern,
weil wir Äpfelon-Kanten rückwärts laufen
Und das machen wir folgendermaßen. Wir schauen mal nach.
Gibt es einen Übergang von Z-Strich mit einem X nach Z2-Strich,
also eine Kante, die mit X beschriftet ist? Und gibt es die Möglichkeit,
im Automaten A, aus einer Konfiguration, wo wir nichts lesen,
in eine neue Konfiguration mit dem gleichen Restwort zu kommen,
also was hier steht, ist eigentlich egal,
was hier zum Ausdruck kommt, ist,
ich komme nur mit Epsilon-Kanten von Z nach Z-Strich,
aber hier sieht man das in der Notation daran,
Da ist ja gar nichts mehr, was eingelesen werden kann.
Also ein Restwort ist nicht mehr da. Ich mache trotzdem
vielleicht noch Übergänge, natürlich. Das Wort kann nicht mehr
kürzer werden, aber es bleibt da. Das heißt,
die einzige Möglichkeit, solche Übergänge zu machen,
ist in A, dadurch gegeben, dass man Äpstelon-Kanten überschreitet.
Das heißt, ich komme also von Z zu Z-Strich,
indem ich ausschließlich überall mit Y beschriftete Kanten laufe und von
Z-Strich komme ich jetzt mit dem Symbol X nach Z2-Strich.
X ist hier auch wirklich ein Symbol, das sieht man daran,
dass wir jetzt abkürzen von Z nach Z-Strich, nach Z2-Strich,
trennen wir das Z-Strich in der Mitte raus und sagen,
wir kommen jetzt direkt von Z zu Z2-Strich mit dem X.
Und das ist jetzt eine neue Kante,
die mich von Zustand, Symbol, zu einem Nachfolgezustand bringt.
Und deswegen war hier Sigma steht, weiß ich X,
muss ein Element aus Sigma sein.
Kann also insbesondere hier vorne keine Äpselon-Kante sein.
Das müssen wir ausschließen. Wir sagen,
also wir haben ja einen richtigen Übergang mit einem richtigen Symbol
und hier vorne lauter Äpselon-Übergänge
Das ist jetzt meine neue Kantenrelation. Also ich habe deutlich mehr Kanten
typischerweise jetzt. Und was ich jetzt noch bekomme, ist,
paar mehr Endzustande, im Zweifelsfall. Ich sage nämlich,
wenn ich vorher in Endzustand Q hatte,
und ich komme von irgendeinem anderen Zustand P nur durch Ypslon-Kanten zu Kuh,
dann soll nicht nur Kuh ein Endzustand sein,
sondern jetzt auch dieses P,
was vorher kein Endzustand war.
Das ist auch sinnvoll, denn es ist ganz klar,
der eine Automat hat die Möglichkeit,
in einen Endzustand
zu kommen
Indem er einfach von P nochmal über Äpfelon kannten zur Kuh läuft. Naja,
da ist es nur fair, wenn er neue Automat gleich an Endzustand ist,
der hat ja keine Äpfelon-Kanten, die er jetzt benutzen darf.
Also, das ist die Idee, streng genommen wird jetzt noch zu beweisen sein,
dass wir uns aber ersparen wollen,
dass Automat A und B tatsächlich Äquivalent zueinander sind,
dass die also wirklich gleiche Wortmengen akzeptieren.
So, und was wir auch noch in den Übungen machen,
was auch in der Vorlesung Algorithmen und Datenstrukturen noch ausführlich besprochen werden soll,
ist, Die Frage, wie man die Paare,
P und Q, die die Eigenschaft haben,
dass ich von P nur mit Epselon-Übergängen zu Kuh komme,
wie man die tatsächlich effizient ausrechnen kann.
Und da hat es der Float Warshall-Algorithmus, der mir genau diese Paarmenge bestimmt.
Gut. Jetzt haben wir also, was haben wir eigentlich gemacht?
Warum haben wir es gemacht? Wir haben einen neuen Automatentyp
definiert, der jetzt ein bisschen mehr darf.
Er darf jetzt über Epselon-Kanten hinüberlaufen. Das ist erstmal nichts
, was die Ausdrucksmächtigkeit erweitert
Dieses Theorien sagt ja gerade, ich kriege auch immer
einen Automaten hin, der ohne Epstilon-Kanten läuft.
Aber es ist ganz praktisch, jetzt diesen Automaten zu haben.
Denn damit können wir folgenden Satz leichter beweisen. Wir können nämlich
einige Abschlusseigenschaften. Ich hatte es bei letzten Terminen angedeutet,
mit diesem Automatentypen leichter zeigen, dass sie gelten.
Es war schon mal angedeutet, dass die Familie der
regulären Sprachen abgeschlossen ist gegenüber den folgenden Operationen.
Wir hatten schon mal gezeigt, dass die Vereinigung eine Abschlussoperation ist.
Das heißt, wenn ich zwei reguläre Mengen habe, ist auch deren Vereinigung regulär.
Und wir hatten das dadurch gezeigt, dass wir gesagt haben,
wenn ich einen Automaten habe für die eine reguläre Menge und einen zweiten Automaten für die andere,
dann kann ich daraus einen neuen Automaten konstruieren,
der die Vereinigung akzeptiert.
Und dann hatten wir noch gesagt, okay,
es gibt viele andere Eigenschaften, nämlich das Hintereinanderschreiben von Sprachen.
Stern bilden, Durchschnitt bilden, Kompliment bilden,
Hormoverfismen bilden und all diese Dinge sind auch Abschlusseigenschaften,
aber das zu zeigen ist leichter, wenn wir Epsilon-Kanten haben.
Und jetzt haben wir die
Also beweisen wir diesen Satz jetzt mit Hilfe von Epstellon-Kanten.
Wie geht das? Fangen wir links oben an, das Produkt.
Ich will also die Sequenz, das Konkartinieren aller möglichen Wortkombinationen erreichen. Und zwar,
wenn ich eine Sprache A habe und eine Sprache B,
dann möchte ich ein Wort aus A nehmen und ein beliebiges anderes Wort aus B
dahinter hängen und alle möglichen solchen Wortpaare sollen jetzt im Produkt drin sein.
Das ist Konkartinationen von Sprachen. Und das erreiche ich
im Prinzip dadurch und das wird auch hier angedeutet,
indem ich einen Automaten habe, nämlich ja eins,
der die erste Sprache akzeptiert und einen Automaten, der die zweite Sprache akzeptiert.
Und ich jetzt folgenden Trick mache, wann immer der erste Automat gewissermaßen fertig sein könnte.
Also mit einem Wort in einem Endzustand hätte gelangt sein können,
dann mache ich einen spontanen Übergang,
ohne etwas zu lesen, also hier in Äpzilon-Übergang,
und zwar von jedem dieser Endzustände hin zum Startzustand des zweiten Automaten.
Und der hat ja die Möglichkeit,
jetzt ein Wort aus der zweiten Sprache
zu akzeptieren
Ja, und das ist natürlich kein Startzustand mehr.
Und wenn ich das mache, führt das natürlich dazu,
dass ich hier ein Wort erstmal akzeptieren könnte,
das ist aus der ersten Sprache, mache einen Äpzilan-Schritt.
Nichts verändert sich. Und hier kann ich jetzt ein Wort
der zweiten Sprache akzeptieren. Und auf diese Art und Weise
akzeptiere ich genau alle möglichen Konkerten-Nationen von solchen Sprachpärchen.
So, das ist also schlichtweg das Verschmelzen über Anfang und
Ende mit Äpzilan-Kanten. Und Vereinigung, Vereinigung läuft sogar,
wir hatten es mal ein bisschen komplizierter gezeigt,
es geht sogar noch viel einfacher mit Äpzilan-Kanten.
Ich sage einfach, wenn ich zwei Automaten habe,
die die Sprachen A und B akzeptieren, dann mache ich mir einen neuen Startzustand.
Die beiden sind jetzt keine Startzustände mehr und ich entscheide hier am Anfang,
wo ich hier nicht gehen will,
welcher der beiden Automaten jetzt angeworfen werden soll.
Und damit an der Eingabe sich nichts ändert,
ist hier am Anfang in Y-Übergang. Das heißt,
ohne, dass sich irgendetwas verändere an der Eingabe,
bin ich entweder hier oder hier.
Also ein spontaner Zustandswechsel, der jetzt entscheidet,
aus welcher Menge ich etwas akzeptieren möchte.
Komplimentbildung ist relativ einfach, wenn man schon
einen DFA hat
Denn wenn man einen DFA hat,
dann weiß ich ja zu jedem Wort,
gibt es genau eine Folge durch diesen deterministischen Automaten.
Das führt mich jetzt in einen Endzustand oder einen Nicht-Endzustand,
besonders wenn es ein Vollständiger ist, ist das einfach.
Und jetzt vertausche ich End- und Nicht-Endzuständen. Also was vorher
ein Endzustand ist, ist jetzt ein Nicht-Endzustand. Und was
vorher kein Endzustand war, wird jetzt ein Endzustand sein.
Das führt dazu, jedes Wort, das vorher akzeptiert wurde,
wird jetzt nicht mehr akzeptiert.
Und ein Wort, das vorher nicht akzeptiert wurde,
wird jetzt akzeptiert. Das heißt, Akzeptierung,
Eigenschaften sind genau andersrum
Deswegen wird ein solcher Automat genau das Kompliment der Ursprungssprache akzeptieren.
Auch praktisch. Durchschnitt, wenn ich zwei reguläre Sprachen schneide,
kommt da etwas raus, was wieder regulär ist,
das könnte man direkt zeigen, müssen wir aber nicht.
Für die Komplimentbildung ist wichtig, dass der DFA vollständig ist.
Sonst würde das nicht klappen,
dann hätte ich mich drei mögliche Varianten undefiniert, Endzustand,
nicht Endzustand,
dann klappt das nicht
so schön in dieser Argumentation
Durchschnitt kann man auch eine Konstruktion machen,
das ist denn die sogenannte Produktautomatenkonstruktion, müssen wir aber gar nicht,
denn wir wissen ja schon bereits,
dass Vereinigung und Komplimentbildung eine Abschlusseigenschaft ist.
Wieso reicht das, um jetzt zu wissen,
dass der Durchschnitt abgeschlossen ist
Warum ist es ausreichend zu wissen, dass,
wenn ich schon ein Kompliment habe und Vereinigung,
dass ich dann auch den Durchschnitt als regulär nachweisen kann?
Ja, also mit dem Morgen weiß man ja,
dass das Kompliment eines Schnitts gleich der Vereinigung der Komplimente ist.
Und deswegen ist der Schnitt auch definierbar,
also wenn ich A und B schneiden will,
dann nehme ich das Kompliment der Vereinigung der Komplimente,
also wenn nicht hinreichend viele Komplimentzeichen über dem Ganzen spendiere und vereinige,
dann kommt da der Durchschnitt raus.
Das ist elementare Mengentheorie, dann weiß ich,
Durchschnitt kann ich letztendlich auf Komplimentbildung, Vereinigung zurückführen.
Wenn ich weiß, das sind Abschlusseigenschaften, entsteht bei allen Zwischenrechenschritten
wieder etwas Reguläres, also muss auch das Endprodukt regulär sein.
Das heißt, das kann man indirekt schließen,
da müssen wir gar nicht einen Automaten direkt angeben,
sondern das folgt aus einfacher Mengenalgebra.
Und Homer Morphismen verschieben wir später
Was gibt's noch an interessanten Eigenschaften, die wir hatten?
Sternbildung, haben wir gesagt. Ist auch noch eine Abschlusseigenschaft.
Sternbildung bedeutet, wenn ich eine reguläre Menge A habe,
dann interessiert mich A, Stern. A, Stern ist ja die Menge,
die aus beliebig vielen Konkreternationen von Worten aus A besteht.
Also ein Wort, das A, ein anderes Wort aus A,
ein drittes Wort, das A, beliebig viele solche Worte aus A hintereinander.
Das kriege ich, indem ich den endlichen Automaten,
der diese Menge A akzeptiert, sagen wir lieber,
die Menge B und das ist hier der Automat A,
Dann kriege ich diese Menge,
indem ich den Automaten immer wieder auf Anfang zurücksetze.
Das heißt, sobald der in ein Endzustand gerät,
also ein Wort akzeptiert hätte, sage ich, gut,
und jetzt fang bitte nochmal von vorne an,
indem ich hier eine Äpzilon-Kante habe,
die das Ganze wieder von vorne beginnen lässt.
Das heißt, nachdem der ein Wort gelesen hat,
kann er wieder von vorne anfangen.
Und nochmal und nochmal und nochmal irgendwelche Fade durch den Automaten.
Er kommt ja immer wieder zum Staatszustand zurück.
Und um auch zu ermöglichen, dass in einer Stern ja
null mal ausgewählt werden kann, erlaube ich das.
Ich habe hier einen neuen Startzustand, der ist auch
gleichzeitig Endzustand
Das ermöglicht mir also den Automaten nullmal zu durchlaufen.
Und wenn ich jetzt einen Y-Schritt mache, sage ich,
okay, offensichtlich wollen wir mindestens einmal hier Durchläufe machen.
Einmal, zweimal, dreimal. So, man kann sich klarmachen,
das Ganze würde nicht so einfach klappen,
wenn ich hier den Staatszustand Q0 im neuen Automaten,
ist der kein Staatszustand mehr, das wird also gestrichen.
Wenn ich dieses Q0 zu einem End- und Staatszustand gleichermaßen machen würde. Nein,
es könnte ja sein, dass der alte Automat Hier irgendwo
bleibt noch in keinem Endzustand wahr, inzwischendurch wieder zum Startzustand zurückkehrt.
Denn würde jetzt plötzlich ein Wort akzeptieren können,
das vorher nicht in A drin gewesen ist.
Das wäre so ungünstig. Um das zu verhindern,
können wir leider hier nicht den Startzustand zum Endzustand machen,
um null mal die Durchläufe zu simulieren,
sondern dazu brauchen wir tatsächlich einen neuen Startzustand, der auch neuer Endzustand ist.
So, und ansonsten muss sich nichts ändern,
das ist jetzt genau der Automat, der mir den Cleany-Stern,
also den reflexiven, transitiven Abschluss der Sprache, akzeptiert.
Gut, jetzt wissen wir eine ganze Menge, wenn ich
was Reguläres habe, dann bleibt das Ganze auch regulär.
Jetzt mal die Frage, wir wissen jetzt eine ganze Menge,
was regulär ist und wissen wir auch irgendetwas über Dinge, die nicht regulär sind?
Oder ist jetzt eigentlich alles regulär? Das wäre ziemlich langweilig,
wenn alles, was man so kennt oder braucht, regulär ist,
dann wäre dieses Konzept regulär zu sein, ein ziemlich langweiliges.
Wenn alles regulär ist, hat dieser Begriff irgendwie keinen tieferen Sinn mehr für uns.
So, also es gibt eine Menge Sprachen,
wir hatten auf einer Folie vorhin schon mal Aussage,
dass die Sprache, die aus genauso vielen As wie Bs gefolgt,
dass die nicht regulär ist.
Also es gibt schon mal Sprachen, die nicht regulär sind.
Punkt eins. Punkt zwei kann man das beweisen.
Ja, man kann das beweisen. Man muss aber,
und das ist das Problem eigentlich beweisen,
dass es keinen DFA gibt, der diese Sprache,
bleiben wir bei A auch NBON.
Das ist kein DFA, NFA, Äpfel und NFA,
was auch immer gibt, der diese Sprache akzeptieren kann.
Offensichtlich kann man diese Aussage nicht direkt beweisen.
Warum nicht
Es gibt unendlich viele endliche Automaten. Ich kann sie also nicht
direkt durchprobieren und gucken, ob sie die Sprache haben.
Ja, und ich kann auch nicht irgendwie konstruktiv so direkt zeigen,
dass es keinen Automaten gibt, der diese Sprache hat.
Also brauche ich irgendwie ein anderes Hilfsmittel. Ich brauche
eine Eigenschaft, die irgendwie allen regulären Sprachen gemeinsam ist.
Und aus dieser Eigenschaft muss ich dann schließen können,
dass es manche Sprachen gibt, wenn sie diese Eigenschaft nicht haben,
dann können sie offensichtlich nicht regulär sein.
Und es gibt verschiedene solche Techniken, verschiedene Hilfsmittel,
Das Standardhilfsmittel ist das sogenannte Pumping-Lämmer oder von seinen Hauptbestandteilen UVW-Theorien genannt.
Und das sagt mir Folgendes aus,
wenn ich die Worte nur hinreichend lang mache,
dann muss ich da irgendwie was regulär verhalten, muss ich was wiederholen.
Denn Automat hat nur endlich viele Zustände.
Wenn ich also ein Wort ganz schön lang mache,
dann wird sich mal ein Zustand wiederholen.
Und dann befinde ich mich in einer Schleife.
Und im Prinzip geht es jetzt darum,
genau zu charakterisieren,
wie diese Schleifen in einem Automaten aussehen müssen
Und man kann zeigen eben, dass es manche Sprachen gibt,
die mit solchen einfachen Schleifen, wie sie endliche Automaten haben,
eben nicht in der Lage ist, die Sprache zu akzeptieren.
So, und was macht man, dass Pumping-Lemmer sagt uns jetzt,
wenn die Sprache regulär ist und ich weiß,
ein Wort ist in der Sprache enthalten ist,
dann weiß ich auch,
andere Worte müssen in der Sprache enthalten sein.
Wenn das nicht der Fall ist, dann kann ich rückwärts schließen,
dann kann die Sprache nicht regulär gewesen sein.
So, gucken wir uns gleich an ein Beispiel an.
Wie kann man sich das illustrieren?
Diese Eigenschaft, dass die Worte
hinreichend lang sind
Wenn ich schon einen Automaten habe, einen deterministischen, meinetwegen,
um das Leben ein bisschen einfacher zu machen, gern noch vollständig.
Und der soll jetzt Endzustände haben. Wenn ich jetzt ein Wort betrachte,
akzeptiert wird es, dass die Länge N hat. Ja,
was passiert dann, wenn ich Endzustände habe,
dann bin ich spätestens nach N minus eins Zeichen,
einmal komplett mit allen Zuständen durch,
was dazu führt,
dass spätestens beim Entenzeichen
ein Zustand
wieder Meier
Besucht werden muss. Kann auch vorher sein,
aber spätestens beim letzten Übergang kommt ein Zustand nochmal vor,
den ich schon mal hatte. Oder andersherum formuliert,
ist es nicht möglich, wenn das Wort die Länge N hat.
Und ich habe Endzustände, dass alle Zustände,
die ich da besucht hätte zwischendurch und am Ende und am Anfang,
dass die alle verschieden wären.
Mindestens einer ist doppelt. Sondern genau diese Idee,
mindestens einer ist doppelt, das kann ich so aufmalen.
Ich sage, okay, nehmen wir mal an, dieser Zustand,
QI und QJ, das sind jetzt zwei Zwischenzustände, die werden die gleichen.
Das heißt, es passiert Folgendes im Automaten,
erst lese ich U nach dem Wort V passiert ist,
ich treffe auf einen Zustand, den ich schon mal hatte.
Kommen also wieder zurück zu einem bereits besuchten. Und dann
lese ich das Wort weh in Endzustand. Das heißt,
was hier als Kette gezeichnet wird, ist tatsächlich eher so etwas
wie ein Teilwort, ein Kreis und noch ein Restwort.
So, wenn ich aber weiß, es gibt diese Schleife,
dann weiß ich doch auch, naja,
dann wird auch das Wort u und ich laufe jetzt zweimal lang und lese dann weh,
also u-v-v-w.
Das führt mich ja dann
genau seine Endzustand
Dreimal oder viermal. Oder ich könnte es noch weglassen.
Ich könnte ja auch diesen Schleifendurchlauf weglassen und komme direkt von Kunul
mit U und dann direkt dem W zum Endzustand QM.
Das heißt, für alle möglichen Wiederholungsformen, also V-I,
wird auch das Wort U-V-I mal weh gefolgt, akzeptiert. So,
mit dieser Grundidee, das ist eigentlich alles,
was wir brauchen an Zutaten, wenn wir das haben,
dann können wir diese Idee jetzt in Form eines Satzes aufschreiben,
nämlich abstrakt gesehen, weiß ich, Wenn ich eine reguläre Menge erhabe,
dann muss es immer eine solche Zahl N geben.
Ja, das ist im Wesentlichen die Zahl der Zustände,
des kleinsten Automaten, da diese Sprache eher akzeptiert.
Und wir wissen ja, es gibt den minimalen Automaten.
Gut, also dessen Zustandsanzahl nehmen wir. Und dann gibt
es für jedes Wort Z, das hinreichend lang ist,
also so lang wie diese Anzahl der Zustände,
da passiert denn folgendes, ich kann es immer so wie eben dargestellt,
in drei Teilworte UVW zerlegen, also Z ist gleich UVW.
Und es gilt folgendes, wir haben gesehen,
UV muss kleiner gleich N sein. Ja,
das liegt daran, spätestens nach Endzeichen,
wiederholt sich das und U soll sein bis zum ersten Auftreffen,
das sich wiederholenden Zuständen und V das Wort bis zum zweiten auftreten, dieses Zustands.
Also wenn wir zurückgehen, sehen wir ja,
das Wort U ist bis zum ersten Eintreten in den Zustand QI und V ist das zweite Eintreten.
Und das ist doch jetzt der erste Zustand sein,
der sich wiederholt. Alle anderen waren bislang verschieden. So,
dann gilt also weil das spätestens nach N passieren muss,
ist dieses Anfangswort UV, höchstens von der Länge N.
Und zweitens, es ist tatsächlich so, dass V ein echter Kreis ist.
Also es ist nicht so, dass so ein mathematisch degenerierter Fall eintritt,
dass V die Länge Null hätte, also gar kein echter Kreis ist.
Nein, es ist tatsächlich so, dass V ein richtiges
Wort ist, auf dem tatsächlich auch was gelesen wird.
Sonst wäre das gewissermaßen immer so ein blödes Hintertürchen im Satz.
Und was dann gilt, ist die Aussage,
ich kann ja V dann beliebig oft durchlaufen.
Das heißt, die Sprache, die aus U besteht,
dann beliebe ich oft V, hier als V-Stern geschrieben,
gefolgt von W, ist Teilmenge dieser regulären Menge
R. So, das ist also eine Aussage,
die für jede reguläre Menge R gilt. So,
wenn sie für jede reguläre Menge ehrgelt, dann muss sie
auch für diese sehr einfache reguläre Menge L hier unten gelten.
Der hat hier drei Worte, A, B,
B, A, B, B,
A. Das heißt, diese Eigenschaften,
die im Satz formuliert sind,
die gelten also
auch für diese Sprache
Und wie ist das jetzt? Wenn man hier genau hinguckt,
UV-Stern, V ist ja ein nicht leeres Wort,
das sagt mir die Teileigenschaft 2, das heißt UV-Stern-W,
was hier steht,
ist ja eine Menge mit unendlich vielen Elementen.
Das heißt, das ist eine unendlich große Menge und die
ist Teilmenge von R. Daraus könnte man doch wohl schließen,
dass er unendlich groß ist.
So, nun ist diese Menge L aber deutlich endlich,
hat mich drei Elemente und ist regulär
Kann sehr leicht ein NFA konstruieren, der das akzeptiert.
Hm. Wo liegt jetzt die Erklärung des Rätsels?
Wenn man sich das Theorien anschaut, sieht man ja,
dass es eine Aussage ist, die sagt,
für jedes Wort, das größer ist als N,
dann gibt es eine Zerlegung mit den folgenden Eigenschaften. So,
wenn jetzt N, aber zum Beispiel so groß ist,
dass es gar kein Wort Z gibt, dessen Länge größer wäre,
als die Elemente hier, also wir wählen mal vier,
fünf oder solche Sachen, das heißt Worte,
die Länge sind als das längste Wort hier,
dann ist ja gar nichts mehr zu zeigen.
Also das kann durchaus passieren, Hier stets war das eine unendlich große Menge Teilmenge von R wäre.
Aber nur unter der Bedingung, dass es ein solches Set gibt,
das ein länger größer ist, ist jetzt N. Das heißt,
diese Aussagen sind immer unter der Bedingung,
dass es ein geeignetes Wort Z gibt, das hinreichend lang ist.
Und für diese Menge, die ist auch regulär,
aber da gibt es eben gar kein Wort Z,
das so lang ist. Und das führt dazu,
dass das Theorien oder dieser Satz trivialerweise gilt,
weil seine Eigenschaft, seine Vorbedingung in dem Wenn-dann-Teil nie erfüllt
ist.
Also besonders einfach
Gut, im Prinzip wissen wir also, warum es gilt.
Wir haben es mathematisch formuliert. Jetzt schauen wir uns an,
wie man eine solche Aussage mathematisch ein bisschen, ja,
wasserfest konstruieren kann. Wir nehmen also an,
wir haben einen Automaten A, ein vollständiger DFA,
der die Eigenschaft hat, er zu akzeptieren.
Das heißt, die Sprache dieses Automaten ist diese reguläre Menge.
Und jetzt wählen wir N, als die Zustandsmenge Kuh.
Und wir betrachten ein Wort, das aus den Symbolen X1,
X2 bis XM besteht. Aus dieser Sprache soll das Wort
Z sein. Und es soll mindestens so lang sein,
wie die Anzahl der Zustände. Gut, da haben wir
uns ja schon auf der Folie zuvor klargemacht.
Ich besuche dann also M-Plus-1-Zustände. Ich starte mich in Q0
, komme dann mit X1 zu Q1.
Mit X2 komme ich zu Q2 und immer so weiter von
QM1 komme ich mit XM zu QM
Das heißt, das sind alles Zustände, die ich direkt unterwegs aufsammle.
Das kann ich auch kürzer schreiben für alle I,
die zwischen 1 und M liegen,
gilt der Zustand Kuis, das, was sich ergibt,
wenn ich bei Q0 starte und das Anfangswort von X1,
X2 bis XI, also nur die ersten I-Zeichen einlese,
dann lande ich im Zustand QI.
Gut, das sind eigentlich erstmal Namen für die Zustände.
Was jetzt für uns entscheidend ist, ist der letzte Punkt.
Mathematisch hat das sogar einen Namen, das heißt Schubfachprinzip.
Ja, wenn ich Fünf Socken auf vier Schubladen verteilen will,
dann liegt in mindestens einer Schublade zwei Socken.
Das kann man mathematisch dann auch ein bisschen abstrakter machen. Ja,
das heißt, da ich hier nur Endzustände habe,
aber M davon betrachte,
in dieser Sequenz Q0 bis QM habe ich ja M plus 1 viele,
also habe ich mehr Elemente als Zustände,
da müssen sich irgendwann mal mindestens einen Zustand wiederholen.
Gut. Jetzt picken wir uns davon einen Zustand raus.
Wir nehmen nämlich einen Zustand, Für den gilt,
dass QI gleich QJ ist, das sollen die beiden Indizes sein.
QI und QJ I soll vor J kommen.
Und das Ganze muss auch vor dem Zeitpunkt N geschehen.
Denn ich nehme den ersten Zustand, der sich wiederholt. Ja,
bei einem ziemlich langen Wort könnte ich natürlich auch sagen,
naja, hinten werden sich auch Zustände wiederholen.
Das interessiert mich aber nicht. Ich schaue von vorne beginnt,
nach welcher Zustand der erste ist, der ein zweites Mal auftritt.
Und dann muss ich nur noch ablesen,
die Worte UNV sind quasi schon klar.
Ich nehme das Wort von X1 bis zu dem,
was ich bekomme, wenn ich das Zeichen XI
gerade eingelesen habe,
also bis QI
V ist das Mittelstück,
das mich mich von dem nächsten Zeichen wieder in den Zustand QJ führt,
also von XI plus 1 bis XJ komme ich ja wieder von QI nach QJ.
Und wie ist der Rest bis zum Ende XM? Dann habe ich eine Zerlegung,
die gerade die Eigenschaft hat, dass X1,
also U und V zusammen X1 bis XJ,
J ist kleiner gleich N,
also ist das Wort UV,
so beschaffen,
dass seine länger,
länger kleiner
gleich N ist
Zweitens, ich habe tatsächlich zwei Indizes.
I ist echt kleiner als J. Das heißt,
dieses Wort V besteht aus mindestens einem Zeichen, nämlich dem Zeichen XJ.
Ist also nicht leer. Zweite Bedingung ist erfüllt. Und
auch die dritte Bedingung leuchtet ein, weil man ja zeigen kann,
sehr leicht sogar. Wenn ich nämlich den Zustand QI betrachte,
und jetzt YG, komme ich wieder zu QI.
Also null Durchläufe ändern am Zustand nicht.
Wenn ich V lese im Zustand QI, komme ich
zu QJ
Na gut, das wusste ich, dass das kuierst.
Also lande ich auch da wieder bei Qui. Genauso bei zweimal, bei dreimal.
Das kann ich hier entweder glauben oder wer noch nicht zufrieden ist,
darf auch eine vollständige Induktion an dieser Stelle schreiben.
Aber es ist, glaube ich, ziemlich klar,
dass egal, wie oft ich faul dich laufe,
ich immer im gleichen Zustand Qui wieder lande.
Also habe ich die Eigenschaft,
so wie wir das schon mal hatten, alle Worte,
die die Form haben, u, kam mal das V,
also Karschleifendurchläufe, dann das Wort weh,
die werden in diesem Automaten A ebenfalls akzeptiert.
Gut,
was mache ich jetzt damit
Es ist eine Eigenschaft, die ich bewiesen habe.
Sie gilt. Wir gucken noch mal hier. Sie gilt
für jede reguläre Menge R. Und jetzt haben wir erst mal
ein paar Probleme. Wir wissen nämlich, aha,
wenn es eine reguläre Menge ER ist, dann gibt es ein solches N.
Wir wissen leider nicht, wie groß es ist. So,
das heißt, wenn wir damit arbeiten wollen,
dann müssen wir irgendwie einen Beweis führen,
der in irgendeinem N ist, das wir aber nicht kennen.
Das erleichtert das Beweisen nicht unbedingt. Das heißt,
man muss es nicht führen, wo man sagt,
N. Aber über N darf man
überhaupt nichts annehmen
N kann mich 100 sein, 5 sein, 10,
noch 10, noch 10, noch 10, noch 10, noch 10.
Wir wissen überhaupt nichts zu der N. Und das nächste ist noch,
typischerweise benutzen wir es auch nicht so herum,
sondern wir benutzen es genau für eine Menge eher,
für die wir zeigen wollen,
dass sie nicht mehr regulär ist, indem wir zeigen,
wer sie doch regulär, der müsste das ja gelten hier,
dieser Satz.
Und dann bekommen wir einen Widerspruch. Gucken wir mal an,
wie man einen solchen Widerspruch führen kann,
wie ein solcher Beweis aussieht
Wir wollen jetzt dieses Theorien benutzen, um zu zeigen,
dass der Klassiker schlechthin für eine nicht-reguläre Sprache,
Dup für duplizierte Anzahl, also die Sprache,
die genau NAs hat und dann NBs, alle Worte,
die diese Form haben,
genauso viele As gefolgt von genauso vielen Bs,
auch nullmals erlaubt, also für alle natürlichen Zahlen,
dass diese Sprache nicht regulär ist.
Anschaulich kann man sich das ungefähr folgendermaßen klar machen,
dass es keinen endlichen Automaten geben kann,
der diese Sprache akzeptiert, indem man argumentiert,
um zu garantieren, dass genauso viele Bs kommen wie A's,
müsste man ja mitzählen.
Ich müsste mir also merken, wie groß N ist.
Aber wie kann ein Automat mitzählen? Die einzige Ecke,
wo er sich etwas merken kann, ist die Anzahl der Zustände.
Nun ist die Anzahl der Zustände im endlichen Automatenenname sagt es endlich. Das heißt,
ab einem gewissen N muss jeder endliche Automat mal sagen,
ich kann hier nicht mehr mitzählen,
ich weiß jetzt nicht mehr, wie viel A's da waren.
Die Informationen kann ich mir
nicht mehr merken
So, das ist gewissermaßen die anschauliche Darstellung, warum diese Sprache nicht regulär ist.
Man kann das aber auch ganz streng formal beweisen,
indem man jetzt das UVW-Theorium zur Hilfe nimmt und per Widerspruchsbeweis indirekt vorgeht.
Indirekt heißt, wir nehmen mal an, Dup wäre doch regulär.
Wir wissen es noch nicht. Ja, wenn es regulär wäre,
dann gäbe es doch, das sagt mir doch,
das Pumping-Lemmer eine Zahl K, sodass die Eigenschaften,
die in dem UVW-Theorien Also für alle hinreichend langen Worte,
Z, gilt etwas,
dass diese Folgerung des UVW-Theoriums jetzt zutreffen.
Gut. Gehen wir da mal ganz naiv weiter vor.
Wir nehmen jetzt das Wort Z, dass die Form hat A auch, K-B-O-K.
Also wir nehmen genau diese Z-K, die es geben muss,
von der wir aber nicht wissen, wie groß das ist.
Aber, wenn ich das Wort A auch K-B-O-K wähle,
dann habe ich auf jeden Fall ein Wort. Ja,
es sei denn, ich habe einen ganz trivialen Fall,
dass es null ist. Aber dann schließen wir das mal aus.
Auf jeden Fall ist Dieses Wort Z dann von einer Länge größer K.
Selbst wenn ich nicht weiß, wie Großkar ist,
ich brauche ja nur ein Wort Z,
dessen Länge für das Pumping-Lämmer hinreichend lang ist, hinreichend lang,
größer als K. Gut, dann rechne ich weiter.
Was gilt denn für alle Worte oder für ein Wort,
das diese Form auch KBOK hat?
Da ist die Aussage, es gibt für jedes Wort Z
eine Zerlegung in UV und W. Jetzt weiß ich nicht,
wie diese Zerlegung in UV und W aussieht.
Ich weiß nur,
es gibt eine
Und wieder habe ich das Problem, ich darf es mir
nicht wünschen, sondern ich muss sagen, okay,
ich weiß überhaupt nichts über die Zerlegung in U und V&W.
Ich nehme an, es ist irgendwie eine Zerlegung.
Aber ich kann ein paar Sachen Schluss folgern.
Ich weiß mich, wenn Z in UVW zerlegt wird.
Und es gelten die Eigenschaften des Pumping-Lemmers, dann gilt ja,
dass das Anfangsstück aus UV bestehend, kleiner gleich K sein muss.
Die Aussage ist für jede Zerlegung gilt, erstens,
zweitens,
Wenn ich also diese drei Eigenschaften habe und ich will mal möglichst so ein Wort UVW zerlegt haben,
das möglichst viele Eigenschaften erfüllt sind,
muss ich auf jeden Fall dafür sorgen,
dass das Wort UV schon mal die Länge höchstens gleich K hat.
Würde ich eine andere Zerlegung wählen, hätte das Pumping Lammer ja nichts zu zeigen.
Wer also, wäre ich schon fertig im Beweis. Okay,
wenn ich aber weiß, dass dieses Anfangsstück UV,
was höchstens die Länge K hat,
wenn ich das habe, und ich gucke mal nach,
was sind denn die ersten K-Zeichen von Z?
Das sind lauter As
Ich weiß zwar nicht, wie lang jetzt UV ist,
aber was ich sicher weiß, ich weiß,
U besteht nur aus As und V besteht nur aus As.
Wie viele weiß ich immer noch nicht? Nee,
ist auch nicht ganz richtig. Ich weiß ja immerhin,
dass das Wort V in der Mitte,
dass das die Länge mindestens eins hat.
Also es ist ein nicht leeres Wort. So,
also weiß ich, und das ist nicht viel,
dass das Wort V die Form hat,
A auch M und M ist irgendwie eine natürliche Zahl,
mindestens eins,
So, also wir haben eine Zerlegung,
es ist ein hinreichend langes Wort,
die Zerlegung erfüllt schon die Eigenschaft eins und Fausen nicht zu lang.
V ist nicht leer, muss also nur noch drittens stimmen.
So, denn drittens sagt mir,
ich kann jetzt beliebig häufig das Wort V dazwischen fügen.
Beliebig häufig schließt ja auch null mal ein.
Also ich lasse jetzt genau das Wort V weg.
Nehmen also nur das Wort U und das Wort W.
Das heißt genau diese MAs, aus denen das Wort V
besteht, die schneide ich heraus aus der Mitte.
Das heißt, ich habe hier das Wort A Und jetzt
fehlen da MAs. Und ich habe hier noch B-Karmal.
Und jetzt gucke ich mir an, was ist das für ein Wort?
Das Pumping-Lämmer sagt, okay, bislang hast du alles richtig gemacht.
Worthinreichend lang gewählt, Zerlegung, auch ganz gut gewählt.
Wenn du alles brav bislang gemacht hast,
dann müsste auch dieses Wort, das ist die dritte Eigenschaft,
dann müsste auch dieses Wort ein Element der Sparre Dup sein.
Jetzt gucken wir nochmal nach oben. Ein Dup steht ja,
ich habe genauso viele As wie Bs. Da M aber mindestens eins ist,
habe ich hier weniger As als B. Das heißt,
ich bekomme ein Wort raus,
das nicht in der Sprache ist
Hm, also ein Widerspruch. Die einzige Stelle,
wo irgendwas schiefgegangen sein kann, ist ganz am Anfang,
wo ich angenommen habe, dass die Sprache Dup regulär ist.
Alles andere waren dann nur noch Folgerungen. Wenn es regulär ist,
dann, dann, dann gibt es,
dann gibt es, dann gibt es ein K,
dann gibt es ein U, dann gibt es ein V,
sodass dann dieses Wort in der Sprache ist.
Und da wir am Ende einen Widerspruch bekommen, muss unser Anfangshypothese
die Sprache regulär, ja, die muss falsch sein.
Also, Wenn die Sprache nicht regulär ist,
ist sie offenbar nicht regulär. Ja, das heißt,
Dup ist nicht Element der Familie der regulären Sprachen.
Das haben wir jetzt damit bewiesen. Das heißt,
auf diese Art und Weise mit Widerspruchsverfahren benutzt man das Pumping-Lämmer,
indem man einfach zeigt,
manche Sprachen können nicht mit einfachen Schleifen und beschränkten Gedächtnis erkannt werden.
Was kann man noch machen? Manchmal ist es
ein bisschen anstrengend, dass Pumping-Lämmer auf Sprachen direkt loszulassen.
Deswegen nimmt man da noch ein zweites Werkzeug zur Hilfe.
Wir haben ja gezeigt, Es gibt Abschlusseigenschaften, regulärer Mengen.
Wir wissen zwei reguläre Mengen, geschnitten sind regulär,
also im Ergebnis. Oder Vereinigung, Kompliment, Sternbildung.
Sondern das erlaubt folgende Beweistechnik. Wir nehmen wieder an,
die fragliche Menge sei regulär. Das wollen wir zum Widerspruch führen.
Wir wollen ja zeigen, dass eine Menge nicht regulär ist.
Jetzt verwenden wir Abschlussoperatoren
Man weiß ja, wenn ich eine reguläre Menge habe und ich schneide sie jetzt mit regulären Vereinige,
sie mit regulären, macht Dinge, also Abschlussoperationen weiß ich,
ganz zum Schluss kommt etwas raus, was wieder regulär sein müsste.
Und das macht man so,
dazu braucht man dann so ein bisschen Glück und ein Händchen dafür,
dass da etwas rauskommt,
das leichter zu handhaben ist und leichter zu handhaben heißt,
entweder ist es eine Sprache, die da rauskommt,
von der man schon weiß, dass sie nicht regulär ist.
Also wir könnten jetzt zum Beispiel beweisen, dass Sprachen nicht regulär sind,
indem wir sie mit anderen regulären Sprachen schneiden und zeigen,
dass dann das Ergebnis Duppen ist.
Dann haben wir gleich unseren Widerspruch beweist,
denn wir haben ja eben gerade bewiesen,
dass die Sprache Dupp nicht regulär ist.
Oder das kommt eine neue, schönere Sprache raus, die müsste regulär sein.
Und für die kann man denn mit Pumping-Lemmer Beweis zeigen,
dass die nicht regulär sein kann.
Ja, aber dann haben wir wenigstens durch solche Abschlussoperationen
den Beweis im Pumping-Lemmer vereinfacht.
Wie kann so etwas aussehen? Können wir uns mal
ein Beispiel angucken
Wir nehmen ja so eine ähnliche Sprache wie Dupp.
Das ist die Sprache aller Worte, die nur aus As und Bs bestehen.
Und die Eigenschaft soll jetzt sein, ich habe genauso viele As wie Bs.
Nur deren Reihenfolge ist nicht festgelegt. Bei der Sprache Dupp
mussten ja erst alle As kommen und dann die Bs.
Hier können die wild gemischt kommen. Wir wollen jetzt zeigen,
dass diese neue Sprache C nicht regulär ist. Die Idee,
dass sie nicht regulär ist, ist ungefähr folgender,
naja, ein Automaten müsste mitzählen können,
wie viel As da drin sind und mitzählen können,
wie viele Bs da drin sind,
um die Bilanz auszurechnen
Das kann er nicht, weil er nur endlich viele Zustände hat.
Dieses Argument kann man härten, indem man Folgendes macht.
Man sagt, wir bilden eine neue Menge D,
indem wir diese Menge, von der wir zeigen wollen,
dass sie nicht regulär ist, C,
in der wir diese Menge mit einem Abschlussoperator behandeln.
Wir schneiden sie also mit A-Stern-B-Stern. A-Stern-B-Stern ist eine reguläre
Menge, kann man leichten, endlichen Automaten zu bauen.
So, wir wissen, wäre sie regulär,
dann wäre es auch D,
denn Schnitt ist ein Abschlussoperator
So, was kommt jetzt aber raus? Ich filter ja
gewissermaßen mit dem Mengenschnitt hier alle Worte aus Zieher raus.
In Zieher haben die Worte genauso viele As wie Bs.
Und das sind die Menge aller Worte,
bei denen erst die As und dann die Bs rauskommen.
Also kommt daraus die Menge aller Worte,
bei denen erst die As und dann die Bs kommen.
Und es sind genauso viele. Also ist D doch wieder
die Menge Dupp. Also auch NBON. Und von der
wissen wir ja schon, dass diese Menge nicht regulär ist.
Also wissen wir auch, dass die Menge C,
die wir ursprünglich hatten,
nicht regulär sein kann
Ja, das ist ein Beispiel,
wo uns diese Abschlussoperation, das Leben einfach einfach macht.
Wir haben weniger zu tun. Das Pumping Lammer könnte man
da auch drauf anwenden, aber das macht keinen Spaß.
Das ist viel mehr Arbeit. So, was ich dennoch
machen kann, manchmal ist das UVW-Theorie nicht stark genug.
Wir haben hier die Menge L,
die besteht aus Cs, As und Bs.
Und wie viele das sind, da gibt es
zwei Möglichkeiten.
Entweder steht hier
Dann habe ich also keinen C und habe beliebig viele As
und Bs. Oder ich habe ein C,
dann sollen die hinteren beiden Exponenten L&M gleich sein.
Also ich habe genauso viele As und Bs.
Diese Sprache ist nicht regulär und man kann das Pumping Lammer
dafür nicht benutzen, um das zu zeigen.
Die spannende Frage ist, warum kann man das nicht?
Mich interessiert das. Brennt. Und damit ist euch
auch interessiert, habe ich es mal auf den Aufgabenzettel zum
nächsten Mal gepackt
Was uns jetzt aber nicht daran hindern sollte,
zu zeigen, dass man trotzdem zeigen kann,
dass diese Sprache nicht regulär ist.
Nämlich, indem man zeigt, und was machen wir?
Wir schneiden die Menge L mit C, A, Stern-B-Stern.
Das heißt, wir kamen alle Worte, in denen ein Zeh vorkommt.
Wenn ein Zeh vorkommt, müssen die hinteren beiden Exponenten gleich sein.
Da kommt also die Menge raus, C,
gefolgt von N.A.s
und genauso vielen,
also NBs
Und dass diese Sprache nicht regulär ist, das kann man
mit dem Pumping Lammer dann wieder sehr einfach zeigen.
Der Beweis läuft dann genauso wie zuvor.
Gut, das für heute, bis morgen in aller Frühe