Formale Sprachen und Komplexit¨ at
Sommersemester 2019
Kontextfreie Sprachen: Teil I
Prof. Dr. David Sabel
LFE Theoretische Informatik
Letzte ¨Anderung der Folien: 6. Juni 2019
Inhalts¨ ubersicht
Operationen auf Kontextfreien Grammatiken Normalformen f¨ ur CFGs: Chomsky-Normalform und Greibach-Normalform
Widerlegen der Kontextfreiheit: Pumping-Lemma
Lemma (Pumping-Lemma f¨ur CFLs)
SeiLeine kontextfreie Sprache. Dann gibt es eine Zahln∈N>0, sodass jedes Wortz∈L, das Mindestl¨angenhat (d. h.|z| ≥n), alsz=uvwxygeschrieben werden kann, so dass gilt:
|vx| ≥1
|vwx| ≤n
f¨ur allei≥0:uviwxiy∈L.
Abschlusseigenschaften kontextfreier Sprachen
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 2/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Kontextfreie Sprachen
Zur Erinnerung:
Kontextfreie Sprachen (CFLs) werden von einer kontextfreien Grammatik (CFG) erzeugt
Das sind die Typ 2-Grammatiken
Bedingung: Alle linken Seiten der Produktionen bestehen aus genau einer Variablen.
Motivation
Kontextfreie Sprachen sind insbesondere n¨ utzlich um Sprachen mit Klammerungen zu beschreiben
Die Syntax von Programmiersprachen wird meist mit einer kontextfreien Grammatik angegeben.
Beispiele:
G = ({E, M, Z}, {+, ∗, (, )} ∪ {0, . . . , 9}, P, E) mit P = {E → M | E + M,
M→ Z | M ∗ Z, Z → N | (E), N → 1D | . . . | 9D, D → 0D | . . . | 9D | ε}
L = {a
jb
j| j ∈
N} ist kontextfrei: Produktionen
{S → ε | T, T → aT b | ab} mit S als Startsymbol erzeugen L
Einfache Operationen auf CFGs
Wir definieren Operationen auf CFGs, die die erzeugte Sprache unver¨ andert lassen
Die Operationen werden sp¨ ater (als Hilfsmittel) wiederverwendet.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 5/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Inlining von Produktionen
Lemma (Inlining von Produktionen) Sei G = (V, Σ, P, S ) eine CFG und
A
→ uBv ∈ P ,
B
→
w1| . . . |
wnalle Regeln mit
Bals linker Seite
und sei G
0= (V, Σ, P \ {A → uBv} ∪ {A → uw
1v | . . . | uw
nv}, S).
Dann erzeugen G und G
0dieselbe Sprache, d. h. L(G) = L(G
0).
Beweis: Das folgt, indem die Syntaxb¨ aume zur Ableitung mit G bzw. G
0modfiziert werden:
tausche alle Baumabschnitte
A
u B
w
iv
durch
A u w
iv (im Syntaxbaum mit G) (im Syntaxbaum mit G
0)
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 6/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Sharing von Satzformen mit neuen Produktionen
Lemma (Sharing von Satzformen mit neuen Produktionen) Sei G eine CFG mit G = (V, Σ, P ∪ {A · →
w1· · ·
wn}, S).
Seien
B1, . . . ,
Bnneue Variablen (d. h. V ∩ {B
1, . . . , B
n} = ∅) und sei G
0= (V ∪{B ·
1, . . . ,
Bn}, Σ, P ∪{A→B ·
1· · ·
Bn,
B1→w
1, . . . ,
Bn→w
n}, S).
Dann gilt L(G) = L(G
0).
Beweis:
“⊆”: Konstruiere aus S ⇒
∗Gw Ableitung S ⇒
∗G0w
0: ¨ Ubersetze jeden Schritt uAv ⇒
Guw
1· · ·wnv in uAv ⇒
G0uB
1· · ·Bnv ⇒
nG0uw
1· · ·wnv.
“⊇”: Betrachte den Syntaxbaum f¨ ur S ⇒
∗G0w.
Identifiziere die Anwendungen der Regeln
A→
B1· · ·Bn,
Bi→
wi, und modifziere Syntaxbaum durch Anwendung der Regel
A→
w1· · ·wn. Lese Ableitung S ⇒
∗Gw ab.
Elimination der Links-Rekursion (1)
Definition (links- bzw. rechts-rekursive Produktion
Eine Produktion nennt man
links-rekursiv, wenn sie von der Form A→
Auist, und
rechts-rekursiv, wenn sie von der Form A→ uA
ist, wobei in beiden F¨ allen u eine Satzform ist.
Elimination der Links-Rekursion (2)
Lemma (Elimination von Links-Rekursion)
Sei G = (V, Σ, P, S), P = P
0∪ {A · → Au
1| · · · | Au
n| w
1| · · · | w
m}
| {z }
P00
eine CFG mit
P
00sind alle Produktionen in P mit A als linker Seite und die Satzformen w
1, . . . , w
mbeginnen alle nicht mit A.
Es gilt L(G) = L(G
0) f¨ ur G
0= (V ∪{B}, · Σ, P
0∪ P
000, S) mit B neue Variable und P
000= {A → w
1B | · · · | w
mB | w
1| · · · | w
m,
B → u
1| . . . | u
n| u
1B | . . . | u
nB}
Beweis: Ausf¨ uhrlicher Beweis im Skript Wesentliche Idee:
Ersetze Linksableitungsschritte mit G: x
1Ax
2⇒
∗Gx
1w
ru
f(1)· · · u
f(k)x
2durch Rechtsableitungsschritte mit G
0: x
1Ax
2⇒
∗G0x
1w
ru
f(1)· · · u
f(k)x
2TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 9/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Normalformen
Normalformen von Grammatiken fordern eine spezielle Form der Produktionen
N¨ utzlich, wenn man Grammatiken analysiert oder Algorithmen auf Grammatiken formuliert
Man muss dann nur diese Form (statt aller erlaubten) von Produktionen betrachten
Wir betrachten zwei Normalformen
Chomsky-NormalformGreibach-Normalform
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 10/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Die Chomsky-Normalform
Definition (Chomsky-Normalform)
Eine CFG G = (V, Σ, P, S ) mit ε 6∈ L(G) ist in
Chomsky-Normalform,wenn f¨ ur A →
w∈ P gilt:
w=a∈ Σ oder
w=BCmit B, C ∈ V . Beispiel:
Die CFG G = ({A}, {(, ), [, ]}, {A → (A) | () | [A] | [] | A A}, A) ist
nichtin Chomsky-Normalform
(nur die Produktion A → A A passt zum vorgeschriebenen Format).
Die CFG G
0= ({A, B, C, D, E, F, G}, {(, ), [, ]}, P, A) mit P = {A → BF | BC | DG | DE | AA,
B → (, C →), D → [, E →], F → AC, G → AE}
ist in Chomsky-Normalform (und erzeugt die gleiche Sprache wie G).
Eigenschaften der Chomsky-Normalform
Sei G eine CFG in Chomsky-Normalform, dann gilt:
Syntaxb¨ aume zu Ableitungen mit G sind immer
Bin¨arb¨aumeAbleitungen eines Worts w ∈ L(G) bestehen immer genau aus 2 · |w| − 1 Ableitungsschritten.
Beispiel:
G
0= ({A, B, C, D, E, F, G}, {(, ), [, ]}, P, A) mit P = {A → BF | BC | DG | DE | AA,
B → (, C →), D → [, E →], F → AC, G → AE}
Ableitung von ([]([])):
A⇒BF
⇒ (F ⇒ (AC ⇒ (AAC ⇒ (DEAC ⇒ ([EAC
⇒ ([]AC ⇒ ([]BF C ⇒ ([](F C ⇒ ([](ACC ⇒ ([](DECC
⇒ ([]([ECC ⇒ ([]([]CC ⇒ ([]([])C ⇒ ([]([]))
Eigenschaften der Chomsky-Normalform (2)
Der Syntaxbaum dazu:
A B
(
F A
A D
[
E ]
A B
(
F A D
[
E ]
C )
C )
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 13/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Herstellen der Chomsky-Normalform
Jede CFG (mit ε 6∈ L(G)) kann in Chomsky-Normalform gebracht werden. Das Verfahren geht in mehreren Schritten vor:
1
Entfernen von ε-Produktionen (kennen wir bereits)
2
Entfernen von Einheitsproduktionen (Produktionen A → B)
3
Sharen aller Terminale a in rechten Seiten, die nicht nur aus a bestehen durch neue Produktionen A → a
4
Alle Produktionen A → B
1· · · B
mmit m > 2 in mehrere zerlegen: A → B
1C
1, C
1→ B
2C
3, . . . , C
m−2→ B
m−1B
mTCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 14/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Entfernen von Einheitsproduktionen
Intuitiv ist klar, dass A → B entfernt werden kann:
Wenn erst A → B, dann B → w angewendet wird, kann man auch gleich A → w anwenden.
Algorithmisch zu beachten:
Eliminiere in der richtigen Reihenfolge:
Wenn A→B undB→C, dann ist Ersetzen von A→B durchA→Cnicht zielf¨uhrend.
ZyklenA→B undB→Am¨ussen vorher entfernt werden!
Algorithmus 5: Entfernen von Einheitsproduktionen
Eingabe:Eine CFGG= (V,Σ, P, S) Beginn
Erzeuge ger. GraphD= (V, E), mit(A, B)∈Ef¨ur jede Einheitsp.A→B∈P; solangees einen Zyklus(A1, A2), . . . ,(An−1, An),(An, A1)∈Egibttue
P :=P\ {A1→A2, . . . , An−1→An, An→An}; /* entferne zykl. Regeln */
P :=P[A1/A2, . . . , A1/An]; /* ersetze alle Vorkommen vonAidurchA1f¨uri= 2, . . . , n*/
V :=V\ {A2, A3, . . . , An}; /* l¨oscheA2, . . . , An*/
S:=S[A1/A2, . . . , A1/An]; /* ersetze Startsymbol durchA1, falls esAi,2≤i≤nwar */
E:=E\ {(A1, A2), . . . ,(An−1, An),(An, A1)}; /* entferne Zyklus aus Graph */
E:=E[A1/A2, . . . , A1/An]; /* ersetzeAidurchA1f¨uri= 2, . . . , nin anderen Kanten */
SortiereDtopologisch und nummeriere die Variablen inV durch (und benenne entsprechend inE, P, Sum), so dass gilt:Ai→Aj implizierti < j;
SeiV ={A1, . . . , Ak};
f¨uri=kbis1tue
wennAi→Aj∈P dann
seienAj→w1, . . . , Aj→wmalle Produktionen mitAjals linker Seite;
P :=P∪ {Ai→w1, . . . , Ai→wm};
P :=P\ {Ai→Aj};
Gib die so entstandene Grammatik alsG0aus;
Korrektheit von Algorithmus 5 (1)
Satz
Algorithmus 5 berechnet bei Eingabe einer CFG G mit ε 6∈ L(G) eine CFG G
0, die keine Einheitsproduktionen hat, sodass gilt L(G) = L(G
0). Wenn G keine ε-Produktionen hat, dann hat auch G
0keine ε-Produktionen.
Beweis: Wir zeigen:
1
Das Entfernen eines Zyklus ver¨ andert die erzeugte Sprache nicht
2
Das Entfernen einer Einheitsproduktion A
i→ A
jin der
r¨ uckw¨ arts-laufenden f¨ ur-Schleife ¨ andert die erzeugte Sprache nicht.
bereits gezeigt, da die Operation
”Inlining von Produktionen“
korrekt.
3
Der Algorithmus terminiert und f¨ uhrt nie Einheits- oder ε-Produktionen ein.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 17/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Korrektheit von Alg. 5: Entfernen von Zyklen ist korrekt
Beweisskizze (ausf¨ uhrlicher Beweis im Skript):
Habe G = (V, Σ, P, S ) Zyklus A
1→ A
2, . . . , A
n−1→ A
n, A
n→ A
1Sei G
0= (V
0, Σ, P
0, S
0) die Grammatik nach Entfernen des Zyklus.
Sei σ die Substitution {A
i7→ A
1| i ∈ {2, . . . , n}}.
” L(G) ⊆ L(G
0)“:
Zeige mit Induktion ¨ubern, dass f¨ur allew1, w2∈(Σ∪V)∗gilt:
Wenn w1⇒nGw2, dannσ(w1)⇒∗G0 σ(w2).
” L(G
0) ⊆ L(G)“:
Zeige mit Induktion ¨ubern, dass f¨urw∈(Σ∪V0)∗ undw0∈Σ∗gilt:
Wenn w⇒nG0 w0∈Σ∗. dannw⇒∗Gw0.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 18/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Korrektheit von Alg. 5: Terminierung
Algorithmus 5 terminiert, denn
Die Solange-Schleife terminiert, da jede Iteration die Anzahl der Zyklen strikt verkleinert.
Die f¨ ur-Schleife terminiert offensichtlich.
Es werden keine Einheitsproduktionen eingef¨ uhrt:
Da die Produktionen topologisch sortiert behandelt werden:
Wenn A
i→ A
jentfernt wird, wurden
vorheralle Einheitsproduktionen A
j→ A
kentfernt. D.h. zu diesem Zeitpunkt gilt: f¨ ur alle Produktionen A
j→ w besteht w nicht nur aus einer Variablen.
Es werden keine ε-Produktionen eingef¨ uhrt:
offensichtlich.
Algorithmus 6: Herstellen der Chomsky-NF
Eingabe:CFGGmitε6∈L(G)
Ausgabe:CFGG0in Chomsky-Normalform mitL(G) =L(G0) Beginn
Entferne dieε-Produktionen inGmit Algorithmus 1 und entferne anschließend die Einheitsproduktionen mit Algorithmus 5;
SeiG0= (V0,Σ, P0, S0)die entstandene Grammatik;
f¨ur allea∈Σtue
/* F¨uhre neue VariableAaf¨uraein, und ersetze Vorkommen vonadurch das Nichtterminal */
G0:= (V0∪{A· a},Σ,{A→w[Aa/a]|A→w∈P0und|w|>1}
∪{A· →w|A∈w∈P0und|w|= 1} ·∪ {Aa→a},S) /* Nun sind alle Regeln von der FormA→aoderA→B1· · ·Bmmitm≥2 */
f¨ur alleA→B1· · ·Bm∈P0mitm >2tue SeienC1, . . . , Cm−2neue Variablen;
V0:=V0∪{C· 1, . . . , Cm−2};
/* Ersetze inP0die ProduktionA→B1· · ·Bmdurch neue Regeln */
P0:=(P0\ {A→B1· · ·Bm})
∪{A→B1C1} ∪ {Ci→Bi+1Ci+1|f¨uri= 1, . . . , m−3} ∪ {Cm−2→Bm−1Bm};
Theorem
F¨ ur CFGs G mit ε 6∈ L(G) berechnet Algorithmus 6 eine
¨ aquivalente CFG in Chomsky-Normalform.
Beweis:
Die Schritte
” Entferne der ε-Produktionen und Entfernen von Einheitsproduktionen haben wir als korrekt gezeigt.
Die Schritte
” Einf¨ uhren von Produktionen A → a “ und Behandlung von A → B
1· · · B
msind Instanzen der korrekten Operation
” Sharing von Satzformen mit neuen Variablen“
Verifiziere, dass danach alle Produktionen die gew¨ unschte Form haben.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 21/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Beispiel: Chomsky-Normalform berechnen
G
0= ({A, B, C, D, S}, {0, 1}, P
0, S) mit
P
0= {S → 1A, A → AB, A → DA, A → ε, B → 0, B → 1, C → AAA, D → 1AC}.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 22/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Schritt 1: Entfernen der ε-Produktionen
G
0= ({A, B, C, D, S}, {0, 1}, P
0, S) mit
P
0= {S → 1A, A → AB, A → DA, A → ε, B → 0, B → 1, C → AAA, D → 1AC}.
Menge W der Variablen, die ε herleiten:
W = {A, C} da A → ε und C → AAA Starte mit
G
1= ({A, B, C, D, S}, {0, 1}, P
1, S)
P
1= {S → 1A, A → AB, A → DA, B → 0, B → 1, C → AAA, D → 1AC}.
Hinzuf¨ ugen von Produktionen f¨ ur Vorkommen von A und C
P
1= {S → 1A,
S →1, A→ AB,
A→B, A→ DA,
A→D,B → 0, B → 1, C → AAA,
C→AA, C→A,D → 1AC,
D→1A, D→1C, D→1}.Schritt 2: Entfernen der Einheitsproduktionen (1)
P
1= {S → 1A, S → 1, A → AB, A → B, A → DA, A → D, B → 0, B → 1 C → AAA, C → AA, C → A,
D → 1AC, D → 1A, D → 1C, D → 1}.
Der gerichtete Graph ist
D = ({S, A, B, C, D}, {(A, B), (A, D), (C, A)}).
Es gibt keine Zyklen, wir erhalten P
2= P
1Topologisches Sortieren und Umbenennen der Variablen, sodass
” A
i→ A
jimpliziert i < j“ gilt, erfordert eine Umbenennung, welche die Beziehungen
” A < B“,
” A < D“,
” C < A“ erzeugt.
Wir w¨ ahlen Umbenennung ρ mit ρ(C) = A
1, ρ(A) = A
2, ρ(B) = A
3, ρ(D) = A
4, ρ(S) = A
5.
Das liefert uns G
3= ({A
1, A
2, A
3, A
4, A
5}, Σ, P
3, A
5) mit
P
3= {A
5→ 1A
2, A
5→ 1, A
2→ A
2A
3, A
2→ A
3, A
2→ A
4A
2,
A
2→ A
4, A
3→ 0, A
3→ 1, A
1→ A
2A
2A
2, A
1→ A
2A
2,
A
1→ A
2, A
4→ 1A
2A
1, A
4→ 1A
2, A
4→ 1A
1, A
4→ 1}.
Schritt 2: Entfernen der Einheitsproduktionen (2)
P
3= {A
5→ 1A
2, A
5→ 1, A
2→ A
2A
3, A
2→ A
3, A
2→ A
4A
2, A
2→ A
4, A
3→ 0, A
3→ 1, A
1→ A
2A
2A
2, A
1→ A
2A
2, A
1→ A
2, A
4→ 1A
2A
1, A
4→ 1A
2, A
4→ 1A
1, A
4→ 1}.
Nun l¨ auft die F¨ ur-Schleife f¨ ur i von 5 bis 1:
F¨uri= 5, i= 4, i= 3gibt es jeweils keine Produktion der FormAi→Aj. F¨uri= 2wirdA2→A3ersetzt durch A2→0, A2→1, und es wird A2→A4 ersetzt durchA2→1A2A1, A2→1A2, A2→1A1 und A2→1. Danach ist
P4={A5→1A2, A5→1, A2→A2A3, A2→0, A2→1, A2→A4A2, A2→1A2A1, A2→1A2, A2→1A1, A3→0, A3→1,
A1→A2A2A2, A1→A2A2, A1→A2, A4→1A2A1, A4→1A2, A4→1A1, A4→1}.
F¨uri= 1wirdA1→A2ersetzt durch A1→A2A3,A1→0,A1→1, A1→A4A2,A1→1A2A1,A1→1A2undA1→1A1.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 25/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Schritt 2: Entfernen der Einheitsproduktionen (3)
Daher ist die Grammatik nach Entfernen der Einheitsproduktionen:
G
5= (V
5, Σ, P
5, A
5) mit V
5= {A
1, A
2, A
3, A
4, A
5} und P
5= {A
5→ 1A
2, A
5→ 1, A
2→ A
2A
3, A
2→ 0, A
2→ 1,
A
2→ A
4A
2, A
2→ 1A
2A
1, A
2→ 1A
2, A
2→ 1A
1, A
3→ 0, A
3→ 1, A
1→ A
2A
2A
2, A
1→ A
2A
2, A
1→ A
2A
3, A
1→ 0, A
1→ 1, A
1→ A
4A
2, A
1→ 1A
2A
1, A
1→ 1A
2, A
1→ 1A
1, A
4→ 1A
2A
1, A
4→ 1A
2, A
4→ 1A
1, A
4→ 1}.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 26/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Schritt 3: Terminalsymbole durch neue Produktionen darstellen
F¨ uge B
0→ 0 und B
1→ 1 hinzu und ersetze in rechten Seiten mit Wortl¨ ange > 1:
P
6= {B
0→ 0, B
1→ 1, A
5→ B
1A
2, A
5→ 1, A
2→ A
2A
3, A
2→ 0, A
2→ 1, A
2→ A
4A
2, A
2→ B
1A
2A
1, A
2→ B
1A
2,
A
2→ B
1A
1, A
3→ 0, A
3→ 1, A
1→ A
2A
2A
2, A
1→ A
2A
2, A
1→ A
2A
3, A
1→ 0, A
1→ 1, A
1→ A
4A
2, A
1→ B
1A
2A
1, A
1→ B
1A
2, A
1→ B
1A
1, A
4→ B
1A
2A
1,
A
4→ B
1A
2, A
4→ B
1A
1, A
4→ 1}.
Schritt 4: Rechte Seiten zerlegen
Zerlege rechte Seiten mit Wortl¨ ange > 2:
Ergibt G
7= (V
7, Σ, P
7, A
5), wobei
V
7= {A
1, A
2, A
3, A
4, A
5, B
0, B
1, C
1, C
2, C
3, C
4}
P
7= {B
0→ 0, B
1→ 1, A
5→ B
1A
2, A
5→ 1, A
2→ A
2A
3, A
2→ 0, A
2→ 1, A
2→ A
4A
2, A
2→ B
1C
1C
1→ A
2A
1,
A
2→ B
1A
2, A
2→ B
1A
1, A
3→ 0, A
3→ 1, A
1→ A
2C
2, C
2→ A
2A
2, A
1→ A
2A
2, A
1→ A
2A
3, A
1→ 0, A
1→ 1, A
1→ A
4A
2, A
1→ B
1C
3, C
4→ A
2A
1, A
1→ B
1A
2, A
1→ B
1A
1, A
4→ B
1C
4, C
4→ A
2A
1, A
4→ B
1A
2, A
4→ B
1A
1, A
4→ 1}.
Alle Schritte beendet, G
7ist in Chomsky-Normalform
Greibach-Normalform
Definition (Greibach-Normalform)
Ein CFG G = (V, Σ, P, S) mit ε 6∈ L(G) ist in
Greibach-Normalform, falls alle Produktionen in
P von der Form A → aB
1B
2. . . B
jmit j ≥ 0, A, B
1, . . . , B
j∈ V und a ∈ Σ sind.
Bemerkungen:
benannt nach Sheila A. Greibach
Regul¨ are Grammatiken sind Spezialfall der Greibach-NF:
Dort ist nur j = 0 oder j = 1 erlaubt.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 29/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Algorithmus 7: Herstellen der Greibach-Normalform
Eingabe:CFGG= ({A1, . . . , An},Σ, P, Ai)in Chomsky-NF mitε6∈L(G) Ausgabe:CFGG0in Greibach-Normalform mitL(G) =L(G0)
Beginn
f¨uri= 1bisntue f¨urj= 1bisi−1tue
f¨ur alleAi→Aju∈Ptue
SeienAj→w1| · · · |wmalle Regeln inP mitAjals linker Seite;
ErsetzeAi→AjudurchAi→w1u| . . . |wmuinP;
wennAi→Aiu∈P dann
Eliminiere die Regel mit der Operation
”Elimination der Links-Rekursion“;
SeiBidie dabei neu erzeugte Variable;
f¨uri=n−1bis1tue
f¨ur alleAi→Aju∈P,j > itue
SeienAj→w1| · · · |wmalle Regeln mitAjals linker Seite;
ErsetzeAi→AjudurchAi→w1u| · · · |wmuinP; f¨uri= 1bisntue
f¨ur alleBi→Aju∈P tue
SeienAj→w1| · · · |wmalle Regeln mitAjals linker Seite;
ErsetzeBi→AjudurchBi→w1u| · · · |wmuinP;
Ziel der geschachtelten F¨ur-Schleife: Es gibtAi→Ajunur f¨urj > i Ersetzen der RegelnAi→Ajumiti > j
Ersetzen der RegelnAi→Aiu
Nun gilt f¨urAi→Ajustetsj > i.
Damit gilt f¨urAn→u:ubeginnt mit Zeichen ausΣ.
N¨achste Schleife: Ersetze alleAi→Ajumitj > i w1, . . . , wm fangen mit Zeichen aus Σ an, da Schleife absteigend l¨auft!
Behandle die neuen Regeln mit Bials linker Seite.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 30/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Korrektheit
Satz
Zu jeder CFG G mit ε 6∈ L(G) gibt es eine CFG G
0in Greibach-Normalform, sodass L(G) = L(G
0) gilt.
Korrektheit folgt:
durch Pr¨ ufen der genannten Invarianten
Korrektheit der Elimination von Links-Rekursion Korrektheit der Operation
” Inlining von Produktionen“
Ein Beispiel zur Herstellung der Greibach-Normalform ist im Skript
Widerlegen der Kontextfreiheit
Wir lernen Methoden kennen zum Widerlegen der Kontextfreiheit:
Pumping-Lemma f¨ ur kontextfreie Sprachen
evtl. Ogdens-Lemma (evtl. in der Zentral¨ ubung)
Einschub: Bin¨ arb¨ aume
Bin¨ arbaum: Baum, wobei jeder Knoten 0 oder 2 Kinder hat Lemma
Sei B ein Bin¨ arbaum mit ≥ 2
kBl¨ attern. Dann hat B einen Pfad der L¨ ange ≥ k.
Beweis durch Induktion ¨ uber k:
k = 0: Ein Baum mit 2
k= 2
0= 1 Bl¨ attern besteht genau aus diesem Blatt und hat einen Pfad der L¨ ange ≥ 0.
k > 0: Einer der beiden Teilb¨ aume unter der Wurzel hat ≥ 2
k−1Bl¨ atter.
Per Induktionsannahme hat dieser einen Pfad der L¨ ange ≥ k − 1.
Daher hat der gesamte Baum einen Pfad der L¨ ange ≥ k.
| {z }
2k Bl¨atter
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 33/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Pumping-Lemma f¨ ur CFLs: Bemerkungen
Erinnerung: Pumping-Lemma f¨ ur regul¨ are Sprachen:
Jede regul¨ are Sprache erf¨ ullt die Pumping-Eigenschaft.
Analog: Pumping-Lemma f¨ ur kontextfreie Sprachen:
Jede kontextfreie Sprache erf¨ ullt die Pumping-Eigenschaft f¨ ur kontextfreie Sprachen
Kann vorallem zum Widerlegen benutzt werden:
Sprache verletzt die Pumping-Eigenschaft f¨ ur CFLs
= ⇒ Sprache ist nicht kontextfrei
Pumping-Eigenschaft bei regul¨ aren Sprachen, informell:
Man kann Worte an einer Stelle aufpumpen und verbleibt in der Sprache (uviw∈Lf¨ur alle i∈N)
Pumping-Eigenschaft bei kontextfreien Sprachen, informell:
Man kann Worte an zweiStellen gleichzeitig aufpumpen und verbleibt in der Sprache (uviwxiy∈Lf¨ur allei∈N)
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 34/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Das Pumping-Lemma f¨ ur CFLs
Lemma (Pumping-Lemma f¨ ur CFLs)
Sei L eine kontextfreie Sprache. Dann gibt es eine Zahl n ∈
N>0, sodass jedes Wort z ∈ L, das Mindestl¨ ange n hat (d. h. |z| ≥ n), als z = uvwxy geschrieben werden kann, so dass gilt:
|vx| ≥ 1
|vwx| ≤ n
f¨ ur alle i ≥ 0: uv
iwx
iy ∈ L.
Beweis des Pumping-Lemmas (1)
Beh.: F¨ ur jede CFL L gibt es n ∈
N>0, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit
|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv
iwx
iy ∈ L Beweis:
Sei G = (V, Σ, P, S ) eine CFG in Chomsky-NF mit L(G) = L \ {ε}
Betrachte Ableitung und Syntaxbaum eines Wortes z mit |z| ≥ 2
|V|= n (wenn es keine solche Ableitung gibt, gilt das Pumping-Lemma:
es gibt dann keine Worte z ∈ L mit Mindestl¨ ange n) Da G in Chomsky-NF, ist der Syntaxbaum ein bin¨ arer Baum, bis auf die letzte Schicht, die Produktionen A → a anwendet
Baum ohne letzte Schicht hat |z| ≥ 2
|V|Bl¨ atter.
Daher gibt es einen Pfad von der Wurzel zum Blatt, der L¨ ange ≥ |V |, der aus ≥ |V + 1| Knoten besteht und jeder Knoten ist mit einer Variablen markiert.
S
| {z }
z
Beweis des Pumping-Lemmas (2)
Beh.: F¨ ur jede CFL L gibt es n ∈
N>0, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit
|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv
iwx
iy ∈ L Beweis:
. . .
Da es nur |V | Variablen gibt, kommt mindestens eine Variable mehrfach auf diesem Pfad vor.
W¨ ahle die Vorkommen der Variablen so, dass das zweite Vorkommen von unten gesehen am tiefsten ist. Sei A die Variable.
S
A A
| {z }
z
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 37/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Beweis des Pumping-Lemmas (3)
Beh.: F¨ ur jede CFL L gibt es n ∈
N>0, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit
|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv
iwx
iy ∈ L Beweis:
Betrachte die Teilb¨ aume, die jeweils A als Wurzel haben.
Sie entsprechen Ableitungen von
Teilworten vonzDer Teilbaum mit dem unteren A als Wurzel erzeugt ein Teilwort des Teilbaums mit dem oberen A als Wurzel. D.h. z = uvwxy, wobei vwx vom oberen A und w vom unteren A erzeugt wird.
Es gilt |w| ≥ 1, da Variablen einer Grammatik in Chomsky-NF nur W¨ orter mit L¨ ange ≥ 1 herleiten Das Wort vwx muss echt l¨ anger sein als w, da das obere A ¨ uber dem unteren A steht. Daher folgt
|v| ≥ 1 und/oder |x| ≥ 1 und somit |vx| ≥ 1.
S
A A
| {z }
z
u v w x y
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 38/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Beweis des Pumping-Lemmas (4)
Beh.: F¨ ur jede CFL L gibt es n ∈
N>0, sodass jedes Wort z ∈ L mit |z| ≥ n als z = uvwxy geschrieben werden kann mit
|vx| ≥ 1 |vwx| ≤ n f¨ ur alle i ≥ 0: uv
iwx
iy ∈ L Beweis:
Da wir das tiefste Vorkommen der wiederholten Variable gew¨ ahlt haben, kann der Pfad vom oberen A bis zur Blattebene nur aus ≤ |V | + 1 Knoten bestehen und L¨ ange ≤ |V | haben
Daraus folgt: |vwx| ≤ 2
|V|= n
Aus dem Baum folgt: A ⇒
∗w und A ⇒
∗vAx und daher kann man auch A ⇒
∗v
iwx
if¨ ur alle i ∈
Nableiten
Schließlich folgt daraus S ⇒
∗uv
iwx
iy f¨ ur alle i ∈
N.
S
A A
| {z }
z
u v w x y
Pumping-Lemma: Illustrationen
S
A
u
w
y
S
A A
A
u v x y
v w x
Illustration f¨ ur uv
0wx
0y Illustration f¨ ur uv
2wx
2y
Verwendung des Pumping-Lemma
Die Pumping-Eigenschaft ist eine notwendige aber
keine hinreichendeBedingung f¨ ur CFLs.
Daher kann das Pumping-Lemma
nichtverwendet werden, um Kontextfreiheit zu zeigen
Aber: Es kann verwendet werden, um
Kontextfreiheit zu widerlegenTCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 41/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Pumping-Lemma zum Widerlegen der Kontextfreiheit
Formulierung des Pumping-Lemmas f¨ ur CFGs zum Widerlegen der Kontextfreiheit
Sei L eine formale Sprache f¨ ur die gilt: F¨ ur jede Zahl n ∈
N>0gibt es ein z ∈ L, das Mindestl¨ ange n hat (d. h. |z| ≥ n), und f¨ ur jede Zerlegung z = uvwxy mit |vwx| ≤ n und |vx| ≥ 1, gibt es ein i ≥ 0, sodass uv
iwx
iy 6∈ L. Dann ist L nicht kontextfrei.
Beweis: Umformung der negierten pr¨ adikatenlogischen Formel (siehe Skript), die sich aus dem Pumping-Lemma ergibt.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 42/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Pumping-Lemma als Spiel
Sei L die formale Sprache.
1
Der
Gegnerw¨ ahlt die Zahl n ∈
N>0.
2 Wir
w¨ ahlen das Wort z ∈ L mit |z| ≥ n.
3
Der
Gegnerw¨ ahlt die Zerlegung
z = uvwxy mit |vx| ≥ 1 und |vwx| ≤ n
4 Wir
gewinnen das Spiel, wenn wir ein i ≥ 0 angeben k¨ onnen, sodass uv
iwx
iw 6∈ L.
Wenn wir
f¨ur jede Wahl des Gegnersdas Spiel gewinnen k¨ onnen, dann haben wir gezeigt, dass L nicht kontextfrei ist.
Beispiele
Satz
Die Sprache L = {a
lb
lc
l| l ∈
N} ist nicht kontextfrei.
Beweis:
Gegner w¨ ahlt n ∈
N>0Wir w¨ ahlen z = a
nb
nc
n.
Gegner w¨ ahlt Zerlegung z = uvwxy mit |vx| ≥ 1 und |vwx| ≤ n Fall 1: vwx ist von der Form a
ib
j, i + j ≤ n
Da |vx| ≥ 1, gilt #
a(vx) ≥ 1 oder #
b(vx) ≥ 1, aber #
c(vx) = 0 Damit folgt uv
0wx
0y 6∈ L
Fall 2: vwx ist von der Form b
ic
j, i + j ≤ n
Da |vx| ≥ 1, gilt #
b(vx) ≥ 1 oder #
c(vx) ≥ 1, aber #
a(vx) = 0 Damit folgt uv
0wx
0y 6∈ L
Andere F¨ alle sind nicht m¨ oglich!
Beispiele (2)
Satz
Die Sprache L = {a
ib
jc
id
j| i, j ∈
N>0} ist nicht kontextfrei.
Beweis:
Gegner w¨ahltn∈N>0. Wir w¨ahlenz=anbncndn.
Gegner w¨ahlt Zerlegungz=uvwxymit|vx| ≥1und|vwx| ≤n
1.Fall: vwx=aibj miti+j≤n. Da|vx| ≥1, gilt#a(vx) + #b(vx)≥1und uv0wx0y=uwy=ai0bj0cndnundi0< nund/oderj0< n, d.h.uwy6∈L.
2.Fall: vwx=bicj miti+j≤n. Da|vx| ≥1, gilt#b(vx) + #c(vx)≥1und uv0wx0y=uwy=anbi0cj0dnundi0< nund/oderj0< n, d.h.uwy6∈L 3.Fall: vwx=cidj miti+j≤n. Da|vx| ≥1, gilt#c(vx) + #d(vx)≥1 und uv0wx0y=uwy=anbnci0dj0 undi0< nund/oderj0< n, d.h.uwy6∈L.
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 45/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Un¨ ares Alphabet
Satz
Sei L eine formale Sprache ¨ uber einem un¨ aren Alphabet (d.h. |Σ| = 1).
Dann ist L genau dann regul¨ ar, wenn L kontextfrei ist.
Beweis:
Wenn L regul¨ ar ist, dann ist L auch kontextfrei.
R¨ uckrichtung: Siehe Skript
(Beweis verwendet die Pumping-Eigenschaft f¨ ur CFLs und konstruiert daraus eine Vereinigung von regul¨ aren Sprachen)
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 46/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Beispiele
Satz
Die Sprachen
L
1= {a
p| p ist eine Primzahl}
L
2= {a
n| n ist keine Primzahl}
L
3= {a
n| n ist Quadratzahl}
L
4= {a
2n| n ∈
N} sind allesamt nicht kontextfrei.
Beweis: Wir haben f¨ ur alle 4 Sprachen gezeigt, dass sie nicht regul¨ ar sind. Da sie alle ¨ uber einem un¨ aren Alphabet definiert sind, sind sie auch nicht kontextfrei.
Abschlusseigenschaften der kontextfreien Sprachen
Theorem
Die kontextfreien Sprachen sind abgeschlossen unter Vereinigung, Produkt und Kleeneschem Abschluss.
Beweis:
Seien L
1,L
2CFLs und G
i= (V
i, Σ
i, P
i, S
i) CFGs mit L(G
i) = L
if¨ ur i = 1, 2. O.B.d.A. sei V
1∩ V
2= ∅.
Seien S, S
0neue Variablen ({S, S
0} ∩ (V
1∪ V
2) = ∅).
Vereinigung:
Es gilt: L(G
∪) = L(G
1) ∪ L(G
2) = L
1∪ L
2f¨ ur G
∪= (V
1∪ V
2∪ {S}, Σ
1∪ Σ
2, P
1∪ P
2∪ {S → S
1| S
2}, S ).
Produkt:
Es gilt L(G
◦) = L(G
1)L(G
2) = L
1L
2f¨ ur
G
◦= (V
1∪ V
2∪ {S}, Σ
1∪ Σ
2, P
1∪ P
2∪ {S → S
1S
2}, S).
Kleenescher Abschluss:
Sei G
1,∗= (V
1∪ {S
0, S
0}, Σ, P
0, S
0) mit P
0= (P \ {S
1→ ε}) ∪ {S
0→ ε, S
0→ S, S → SS, S → S
1}.
Dann gilt L(G
1,∗) = L(G
1)
∗.
Abschlusseigenschaften der kontextfreien Sprachen (2)
Theorem
Die kontextfreien Sprachen sind
nicht abgeschlossenunter Schnitt- und Komplementbildung.
Sei L
1= {a
nb
mc
m| m, n ∈
N} und sei L
2= {a
mb
mc
n| m, n ∈
N} G
1= ({A, D, S}, {a, b, c}, {S → AD, A → ε | aA, D → bDc | ε}, S) G
2= ({C, D, S}, {a, b, c}, {S → DC, C → cC | ε, D → aDb | ε}, S) F¨ ur i=1,2: L(G
i) = L
i, daher: L
1und L
2sind beide kontextfrei.
L
1∩ L
2= {a
nb
nc
n| n ∈
N>0} ist nicht kontextfrei (bereits gezeigt).
Daher sind die CFLs nicht abgeschlossen bez¨ uglich Schnittbildung.
Komplement: Widerspruchsbeweis: Annahme: L CFL = ⇒ L CFL Seien L
1, L
2CFLs. Dann ist auch L
1∪ L
2CFL
(da CFLs abgeschlossen bez. · und ∪) Aber: L
1∪ L
2= L
1∩ L
2. Widerspruch!
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 49/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.
Zusammenfassung
Normalformen f¨ ur CFGs: Chomsky-Normalform und Greibach-Normalform
Widerlegen der Kontextfreiheit mit dem Pumping-Lemma Abschlusseigenschaften kontextfreier Sprachen
TCS | 04 Kontextfreie Sprachen (I) | SoSe 2019 50/50 Op. Chomsky-NF Greibach-NF Pumping-L. Abschlusseig.