update
This commit is contained in:
parent
ecc7ab358e
commit
195bce294a
BIN
Writerside/images/image_920.png
Normal file
BIN
Writerside/images/image_920.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
BIN
Writerside/images/image_921.png
Normal file
BIN
Writerside/images/image_921.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
BIN
Writerside/images/image_922.png
Normal file
BIN
Writerside/images/image_922.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
@ -149,6 +149,7 @@
|
|||||||
<toc-element topic="03_GrundlagenEndlicherAutomaten.md"/>
|
<toc-element topic="03_GrundlagenEndlicherAutomaten.md"/>
|
||||||
<toc-element topic="04_GrenzenGroesseEA.md"/>
|
<toc-element topic="04_GrenzenGroesseEA.md"/>
|
||||||
<toc-element topic="05_GrundlagenGrammatiken.md"/>
|
<toc-element topic="05_GrundlagenGrammatiken.md"/>
|
||||||
|
<toc-element topic="06_ReguläreSprachen.md"/>
|
||||||
|
|
||||||
</toc-element>
|
</toc-element>
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
- rekursiv
|
- rekursiv
|
||||||
- leeres Wort
|
- leeres Wort
|
||||||
|
|
||||||
## Funktion einer formalen Grammatik
|
#### Funktion einer formalen Grammatik
|
||||||
- Bilden von Wörtern durch Ableitungen
|
- Bilden von Wörtern durch Ableitungen
|
||||||
- starte mit dem Startsymbol $S$
|
- starte mit dem Startsymbol $S$
|
||||||
- solange noch Variablen vorkommen oder man Lust hat:
|
- solange noch Variablen vorkommen oder man Lust hat:
|
||||||
@ -26,3 +26,50 @@
|
|||||||
- das Ergebnis ist eine Zeichenkette $w ∈ Σ^*$
|
- das Ergebnis ist eine Zeichenkette $w ∈ Σ^*$
|
||||||
- ein aus $G$ abgeleitetes Wort
|
- ein aus $G$ abgeleitetes Wort
|
||||||
|
|
||||||
|
## Komplexität von Grammatiken
|
||||||
|
- Je mehr Variablen links UND rechts stehen, desto schwerer wird es sie zu verstehen
|
||||||
|
- Dadurch wird auch das Wortproblem schwerer
|
||||||
|
|
||||||
|
|
||||||
|
## Übersicht Grammatiken
|
||||||
|

