6.9 KiB
6.9 KiB
- Pumping Lemma
Tupel
DEA
5 Tupel: A = (Q, ∑, δ, q0, F)
- Q: nichtleere, endliche Menge von Zuständen (Variablen: Kreise)
- ∑: endliches Eingabealphabet (Alphabet: an den Pfeilen)
- δ: Q×∑ → Q Übergangsfunktion (Regeln: Pfeile)
- q0∈Q: Startzustand (Startvariable: Startpfeil)
- F⊆Q: Menge von Endzuständen (ε-Regel: Doppelkreis)
NEA
5 Tupel: A = (Q, ∑, δ, q0, F)
- Q: nichtleere endliche Zustandsmenge
- ∑: endliches Eingabealphabet
- δ: Q×∑ → P(Q) Zustandsüberführungsfunktion (Übergangsfunktion)
- q0∈Q: Startzustand (Anfangszustand)
- F⊆Q: Menge von akzeptierenden Zuständen (Endzuständen) Hierbei ist P(Q) = {S| S ⊆ Q} die Potenzmenge von Q.
ε-NEA
5 Tupel: A = (Q, ∑, δ, q0, F)
- Q: nichtleere endliche Zustandsmenge
- ∑: endliches Eingabealphabet
- δ: Q×(∑U{ε})→P(Q) Zustandsüberführungsfunktion (Übergangsfunktion)
- q0∈Q: Startzustand (Anfangszustand)
- F⊆Q: Menge von akzeptierenden Zuständen (Endzuständen) Zusätzlich zum NEA ist das leere Wort als weiterer Übergang möglich. Am 5-Tupel kann man einen NEA nicht von einem ε-NEA unterscheiden!
Mealy/Moore Automaten
6 Tupel: A = (Q, ∑, Γ, δ , θ, q0)
- Q: nichtleere endliche Zustandsmenge
- ∑: endliches Eingabealphabet
- Γ: endliches Ausgabealphabet
- δ: Q×∑→Q Zustandsüberführungsfunktion
- θ: Q×∑→ Γ Ausgabefunktion
- q0∈Q: Startzustand (Anfangszustand)
PDA
7 Tupel: P = (Q, ∑, Γ, δ , q0, Z, F)
- Q: nichtleere endliche Zustandsmenge
- ∑: endliches Eingabealphabet
- Γ: endliches Stackalphabet
- δ: Q×(∑È{ε})×Γ→P(Q×Γ*) Überführungsfunktion
- q0∈Q: Startzustand
- Z∈Γ: Initialsymbol des Stacks
- F⊆Q: Menge von akzeptierenden Zuständen
Abschlußeigenschaften
Reguläre Sprachen
- L1 ∪ L2 Die Vereinigung zweier regulärer Sprachen ist regulär.
- L1 ∩ L2 Der Durchschnitt zweier regulärer Sprachen ist regulär.
- L1 \ L2 Die Differenz zweier regulärer Sprachen ist regulär.
- Lc Das Komplement einer regulären Sprache ist regulär.
- LR Die Spiegelung einer regulären Sprache ist regulär.
- L1 ◦ L2 Die Verkettung zweier regulärer Sprachen ist regulär.
- L* Die Hülle einer regulären Sprache ist regulär.
Kontextfreie Sprachen
- L1 ∪ L2 Die Vereinigung zweier kf. Sprachen ist kf. .
- LR Die Spiegelung einer kf. Sprache ist kf. .
- L1 ◦ L2 Die Verkettung zweier kf. Sprachen ist kf. .
- L* Die Hülle einer kf. Sprache ist kf. . NICHT:
- L1 ∩ L2 Der Durchschnitt zweier kf. Sprachen muss nicht kf. sein: L1 = {0n1n2m | n,m∈N} und L2 = {0m1n2n | n,m∈N} sind kf., L1 Ç L2 = {0n1n2n | n∈N} ist aber nicht kf. (Beweis später).
- Lc Das Komplement einer kf. Sprache muss nicht kf. sein: (dann wäre L1 Ç L2 = (L1c È L2c)c immer kf.)
- L1 \ L2 Die Differenz zweier kf. Sprachen muss nicht kf. sein (dann wäre Lc = ∑*\L immer kf.)
Verfahren
Table Filling Algorithmus
- Generiere Tabelle von Zuständen. Die Tabelle ist am Anfang leer, d.h. wir nehmen an, dass alle Zustände äquivalent sind.
- Trage alle Gegenbeispiele der Länge 0 (d.h. Wort ε) ein: Bei ε kommen Endzustände und Nicht-Endzustände zu einem anderen Ergebnis, d.h. markiere alle solche Kombinationen mit einem ε.
- Trage alle Gegenbeispiele der Länge 1 ein, d.h. für alle offenen Zustands- Paare p und q: Ein Gegenbeispiel für p und q kann nur mit a oder b anfangen. Wohin gehen p und q bei a (b)? Probiere alle Buchstaben a, b, … nacheinander aus:
- Falls p und q mit a (b) zu den Zuständen x und y gehen und für x/y ein Gegenbeispiel „w“ in der Tabelle ist, dann ist „aw“ („bw“) ein Gegenbeispiel für p und q.
- Falls nicht, dann erst so lassen.
- Trage in jeder weiteren Runde alle längeren Gegenbeispiele ein, d.h. für alle offenen p und q: Ein Gegenbeispiel für p und q kann nur mit a oder b anfangen. Wohin gehen p und q bei a (b)? Probiere alle Buchstaben a, b, … nacheinander aus:
- Falls p und q mit a (b) zu den Zuständen x und y gehen und für x/y ein Gegenbeispiel „w“ in der Tabelle ist, dann ist „aw“ („bw“) ein Gegenbeispiel für p und q.
- Falls nicht, dann erst so lassen.
- Ende, wenn in einer Runde keine neuen Gegenbeispiele gefunden.
Umwandlung NEA in DEA
- Teilmengenkonstruktion
- Umbenennung der Teilmengenkonstruktion
- Optimierte Teilmengenkonstruktion: nicht erreichbare Zustände
Wandlung ε-NEA in NEA
- Endzustände: Alle Zustände, von denen man mit (einem oder mehreren) ε-Übergängen zu einem Endzustand kommen kann, werden selbst Endzustände.
- ε-Zyklen (Ausschnitt): Alle Zyklen von ε-Übergängen (d.h. man kann von jedem Zustand in dem Zyklus jeden anderen Zustand durch ε-Übergänge erreichen) werden zu einem Zustand geschrumpft. Weitere Übergänge werden zu Schleifen.
- ε –Übergänge werden nacheinander (in beliebiger Reihenfolge) ersetzt ε-Übergang q0 nach q1 wird gelöscht. Dafür werden alle Übergänge, die aus q1 rausgehen, verdoppelt und gehen zusätzlich auch aus q0.
- Lösche alle nicht erreichbaren Zustände
CNF
- Eliminierung von ε-Produktionen A → ε falls A kein Startzustand (die Produktionen müssen rechts mindestens die Länge 1 haben)
- Eliminierung von Einheitsproduktionen A → B (Produktionen der Länge 1 dürfen nicht aus einer Variablen bestehen)
- Eliminierung unnützer Symbole (keine unnütze Variablen erlaubt)
- Separieren von Terminalen und Variablen in Produktionen (X-Regel) (Produktionen haben rechts entweder Variablen oder Terminale)
- Aufspalten von Produktionen A → α mit |α|>2 (Y-Regel) (Produktionen haben rechts höchstens die Länge 2)
CYK
- Sockel: Das Wort w
- Unterste Ebene (I=J): VI,I = {A∈V | A→wI∈P} (hierfür braucht man nur die Regeln mit einem Terminal zu betrachten)
- VI,I+1 = { A∈V | ∃ A→BC∈P mit B∈VI,I ∧ C∈VI+1,I+1} d.h. wenn B das Teilwort wI und C das Teilwort wI+1 erzeugt und es eine Regel A→BC gibt, dann erzeugt A das Teilwort wIwI+1.
- VI,J = { A∈V | ∃ A→BC∈P mit B∈VI,K∧C∈VK+1,J für ein I≤K<J} d.h. wenn B das Teilwort wI…wK und C das Teilwort wK+1…wJ erzeugt und es eine Regel A→BC gibt, dann erzeugt A das Teilwort wI…wJ.
- VI,J = { A∈V | ∃ A→BC∈P mit B∈VI,K∧C∈VK+1,J für ein I≤K<J} d.h. wenn B das Teilwort wI…wK und C das Teilwort wK+1…wJ erzeugt und es eine Regel A→BC gibt, dann erzeugt A das Teilwort wI…wJ.
- Akzeptiere w genau dann, wenn S∈V1,|w|
Umwandlung eines RA in einen Automaten: Induktionsanfang
Man kann jeden regulären Ausdruck E in einen ε-NEA A umwandeln, der die selbe Sprache akzeptiert, d.h. L(E)=L(A), so dass
- Es gibt genau einen Endzustand.
- Es geht kein Übergang in den Startzustand.
- Es geht kein Übergang aus dem Endzustand raus. Diese Restriktionen machen das Zusammenbauen von Teilautomaten besonders einfach! !2-6-RA.pdfRechenregel:
- |Zustände| = 2 (|Buchstaben| + |“ODER“| + |“*“|+|“+“|) - |“◦“|