Simplification PDF
Simplification PDF
of
Context-Free Grammars
Equivalent
grammar
S → aB
S → aB | ab
A → aaA
Substitute A → aaA
A → abBc B→b A → abBc | abbc
B → aA
B → aA
B→b
Fall 2004 COMP 335 2
A Substitution Rule
S → aB | ab
A → aaA
A → abBc | abbc
B → aA
Substitute
B → aA
S → aB | ab | aaA
Equivalent
A → aaA
A → abBc | abbc | abaAc
grammar
Fall 2004 COMP 335 3
In general:
A → xBz
B → y1
Substitute
B → y1
equivalent
A → xBz | xy1z grammar
Fall 2004 COMP 335 4
Nullable Variables
λ − production : A→λ
Example Grammar:
S → aMb
M → aMb
M →λ
Nullable variable
S → aMb
S → aMb
Substitute S → ab
M → aMb M →λ
M → aMb
M →λ
M → ab
Unit Production: A→ B
Observation:
A→ A
Is removed immediately
S → aA
A→a
A→ B
B→A
B → bb
Final grammar
S → aA | aB | aA S → aA | aB
A→a A→a
B → bb B → bb
S → aSb
S →λ
S→A
A → aA Useless Production
S ⇒ A ⇒ aA ⇒ aaA ⇒ K ⇒ aa K aA ⇒ K
Fall 2004 COMP 335 15
Another grammar:
S→A
A → aA
A→λ
B → bA Useless Production
w∈ L(G )
S → aSb
S →λ Productions
Variables S→A useless
useless A → aA useless
useless B→C useless
Example Grammar:
S → aS | A | C
A→a
B → aa
C → aCb
S → aS | A | C Round 1: { A, B}
A→a S→A
B → aa
C → aCb Round 2: { A, B, S }
S → aS | A | C
A→a S → aS | A
B → aa A→a
C → aCb B → aa
Remove useless productions
Fall 2004 COMP 335 21
Second: Find all variables
reachable from S
S → aS | A
A→a S A B
B → aa not
reachable
Final Grammar
S → aS | A
S → aS | A
A→a
A→a
B → aa
A → BC or A→a
S → AS S → AS
S →a S → AAS
A → SA A → SA
A→b A → aa
Chomsky Not Chomsky
Normal Form Normal Form
Example: S → ABa
A → aab
B → Ac
Not Chomsky
Normal Form
S → ABTa
S → ABa A → TaTaTb
A → aab B → ATc
B → Ac Ta → a
Tb → b
Tc → c
Fall 2004 COMP 335 29
Introduce intermediate variable: V1
S → AV1
S → ABTa
V1 → BTa
A → TaTaTb
A → TaTaTb
B → ATc
B → ATc
Ta → a
Ta → a
Tb → b
Tb → b
Tc → c
Tc → c
Fall 2004 COMP 335 30
Introduce intermediate variable: V2
S → AV1
S → AV1
V1 → BTa
V1 → BTa
A → TaV2
A → TaTaTb
V2 → TaTb
B → ATc
B → ATc
Ta → a
Ta → a
Tb → b
Tb → b
Tc → c
Fall 2004 COMP 335 Tc → c 31
Final grammar in Chomsky Normal Form:
S → AV1
V1 → BTa
A → TaV2
Initial grammar
V2 → TaTb
S → ABa B → ATc
A → aab Ta → a
B → Ac Tb → b
Fall 2004 COMP 335
Tc → c 32
In general:
we can obtain:
An equivalent grammar
in Chomsky Normal Form
First remove:
Nullable variables
Unit productions
Add production Ta → a
New variable: Ta
Fall 2004 COMP 335 35
Replace any production A → C1C2 LCn
with A → C1V1
V1 → C2V2
K
Vn−2 → Cn−1Cn
A → a V1V2 LVk k ≥0
symbol variables
S → cAB
S → abSb
A → aA | bB | b
S → aa
B→b
S → aTb STb
S → abSb S → aTa
S → aa Ta → a
Tb → b
Greibach
Normal Form
Fall 2004 COMP 335 41
Theorem: For any context-free grammar
(which doesn’t produce λ )
there is an equivalent grammar
in Greibach Normal Form
Input:
• String w
Output:
find if w∈ L(G )
Fall 2004 COMP 335 45
The Algorithm
Input example:
• Grammar G : S → AB
A → BB
A→a
B → AB
B→b
• String w : aabbb
Fall 2004 COMP 335 46
aabbb
a a b b b
aa ab bb bb
aabb abbb
aabbb
aabb abbb
aabbb
Fall 2004 COMP 335 48
S → AB
A → BB
a a b b b
A→a A A B B B
B → AB
aa ab bb bb
B→b S,B A A
aab abb bbb
aabb abbb
aabbb
Fall 2004 COMP 335 49
S → AB
a a b b b
A → BB
A A B B B
A→a
aa ab bb bb
B → AB
S,B A A
B→b aab abb bbb
S,B A S,B
aabb abbb
A S,B
aabbb
S,B
Fall 2004 COMP 335 50
Therefore: aabbb ∈ L(G )
3
Time Complexity: | w|