1
Normal Formsfor
Context-free Grammars
2
Chomsky Normal Form
All productions have form:
BCA
variable variable
aAand
terminal
3
Examples:
bA
SAA
aS
ASS
Not ChomskyNormal Form
aaA
SAA
AASS
ASS
Chomsky Normal Form
4
Convertion to Chomsky Normal Form
Example:
AcB
aabA
ABaS
Not ChomskyNormal Form
5
AcB
aabA
ABaS
Introduce variables for terminals:
cT
bT
aT
ATB
TTTA
ABTS
c
b
a
c
baa
a
cba TTT ,,
6
Introduce intermediate variable:
cT
bT
aT
ATB
TTTA
ABTS
c
b
a
c
baa
a
cT
bT
aT
ATB
TTTA
BTV
AVS
c
b
a
c
baa
a
1
1
1V
7
Introduce intermediate variable:
cT
bT
aT
ATB
TTV
VTA
BTV
AVS
c
b
a
c
ba
a
a
2
2
1
1
2V
cT
bT
aT
ATB
TTTA
BTV
AVS
c
b
a
c
baa
a
1
1
8
Final grammar in Chomsky Normal Form:
cT
bT
aT
ATB
TTV
VTA
BTV
AVS
c
b
a
c
ba
a
a
2
2
1
1
AcB
aabA
ABaS
Initial grammar
9
From any context-free grammarnot in Chomsky Normal Form
we can obtain: An equivalent grammar in Chomsky Normal Form
In general:
10
The Procedure
First remove:
Nullable variables
Unit productions
11
For every symbol : a
In productions: replace with a aT
Add production aTa
New variable: aT
12
Replace any production nCCCA 21
with
nnn CCV
VCV
VCA
12
221
11
New intermediate variables: 221 ,,, nVVV
13
Theorem:For any context-free grammar there is an equivalent grammar in Chomsky Normal Form
14
Observations
• Chomsky normal forms are good for parsing and proving theorems
• It is very easy to find the Chomsky normal form of any context-free grammar
15
Greinbach Normal Form
All productions have form:
kVVVaA 21
symbol variables
0k
16
Examples:
bB
bbBaAA
cABS
||
GreinbachNormal Form
aaS
abSbS
Not GreinbachNormal Form
17
aaS
abSbS
Conversion to Greinbach Normal Form:
bT
aT
aTS
STaTS
b
a
a
bb
GreinbachNormal Form
18
Theorem:For any context-free grammarthere is an equivalent grammarin Greinbach Normal Form
19
Observations
• Greinbach normal forms are very good for parsing
• It is hard to find the Greinbach normal form of any context-free grammar
20
An Applicationof
Chomsky Normal Forms
21
The CYK Membership Algorithm
Input:
• Grammar in Chomsky Normal Form G
• String
Output:
find if )(GLw
w
22
The Algorithm
• Grammar :G
bB
ABB
aA
BBA
ABS
• String : w aabbb
Input example:
23
a a b b b
aa ab bb bb
aab abb bbb
aabb abbb
aabbb
aabbb
24
aA
aA
bB
bB
bB
aa ab bb bb
aab abb bbb
aabb abbb
aabbb
bB
ABB
aA
BBA
ABS
25
aA
aA
bB
bB
bB
aa abS,B
bbA
bbA
aab abb bbb
aabb abbb
aabbb
bB
ABB
aA
BBA
ABS
26
aA
aA
bB
bB
bB
aa abS,B
bbA
bbA
aabS,B
abbA
bbbS,B
aabbA
abbbS,B
aabbbS,B
bB
ABB
aA
BBA
ABS
27
Therefore: )(GLaabbb
Time Complexity:3||w
The CYK algorithm can be easily converted to a parser
Observation:
28
Pushdown AutomataPDAs
29
Pushdown Automaton -- PDA
Input String
Stack
States
30
Initial Stack Symbol
Stack
$
Stack
z
bottomspecial symbol
31
The States
q1 q2a, b c
Inputsymbol
Popsymbol
Pushsymbol
32
q1 q2a, b c
a
b top
input
stack
a
Replaceeh
$eh
$
c
33
q1 q2a, c
a a
Pushb
eh
$eh
$
bc
top
input
stack
34
q1 q2a, b
a a
Popb
eh
$eh
$
top
input
stack
35
q1 q2a,
a a
No Changeb
eh
$eh
$
btop
input
stack
36
Non-Determinism
q1
q2a, b c
q3a, b c
q1 q2, b c
transition
These are allowed transitions in a Non-deterministic PDA (NPDA)
37
NPDA: Non-Deterministic PDA
Example:
,
a, a
b, a q0 q1 q2 q3
b, a
, $ $
38
a, a
b, a 0q q1 q2 q3
Execution Example:
Input
a a a b b b
currentstate
b, a
Time 0
, , $ $
Stack
$
39
a, a
b, a q0 q1 q2 q3
Input
a a a b b b
b, a
Time 1
, , $ $
Stack
$
40
a, a
b, a q0 q1 q2 q3
Input
Stack
a a a b b b
$
a
b, a
Time 2
, , $ $
41
a, a
b, a q0 q1 q2 q3
Input
Stack
a a a b b b$
aa
b, a
Time 3
, , $ $
42
a, a
b, a q0 q1 q2 q3
Input
Stack
a a a b b b
$
aaa
b, a
Time 4
, , $ $
43
a, a
b, a q0 q1 q2 q3
Input
a a a b b b
Stack
$
aaa
b, a
Time 5
, , $ $
44
a, a
b, a q0 q1 q2 q3
Input
a a a b b b$
a
Stack
b, a
Time 6
, , $ $
a
45
a, a
b, a q0 q1 q2 q3
Input
a a a b b b$
Stack
b, a
Time 7
, , $ $
a
46
a, a
b, a q0 q1 q2 q3
Input
a a a b b b
b, a
Time 8
accept, , $ $
$
Stack
47
A string is accepted if there is a computation such that:
• All the input is consumed
• The last state is a final state
At the end of the computation,we do not care about the stack contents
48
The input stringis accepted by the NPDA:
aaabbb
a, a
b, a q0 q1 q2 q3
b, a
, , $ $
49
}0:{ nbaL nn
is the language accepted by the NPDA:
a, a
b, a q0 q1 q2 q3
b, a
In general,
, , $ $
50
Another NPDA example
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
NPDA M
}{)( RwwML
51
Execution Example:
Input
Time 0
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
a ab b
52
Input
a ab
Time 1
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
ab
53
Input
Time 2
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
aa ab b
b
54
Input
Time 3
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
aa ab b
b
Guess the middle of string
55
Input
Time 4
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
aa ab b
b
56
Input
Time 5
Stack
$
, $ $1q q2
bb
aa
,
,
, q0
bb
aa
,
,
a ab b a
57
Input
Time 6
Stack
$
, $ $q1
bb
aa
,
,
, q0
bb
aa
,
,
a ab b
accept
q2
58
Rejection Example:
Input
Time 0
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
a b b b
59
Input
Time 1
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
aa b b b
60
Input
Time 2
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
ab
a b b b
61
Input
Time 3
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
ab
Guess the middle of string
a b b b
62
Input
Time 4
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
ab
a b b b
63
Input
Time 5
Stack
$
, $ $1q q2
bb
aa
,
,
, q0
bb
aa
,
,
aa b b b
There is no possible transition.
Input is not consumed
64
Another computation on same string:
Input Time 0
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
a b b b
65
Input
Time 1
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
aa b b b
66
Input
Time 2
Stack
$
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
ab
a b b b
67
Input
Time 3
Stack
$ab
a b b b
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
b
68
Input
Time 4
Stack
a b b b
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
$abbb
69
Input
Time 5
Stack
a b b b
$abbb
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
No final state is reached
70
, $ $q1 q2
bb
aa
,
,
, q0
bb
aa
,
,
There is no computation that accepts string abbb
)(MLabbb
Top Related