vault backup: 2025-02-10 16:02:45
This commit is contained in:
118
WS2425/Theoretische Informatik/000-Notes/Notes.md
Normal file
118
WS2425/Theoretische Informatik/000-Notes/Notes.md
Normal file
@@ -0,0 +1,118 @@
|
||||
- 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
|
||||
1. Generiere Tabelle von Zuständen. Die Tabelle ist am Anfang leer, d.h. wir nehmen an, dass alle Zustände äquivalent sind.
|
||||
2. 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 ε.
|
||||
3. 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.
|
||||
4. 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.
|
||||
5. Ende, wenn in einer Runde keine neuen Gegenbeispiele gefunden.
|
||||
|
||||
## Umwandlung NEA in DEA
|
||||
![[2-3-NEA.pdf]]
|
||||
- Teilmengenkonstruktion
|
||||
- Umbenennung der Teilmengenkonstruktion
|
||||
- Optimierte Teilmengenkonstruktion: nicht erreichbare Zustände
|
||||
|
||||
## Wandlung ε-NEA in NEA
|
||||
1. Endzustände: Alle Zustände, von denen man mit (einem oder mehreren) ε-Übergängen zu einem Endzustand kommen kann, werden selbst Endzustände.
|
||||
2. ε-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.
|
||||
3. ε –Ü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.
|
||||
4. Lösche alle nicht erreichbaren Zustände
|
||||
|
||||
## CNF
|
||||
1. Eliminierung von ε-Produktionen A → ε falls A kein Startzustand (die Produktionen müssen rechts mindestens die Länge 1 haben)
|
||||
2. Eliminierung von Einheitsproduktionen A → B (Produktionen der Länge 1 dürfen nicht aus einer Variablen bestehen)
|
||||
3. Eliminierung unnützer Symbole (keine unnütze Variablen erlaubt)
|
||||
4. Separieren von Terminalen und Variablen in Produktionen (X-Regel) (Produktionen haben rechts entweder Variablen oder Terminale)
|
||||
5. Aufspalten von Produktionen A → α mit |α|>2 (Y-Regel) (Produktionen haben rechts höchstens die Länge 2)
|
||||
|
||||
## CYK
|
||||
1. Sockel: Das Wort w
|
||||
2. Unterste Ebene (I=J): VI,I = {A∈V | A→wI∈P} (hierfür braucht man nur die Regeln mit einem Terminal zu betrachten)
|
||||
3. 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.
|
||||
4. 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.
|
||||
5. 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.
|
||||
6. 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
|
||||
1. Es gibt genau einen Endzustand.
|
||||
2. Es geht kein Übergang in den Startzustand.
|
||||
3. Es geht kein Übergang aus dem Endzustand raus.
|
||||
Diese Restriktionen machen das Zusammenbauen von Teilautomaten besonders einfach!
|
||||
![[2-6-RA.pdf]]Rechenregel:
|
||||
- |Zustände| = 2 (|Buchstaben| + |“ODER“| + |“\*“|+|“+“|) - |“◦“|
|
||||
|
||||
## Pumping Lemma
|
||||
|
||||
Reference in New Issue
Block a user