David Schirrmeister f4b2e92061 update
2025-06-15 17:49:49 +02:00

3.4 KiB
Raw Blame History

Formale Grammatiken

Grundbegriffe

Formale Grammatik

  • 4-Tupel
    • G=(Σ,V,S,R)
      • Σ: Alphabet
      • V: endliche Menge Variablen V ∩ Σ = \not O
      • S ∈ V: Startvariablen
      • R: endliche Menge Regeln
        • Form: α → β, α, β ∈ (Σ V)^* mit α \not= ε

Beispielgrammatik

  • G = (\{a,b\},\{S\},S,\{S→aSb, S→ε\})
    • Alphabet a,b
    • Variable S
    • Startvariable S
    • zwei (Ersetzungs-) Regeln:
      • rekursiv
      • leeres Wort

Funktion einer formalen Grammatik

  • Bilden von Wörtern durch Ableitungen
  • starte mit dem Startsymbol S
  • solange noch Variablen vorkommen oder man Lust hat:
    • wende eine Regel α → β an, um α durch β zu ersetzen
  • das Ergebnis ist eine Zeichenkette w ∈ Σ^*
    • 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

image_920.png

Typ Erlaubte Regeln Was kann man damit beschreiben? Beispielregel Beispielsprache
Regulär (RG) A → aB
A → a
Nur ganz einfache Muster, kein Zählen A → aB
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
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