Menu Close

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

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.

Index