Upload
meljun-cortes
View
154
Download
2
Tags:
Embed Size (px)
DESCRIPTION
MELJUN CORTES Automata Theory (Automata11)
Citation preview
CSC 3130: Automata theory and formal languages
Limitations of context-free languages
Fall 2008MELJUN P. CORTES, MBA,MPA,BSCS,ACSMELJUN P. CORTES, MBA,MPA,BSCS,ACS
MELJUN CORTESMELJUN CORTES
Non context-free languages
• Recall the pumping lemma for regular languagesallows us to show some languages are not regular
Are these languages context-free?
L1 = {anbn: n ≥ 0}
L2 = {x: x has same number of as and bs}L3 = {1n: n is prime}
L4 = {anbncn: n ≥ 0}
L5 = {x#xR: x ∈ {0, 1}*}
L6 = {x#x: x ∈ {0, 1}*}
Some intuition
• Let’s try to show this is context-free
L4 = {anbncn: n ≥ 0}
context-free grammar pushdown automaton
S → aBc B → ??
read a / push 1
read c / pop 1???
More intuition
• Suppose we could construct some CFG for L4, e.g.
• We do some derivationsof “long” strings
S BCB CS | bC SB | a
. . .
S BC CSC aSC aBCC abCC abaC abaSB abaBCB ababCB ababaB ababab
More intuition
• If derivation is long enough, some variable mustappear twice on same path in parse tree
S BC CSC aSC aBCC abCC abaC abaSB abaBCB ababCB ababaB ababab
S
B C
BC S S
B C B C
a b a b a b
More intuition
• Then we can “cut and paste” part of parse tree
S
B C
BC S S
B C B C
a b a b a b
BS
B C
a
b
b
B C
BC SS
B CBa
b a b
bC
S
ababab ababbabb✗
More intuition
• We can repeat this many times
• Every sufficiently large derivation will have a part that can be repeated indefinitely– This is caused by cycles in the grammar
ababab✗ ababbabb✗ ababbbabbb
ababnabnbb
General picture
u u
v v
vw
x
yy
u
v
v
v
w
x
y
uvwxy uv3wx3y
A
A
A
A
A
A
A
A
A
x
x
x
x
wxvvwxxy
Example
• If L4 has a context-free grammar G, then
• What happens for anbncn?
• No matter how it is split, uv2wx2y ∉ L4!
If uvwxy can be derived in G, so can uviwxiy for every i
L4 = {anbncn: n ≥ 0}
wu yxva a a ... a a b b b ... b b c c c ... c c
Pumping lemma for context-free languages• Theorem: For every context-free language L
There exists a number n such that for every string z in L, we can write z = uvwxy where |vwx| ≤ n |vx| ≥ 1 For every i ≥ 0, the string uviwxiy is in L.
wu yxv
Pumping lemma for context-free languages• So to prove L is not context-free, it is enough that
For every n there exists z in L, such that forevery way of writing z = uvwxy where |vwx| ≤ n and |vx| ≥ 1, the string uviwxiy isnot in L for some i ≥ 0.
wu yxv
Proving language is not context-free• Just like for regular languages, need strategy that,
regardless of adversary, always wins you this game
adversary
choose nwrite z = uvwxy (|vwx| ≤ n,|vx| ≥ 1)
you
choose z Lchoose iyou win if uviwxiy L
1
2
Example
adversary
choose nwrite z = uvwxy (|vwx| ≤ n,|vx| ≥ 1)
you
choose z Lchoose iyou win if uviwxiy L
1
2
adversary
nwrite z = uvwxy
you
z = anbncn
i = ?1
2
L4 = {anbncn: n ≥ 0}
wu yxva a a ... a a b b b ... b b c c c ... c c
Example
• Case 1: v or x contains two kinds of symbols
Then uv2wx2y not in L because pattern is wrong
• Case 2: v and x both contain one kind of symbol
Then uv2wx2y does not have same number of as, bs, cs
xva a a ... a a b b b ... b b c c c ... c c
xva a a ... a a b b b ... b b c c c ... c c
More examples
• Which of these is context-free?
L1 = {anbn: n ≥ 0}
L2 = {x: x has same number of as and bs}L3 = {1n: n is prime}
L4 = {anbncn: n ≥ 0}
L5 = {x#xR: x ∈ {0, 1}*}
L6 = {x#x: x ∈ {0, 1}*}