|
||||||
|
|
||||||
|
| Typ | Erlaubte Regeln | Was kann man damit beschreiben? | Beispielregel | Beispielsprache |
|
||||||
|
|---------------------------|----------------------------------------------------------------|-------------------------------------------------|-------------------------------------------|------------------------------|
|
||||||
|
| **Regulär (RG)** | A → aB<br>A → a | Nur ganz einfache Muster, **kein Zählen** | A → aB<br>B → b | aⁿb (z.B. ab, aab, aaab) |
|
||||||
|
| **Kontextfrei (CFG)** | A → γ (γ ist beliebige Folge aus Terminals und Nichtterminals) | **Einfache Klammerungen und Zählen** | S → aSb<br>S → ε | aⁿbⁿ (z.B. ab, aabb, aaabbb) |
|
||||||
|
| **Kontextsensitiv (CSG)** | αXβ → αwβ (w darf nicht kürzer sein als X) | **Mehr Kontextabhängigkeit, z.B. 3-mal Zählen** | aXb → abb (wenn X zwischen a und b steht) | aⁿbⁿcⁿ (z.B. abc, aabbcc) |
|
||||||
|
|
||||||
|
### Erklärungen:
|
||||||
|
- **Regulär**: Nur ganz einfache Strukturen – keine verschachtelten oder abhängigen Teile.
|
||||||
|
- **Kontextfrei**: Kann einfache Paare wie aⁿbⁿ beschreiben (z.B. gleich viele a und b).
|
||||||
|
- **Kontextsensitiv**: Kann komplexe Abhängigkeiten darstellen – z.B. gleich viele a, b und c.
|
||||||
|
|
||||||
|
## Reguläre Grammatiken
|
||||||
|
- Einfachste Grammatiken
|
||||||
|
|
||||||
|
### (Rechts-)reguläre Grammatiken
|
||||||
|
- für alle $ α → β$ aus $R$ gilt
|
||||||
|
- $ α ∈ V$
|
||||||
|
- links steht genau eine Variable
|
||||||
|
- $ β = u*v$ mit $u ∈ Σ^*, v ∈ V ∪ \{ε\}$
|
||||||
|
- rechts steht wenn überhaupt, dann nur genau eine Variable am Ende
|
||||||
|
- Worte wachsen _von links nach rechts_
|
||||||
|
|
||||||
|
## Kontextfreie Grammatiken
|
||||||
|
- Hauptsache α ist ein Teil der Variablen
|
||||||
|
|
||||||
|
## Kontextsensitive Grammatiken
|
||||||
|
- für alle $ α → β$ aus $R$ AUßER $S→ε\}$ gilt:
|
||||||
|
- $ α = u * X * v$ mit $u,v ∈(Σ ∪ V)^*$ und $X ∈ V$
|
||||||
|
- Symbol nur ersetzen, wenn bestimmte andere Symbole davor und danach stehen
|
||||||
|
- Symbole davor und danach sind der Kontext
|
||||||
|
- $ β = u*w*v$ mit $w ∈ (Σ ∪ V)^+$
|
||||||
|
- Beim Ersetzen muss das neue Stück mindestens so lang sein wie das alte, also das Wort darf nicht kürzer werden.
|
||||||
|
- $S$ kommt nicht in $ β$ vor
|
||||||
|
- S steht nie auf der rechten Seite
|
||||||
|
|
||||||
|
## Monotone Grammatiken
|
||||||
|
- Wenn $|β| ≥ |α|$
|
||||||
|
- Keine Grammatik, die das leere Wort erzeugt ist monoton
|
||||||
|
|
||||||
|
@ -0,0 +1,117 @@
|
|||||||
|
# Reguläre Sprachen
|
||||||
|
> Eine Sprache ist dann regulär, wenn der Nerode-Index endlich ist
|
||||||
|
- Bedeutet auch:
|
||||||
|
- Für alle NEAs existiert eine reguläre Grammatik
|
||||||
|
- Für alle regulären Sprachen existiert ein NEA
|
||||||
|
|
||||||
|
## NEA → reguläre Grammatik
|
||||||
|
- **Gegebener NEA**
|
||||||
|
- $N=(Σ,Q,q_s,Q_a,δ)$
|
||||||
|
- **Definierbare Grammatik**
|
||||||
|
- $G_N=(Σ,V,S,R)$
|
||||||
|
- $V=Q$
|
||||||
|
- $S=q_s$
|
||||||
|
- $R$
|
||||||
|
- Regel `q → x q'` für alle $q,q' ∈ Q, x ∈ Σ$ mit $q' ∈ δ(q,x)$
|
||||||
|
- für alle Übergänge, welche in einen anderen Zustand übergehen, wird eine Regel der Form `Ausgangszustand → Übergang Endzustand` formuliert
|
||||||
|
- Regel `q → ε` für alle $q ∈ Q_a$
|
||||||
|
- alle akzeptierenden Zustände erhalten die Regel `Zustand → ε`
|
||||||
|
- Grammatik darf beendet werden ohne weitere Übergänge
|
||||||
|
- "Variable einfach entfernen"
|
||||||
|
|
||||||
|
|
||||||
|
## Normalisieren einer Grammatik
|
||||||
|
- Alle Regeln, die mehrere Terminale und eine Variable besitzen (_bspw. V→aaaX, V→abcX_)
|
||||||
|
- Aufsplitten in mehrere Regeln mit je einem Terminal und einer Variable
|
||||||
|
- Bspw:
|
||||||
|
- $V → abcX$
|
||||||
|
- wird zu
|
||||||
|
- $V → aV_1^{(abcX)}$
|
||||||
|
- $V_1^{(abcX)} → bV_2^{(abcX)}$
|
||||||
|
- $V_2^{(abcX)} → cX$
|
||||||
|
- Alle Regeln, die ≥1 Terminale besitzen und keine Variablen (_bspw. V→aab, V→acb_)
|
||||||
|
- Aufsplitten in mehrere Regeln mit je einem Terminal und einer Variable
|
||||||
|
- Hinzufügen einer Regel, die zu ε führt
|
||||||
|
- Bspw:
|
||||||
|
- $V → abc$
|
||||||
|
- wird zu
|
||||||
|
- $V → aV_1^{(abc)}$
|
||||||
|
- $V_1^{(abc)} → bV_2^{(abc)}$
|
||||||
|
- $V_2^{(abc)} → cV_3^{(abc)}$
|
||||||
|
- $V_1^{(abc)} → ε$
|
||||||
|
- Für alle Regeln der Form $V→W$
|
||||||
|
- Ersetzen durch $V → β$ für alle Regeln $W → β$
|
||||||
|
- Bspw:
|
||||||
|
- $V → aV | cX | W$
|
||||||
|
- $W → bX | ε$
|
||||||
|
- wird zu
|
||||||
|
- $V → aV | cX | bX | ε$
|
||||||
|
- $W → bX | ε$
|
||||||
|
|
||||||
|
## Reguläre Grammatik → NEA
|
||||||
|
1. Normalisiere Grammatik
|
||||||
|
2. erstelle NEA
|
||||||
|
- $Q = V$
|
||||||
|
- $q_s = S ∈ Q$
|
||||||
|
- $Q_a := \{q ∈ Q | q → ε) ∈ R\}$
|
||||||
|
- Alle Variablen, die einen Übergang nach ε haben, sind akzeptierte Zustände
|
||||||
|
- $ δ$
|
||||||
|
- für alle $q, q' ∈ Q$ und $x ∈ Σ$ gilt
|
||||||
|
- $q' ∈ δ(q,x)$ existiert Regel $q → xq'$ in R
|
||||||
|
- Terminale werden zu Übergängen
|
||||||
|
- Nicht-Terminale sind der Zielzustand
|
||||||
|
|
||||||
|
### Beispiel
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## Wortproblem für reguläre Sprachen
|
||||||
|
### Der natürliche Algorithmus
|
||||||
|
1. konstruiere NEA
|
||||||
|
2. konstruiere Potenzmengenautomat A
|
||||||
|
3. minimiere A und erhalte DEA
|
||||||
|
4. überprüfe ob DEA Eingabe akzeptiert
|
||||||
|
|
||||||
|
Vorteile:
|
||||||
|
- einfache, allgemeine Lösung
|
||||||
|
- Wiederverwendung des DEAs
|
||||||
|
|
||||||
|
Nachteile:
|
||||||
|
- Punkt 2 ist kostspielig
|
||||||
|
- exponentiell in Grammatikgröße
|
||||||
|
- insbesondere für einzelne Eingabe
|
||||||
|
|
||||||
|
### NEA-basierter Algorithmus
|
||||||
|
1. konstruiere NEA
|
||||||
|
2. prüfe ob NEA Eingabe akzeptiert
|
||||||
|
- aktuellen Metazustand merken, weiterrechnen, ...
|
||||||
|
- 
|
||||||
|
|
||||||
|
Vorteile:
|
||||||
|
- kein Potenzmengenautomat
|
||||||
|
- keine exponentielle Laufzeit
|
||||||
|
|
||||||
|
Nachteile:
|
||||||
|
- teuer für wiederholtes Wortproblem
|
||||||
|
- NEA Wortproblem in O(|Q|²*|S|)
|
||||||
|
- DEA Wortproblem in O(|S|)
|
||||||
|
|
||||||
|
## Reguläre Ausdrücke
|
||||||
|
> rekursiv definierte Zeichenkette über dem Alphabet $Σ ∪ \{(,),|,.,*\}$
|
||||||
|
|
||||||
|
- ε ist regulärer (Basis-) Ausdruck
|
||||||
|
- für jedes $x ∈ Σ$ ist x ein regulärer (Basis-) Ausdruck
|
||||||
|
- sind α und β reguläre Ausdrücke, dann auch
|
||||||
|
- $(α | β)$ (α oder β)
|
||||||
|
- $(α * β)$ (α und β)
|
||||||
|
- $ (α*)$ (kleensche Hülle (beliebig oft das Zeichen))
|
||||||
|
- Zusätzlich erlaubt:
|
||||||
|
- weglassen des `*`
|
||||||
|
- weglassen unnötiger Klammern
|
||||||
|
- kleensche Hülle > Konkatenation > Vereinigung (Hoch vor Punkt vor Strich)
|
||||||
|
- Zusätzliche syntaktische Merkmale
|
||||||
|
- $(a)^+$: mind. 1x a
|
||||||
|
- $(a)^?$: ggf. 1x a
|
||||||
|
- $[acfw]$: $a | c | f | w$ = a oder c oder f oder w
|
||||||
|
- $[^acfw]$: nicht eins von denen
|
||||||
|
- $[1-4]$: [1234]
|
Loading…
x
Reference in New Issue
Block a user