Theoretische Informatik (Vorlesung 9)

3. Grammatiken

  • Eine Grammatik G = (N, Σ, S, P)
    • N, Σ sind Alphabete
    • S ist Startsymbol
    • P ist eine Menge von Regeln u → v
    • Erzeugen von Wörtern aus dem Alphabet Σ
    • Sind mächtiger als DEA ( können mehr Sprachen beschreiben )
  • Bsp:  
    • G = ({S}, {a,b}, S, P) // G*
    • P = {S → Σ, S → a S b }
    • S Ⱶg a S b Ⱶg a ( a S b ) b Ⱶg a2 b2
    • L(G) = { w ∈ Σ*; S Ⱶg* w } ist die von G erzeugte Sprache
    • L(G) = { an bn, n ∈ ℕ }
  • Bsp:
    • G = (N, Σ, S, P)  mit N = {S,B} // G**
    • E = {a,b,c}
    • P = {S → a S b c, S → a b c, cB → Bc, bB → bb}
    • L(G) = {an bn cn, n ∈ ℕ}
  • Ziel:
    • Für welche formalen Sprachen ist das Wortproblem entscheidbar?
    • Geg.: L ⊆ Σ*; w ∈ Σ*
    • Frage: Gilt w ∈ L ?

3.1 Chomsky-Hierarchie

  • Definition 3.6 Chomsky-Hierarchi für Grammatiken
    • Sei G = (N, Σ, S, P)
    • Jede Grammatik heißt vom Typ 0 ( rekursiv aufzählbar )
    • G heißt vom Typ 1 ( kontextsensitiv ) wenn jede Produktion die Form (schwer)
      • u1 A u2 → u1 w u2 mit A ∈ N, u1, u2, w ∈ (N ∪ Σ)* und |w| ≥ 1 oder
      •  S → E ( dann kommt S in keiner Produktion auf der rechten Seite vor )
  • G heißt vom Typ 2 (kontextfrei), wenn jede Produktion die Form ( mittel )
    • A → w mit A ∈ N und w ∈ (N u Σ)*
  • G heißt vom Typ 3 (rechtslinear), wenn jede Produktion die Form ( leicht )
    • A → u B mit A,B ∈ N und u ∈ Σ*, oder
    • A → u mit A ∈ N und u ∈ Σ*
  • Verschiedene Typen von Grammatiken anhand von Bedingungen an die Form der Produktionen
  • Definition 3.7
  • kontextsensitiv:
    • u1 A u2 → u1 w u2 (Ersetzung von A hängt vom Kontext ab. Links muss u1 und rechts u2 stehen)
    • Bsp:
      • cB → Bc
      • bB → bb
      • = B kann nur dann ersetzt werden, wenn links c oder b steht
    • Bedingung:
      • |w| ≥ 1 sorgt dafür, dass Wörter während des Ableitungsprozesses nicht kleiner werden.
      • S → Σ ist zwar erlaubt, aber S darf dann nicht auf der rechten Seite einer Produktion vorkommen. Die Regel kann also nur genutzt werden um E abzuleiten. ← gilt für kontextsensitive
  • kontextfrei
    • A → w ( A kann unabhängig davon, was links oder rechts von A steht ersetzt werden )
    • Bsp. 3.8: Die Grammatik * ist kontextfrei ( und auch rekursiv abzählbar, aber weder rechtslinear, noch kontextsensitiv )
    • Die Grammatik ** ist kontextsensitiv ( und rekursiv abzählbar, aber nichts rechtslinear und nicht kontextfrei )
    • Die Grammatik *** ist rechtslinear, kontextfrei, rekursiv abzählbar, aber nicht kontextsensitiv ( wegen B → E )
    • Bsp. 
      • G = (N, Σ, S, P) mit //G***
        • N = {S,B}
        • E = {a,b}
        • P = { S → aS|bS|abB, B → aB|bB|E}
  • Definition 3.9:
    • Eine Sprache L heißt rechtslinear ( kontextfrei, kontextsensitiv, rekursiv abzählbar), wenn es eine rechtslineare (kf, ks, ra) Grammatik G mit L = L(G) gibt.
    • Sei ℒ1 ( altdeutsches L ) = { L(G); G ist eine Typ – 1 Grammatik}
    • ℒ3 = Menge aller rechtslinearen Sprachen
    • ℒ3 ⊂ ℒ2
    • ℒ1 ⊂ ℒ0
    • Frage: Gilt ℒ2 ⊂ ℒ1
    • Wir werden noch sehen ℒ2 ⊂ ℒ1 ( und damit ℒ3 ⊂ ℒ2 ⊂ ℒ1 ⊂ ℒ0)
  • Wir stellen uns die folgenden Kernfragen:
    • Bilden diese Sprachklassen eine echte Hierarchie (d.h. sind alle Inklusionen echt) → Ja ( sog. Chomsky-Hierarchie )
    • Gibt es andere Charakterisierungen, z.B. über Automaten? → Ja
GrammatikAutomaten/Maschinen
ℒ0Turingmaschinen
ℒ1Linear beschränkte Automaten ( beschränkte Turingmaschinen)
ℒ2Kellerautomaten (DEA mit zusätzlichem Speicher)
ℒ3DEA
  • Bezüglich welcher Operationen ( Vereinigung, Schnitt, Komplement ) sind diese Klassen abgeschlossen? → Das Verhalten ist sehr unterschiedlich.
  • Kann man auf einfachere Regelformen reduzieren (Normalform) → Ja, für kontextfreie werden wir das untersuchen
  • Wie verhalten sich die Entscheidungsprobleme Wort-, Äquivalenz- und Leerheitsproblem? → Das Verhalten ist sehr unterschiedlich. 

3.2 Grammatiken und das Wortproblem

  • Wortproblem ( L ⊆ Σ* )
    • Gegeben: w ∈ Σ*
    • Frage: Gilt w ∈ L
  • Wir suchen einen Algorithmus, der 
    1. bei jeder Eingabe terminiert
    2. die richtige Antwort liefert
  • Algorithmus für das Wortproblem für DEAs
    • Eingabe: w ∈ Σ*; DEA A = (Q, Σ, q0, δ, F)
    1. q = δ*(q0, w)
    2. IF q ∈ F then Return wahr else return falsch
  • Algorithmus für das Wortproblem für Grammatiken
    • Eingabe: G = ( N, E, S, P ) und w ∈ Σ*
    • Beachte Algorithmus aus Script! Besser!
    1. Erzeuge die Wörter von L(G) schrittweise durch Ableiten
    2. Prüfe, ob w erzeugt wurde.
    3. Wenn ja, gib wahr aus und stoppe.
    4. Wenn nein, gehe zu 1. ← Suboptimal mit vielen Durchläufen
    • Wenn w ∈ L(G), dann wird w irgendwann erzeugt und der Algorithmus terminiert mit wahr.
    • Wenn w ∉ L(G), dann wird w nicht erzeugt und der Algorithmus terminiert nicht. ( somit nur Semi-Entscheidbar )
      • Über das Komplement ¬G = L(¬G) = ¬(L(G)) könnte man herangehen. 
    • Somit brauchen wir eine Abbruchbedingung.
Maximilian
Maximilian

Herzlich willkommen! Ich bin Max, ein Informatiker mit über 15 Jahren Berufserfahrung. Hier teile ich meine Leidenschaften, Erlebnisse und Perspektiven. Ich lade dich ein, gemeinsam mit mir auf eine Entdeckungsreise zu gehen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.