Theoretische Informatik (Vorlesung 12)

Chomsky-Normalform

  • Eine kontextfreie Grammatik G = (N, Σ, S, P) liegt in Chomsky-Normalform vor, falls jede Produktion die Form
    • A → a mit A ∈ N und a ∈ Σ oder
    • A → BC mit A, B, C ∈ N

t1n

  • Die Menge der NTS von denen sich das Teilwort von w, das an erster Stelle beginnt und Länge n hat, ableiten lässt ( t1n =  w )
  • Dann gilt w ∈ L(G) (S|-g* w ) → S ∈ t1n.
  • Wie konstrukiert man t1n in endlichen Schritten?
    1. Bestimme t11, t21, t31, .. , tn1 (t11 ist die Menge aller NTS von denen aus sich das Teilwort von w, das an erster Stelle beginnt und Länge 1 hat) ableiten lässt ( w=w1 .. wn ) t11 = { A ∈ N, A → w1 ∈ P} t21 = { A ∈ N, A → w2 ∈ P} … tn1 = { A ∈ N, A → wn ∈ P}
  • Wie bestimmen wir tik für k>=2?
    • tik = { A ∈ N, es existiert ein z ∈ { 1,…, k-1} und B,C ∈ N so, dass A → BC ∈ P, B,C ∈ N so, dass A → BC ∈ P, B |-g* wi .. w(i + z -1) und C |-g* w(i+z) … w(i+k-1)
    • B |-g* wi .. w(i+z-1) ↔ B ∈ tiz und C |-g* w(i+z) .. wi+k-1 ↔  C ∈ t(i+z, k-z) also
    • tik = { A ∈ N, es ex. z ∈ { 1,..,k-1} und B,C ∈ N so, dass A → BC ∈ P, B ∈ tiz und C ∈ t(i+z, k-z) , also = U(k-1)__z=1 { A ∈ N, € B,C ∈ N mit A → BC  ∈ P, B ∈ tiz und ( ∈ t(i+z,k-z) )
  • Algorithmus CYK-Algorithmus Eingabe: Eine kontextfreie Grammatik G = (N, Σ, S, P) in Chomsky-Normalform, ein Wort w ∈ Σ*
  1. n := |w|
  2. for i = 1 to n do
  3. ti1 = {A ∈ N; A −→ wi ∈ P}
  4. od // od = end // Wir wandeln das Wort in einzelne Zeichen um und leiten diese in NTS zurück ab
  5. for k = 2 to n do
  6. for i = 1 to n − k + 1 do
  7. tik = ∅
  8. for z = 1 to k − 1 do // Wir laufen mit größer werdendem Bereich, beginnend bei 2 durch das Wort, erzeugen dabei Teilworte und schauen, ob die Paare von einem einzelnen NTS erzeugt werden können
  9. tik = tik ∪ {A ∈ N; ∃B, C ∈ N : A −→ BC ∈ P, B ∈ tiz, C ∈ ti+z,k−z }
  10.  od
  11.  od
  12.  od
  13.  if S ∈ t1n then
  14. return wahr
  15. else
  16. return falsch
  17. fi
  • Satz 3.17.
    • Das Wortproblem fur kontextfreie Sprachen, die durch Grammatiken in Chomsky  -Normalform gegeben sind, sind in Zeit O(n3) entscheidbar
  •  Beispiel 3.18.
    • Wir betrachten die Grammatik G = (N, Σ, S, P) mit N = {A, B, C, S}, Σ = {0, 1} und den Produktionen
      • S → AC,
      • S → AB,
      • C → SB,
      • A → 0,
      • B → 1
      • Für das Wort w = 0011 ∈ Σ* wollen wir überprüfen, ob w ∈ L(G). Dazu berechnen wir wie der CYK-Algorithmus die Menge t1n.
      • w = 0011
      1. n = 4
      2. t11 = { x ∈ N; x → w1 ∈ P } = { x ∈ N; x → 0 ∈ P } = { A } // =0 t21 = { x ∈ N; x → w2 ∈ P } = { x ∈ N; x → 0 ∈ P } = { A } // =0 t31 = { B } t41 = { B } 
      3. t12 = U2-1_z = 1 =  { X ∈ N; E Y,Z ∈ N mit X → YZ ∈ P, Y ∈ tiz und Z ∈ t(i+1,1)} = { X ∈ N,E Y,Z ∈ N mit X→ YZ ∈ P, Y ∈ t11 und z ∈ t21 } = { X ∈ N,E Y,Z ∈ N mit X → YZ ∈ P, Y ∈ { A }, Z ∈ { A } } → Gibt es eine Regel x → AA? → Nein → = Ø t22 = [ … ] = Regel S → AB der Form X → AB)
tikK=1k=2K=3k=4
i = 1AØØS (t14 = t1n)
i =2ASC –
i =3BØ – –
i =4B – – –

Chomsky-NF

  • A → BC
  • A → a
  • Typ 0: rek. abzählbar
  • Typ 1:KS
    • u1 A u2 → u1 l u2 mit |l| >=1,0
    • S → E, dann darf S auf keiner rechten Regelseite vorkommen
  • Typ 2:KF
    • A → l mit A ∈ N und l ∈ ( N u E)*
  • Typ 3: RL
  • rechtslinear → kontextfrei
  • kontextsensitiv → rek. abzählbar
  • kontestfreie Sprache → kontextsensitive Sprache // Gilt nicht für Grammatiken
  • Satz 3.19.
    • Zu jeder kontextfreien Grammatik G = (N, Σ, S, P) gibt es eine kontextfreie Grammatik G′ = (N, Σ, S, P) ohne Regeln der Form A → E mit L(G′) = L(G)\{E} // Wir erzeugen die gleiche Sprache ohne das leere Wort
  • Satz 3.20.
    • (i) Zu jeder kontextfreien Grammatik G gibt es eine kontextfreie Grammatik G′, in der es keine Regeln der Form A → E für A ≠ S gibt. Ist S → E eine Regel in G′, so kommt S nicht auf der rechten Seite einer Regel in G′ vor. //( mit L(G)\{E} = L(G‘)}
    • (ii) Jede kontextfreie Sprache ist auch kontextsensitiv (d.h. L2 ⊆ L1)
  • Beweis 3.20
    • (i) Wir konstruieren aus G wie in Satz 3.19 zunachst eine kontextfreie Grammatik G′ ohne Regeln der Form A → E mit  L(G)\{E} = L(G‘)}
    • Ist nun E ∈ L(G), so führen wir ein neues NTS S‘ zu G‘ hinzu, ersetzen in allen Regeln aus G‘ S durch S‘ und fügen die Regeln S → S‘ und S→E zu G‘ hinzu. Die so definierte Grammatik erfüllt dann die Behauptung.
  • Beweis 3.19 
    • Sei Nε = { A ∈ N; A |-g* E }
    • P‘ = { A → l‘; € A → l ∈ P und l‘ entsteht aus l durch Streichung beliebig vieler NTS B ∈ Nε }
    • P‘ = { A → ε, A ∈ N } dann erfüllt G = ( N, Σ, S, P ) die Bedingung
    • → Beispiel 3.21 im Skript 
      • → Nε = {C,A}
      • S → ACB und A→C und C→E zusammenfassen [ S → AB, S→CB und S→B ]
      • C → E

Herleitung Chomsky NF

  • Sei also ab jetzt G = (N, Σ, S, P) eine kontextfreie Grammatik ohne Regeln der Form A → ε
  • Ziel: Konstruiere aus G eine Grammatik G‘ in Chomsky NF
  • Bsp.: G = (N = {S, A, B, C}, Σ = {a, b}, S, P)
    • mit den Produktionen
      • S → ab|aA|A
      • A → B|C|aBb
      • B → S
      • C → abS
  • 1. Schritt: Die Nichtterminalsymbole S, A, B sind also gleichwertig (von jedem dieser Nichtterminalsymbole aus lassen sich in der Grammatik wegen des Zyklus die selben Worter ableiten). Wir können also S = A = B setzen und passen die Regeln entsprechend an. Dies führt zu den Produktionen
    • S → ab|aS|S
    • S → S|C|aSb
    • S → S
    • C → abS
    • Zusätzlich können wir die Produktion S → S streichen und erhalten somit die Produktionen
      • S → ab|aS|C|aSb
      • C → abS // wird im nächsten Schritt weggekürzt, da S → C → abS eindeutig ist
  • 2. Schritt:Regeln der Form A → B weiter untersuchen und die rechte Regelseite durch lange rechte Regelseiten aus den Regeln B → l mit |l| ≥ 2 ersetzen. In unser Beispielgrammatik gibt es nur noch eine Regel von dieser Form (S → C).
    • S → C => S → abS und erhalten damit S → ab|aS|aSb und  C → abS
  • 3. SchrittIn den Regeln der Form A → l mit |l| ≥ 2 ersetzen wir jedes Terminalsymbol a ∈ Σ durch ein zusatzliches Nichtterminalsymbol Ha und nehmen die Regel Ha→ a auf.
    • S → ab =>
      • S→ Ha Hb
      • Ha → a
      • Hb → b
    • S → aS =>
      • S → Ha S
    • S→ abS =>
      • S → Ha Hb S // im nächsten Schritt auf Länge 2 bringen
    • S → aSb =>
      •  S → Ha S Hb // im nächsten Schritt auf Länge 2 bringen
    • C → abS =>
      • C → Ha Hb S // im nächsten Schritt auf Länge 2 bringen
  • 4. Schritt Für jede Regel der Form A → l mit |l| ≥ 3 (und damit, wie wir oben gesehen haben besteht l nur noch aus Nichtterminalsymbolen, es gilt also l = A1 … An mit A1, . . . , An ∈ N und n ≥ 3) ersetzen wir sukzessive A1A2 durch V (V ist ein neues Nichtterminalsymbol), streichen A → A1 … An und führen die neuen Regeln A → VA3 .. Vn und V → A1A2zu P hinzu. Dies wird solange durchgeführt, bis es keine Regeln der Form A → l mit |l| ≥ 3 mehr gibt.
    • S→ Ha Hb
    • Ha → a
    • Hb → b
    • S → Ha S
    • S → V1 S, V1 →  Ha Hb
    • S → V2 Hb, V2 → Ha S
    • C → V3 S, V3 → Ha Hb
  • Satz 3.23 Das Wortproblem für KF-Sprachen ist entscheidbar.
  • Beweis: 
    • 1. Prüfe ob ε ∈ L(G) ( Prüfe ob S ∈ Nε (vgl. Beweis von Satz 3.19))
    • 2. Konstruiere eine Grammatik G‘ ohne Regeln der Form A → ε mit L(G) \ {ε} = L(G‘) ( wieder mit Satz 3.19 )
    • 3. Konstruiere aus G‘ eine Grammatik G‘ in Chomsky NF mit L(G‘) = L(G“)
    • 4. Wende den CYK – Algorithmus auf G“ an
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.