Sie sind auf Seite 1von 55

More Applications

of
The Pumping Lemma

1
The Pumping Lemma:
For infinite context-free language L
there exists an integer m such that

for any string w  L, | w | m


we can write w  uvxyz
with lengths | vxy | m and | vy | 1
and it must be:
i i
uv xy z  L, for all i  0
2
Non-context free languages
n n n
{a b c : n  0} {vv : v {a, b}}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

3
Theorem: The language
L  {vv : v {a, b}*}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

4
L  {vv : v {a, b}*}
Assume for contradiction that L
is context-free

Since L is context-free and infinite


we can apply the pumping lemma

5
L  {vv : v {a, b}*}
Pumping Lemma gives a magic number m
such that:

Pick any string of L with length at least m

m m m m
we pick: a b a b L

6
L  {vv : v {a, b}*}

m m m m
We can write: a b a b  uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
7
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz

We examine all the possible locations


m m m m
of string vxy in a b a b

8
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 1: vxy is within the first a
k1 k2
va ya k1  k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u vx y z
9
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 1: vxy is within the first a
k1 k2
va ya k1  k 2  1

m  k1  k 2 m m m
a ................ a b ...... b a ...... a b ...... b
u v2 x y2 z
10
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 1: vxy is within the first a

m  k1  k 2 m m m 2 2
a b a b  uv xy z  L

k1  k 2  1

11
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 1: vxy is within the first a

m  k1  k 2 m m m 2 2
a b a b  uv xy z  L

2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!!
12
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 2: v is in the first a
m
y is in the first b
k1 k2
va yb k1  k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u v x y z
13
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 2: v is in the first a
m
y is in the first b
k1 k2
va yb k1  k 2  1

m  k1 m  k2 m m
a ............ a b ............ b a ...... a b ...... b
u v 2 x
y 2 z
14
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 2: v is in the first a
m
y is in the first b

m  k1 m  k 2 m m 2 2
a b a b  uv xy z  L

k1  k 2  1

15
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 2: v is in the first a
m
y is in the first b

m  k1 m  k 2 m m 2 2
a b a b  uv xy z  L
2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!!
16
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
k1 k 2 k3
v a b yb k1, k 2  1

m m m m
a ...... a b ...... b a ...... a b ...... b
u v xy z
17
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
k1 k 2 k3
v a b yb k1, k 2  1

m k2 k1 m  k3 m m
a ...... a b ... b a ... a b ......... b a ...... a b ...... b
u v 2 x y 2 z 18
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
m k 2 k1 m  k3 m m 2 2
a b a b a b  uv xy z  L

k1, k 2  1

19
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m m
Case 3: v overlaps the first a b
m
y is in the first b
m k2 k1 k3 m m 2 2
a b a b a b  uv xy z  L
2 2
However, from Pumping Lemma: uv xy z  L

Contradiction!!!
20
L  {vv : v {a, b}*}
m m m m | vxy | m | vy | 1
a b a b  uvxyz
m
Case 4: v in the first a
m m
y Overlaps the first a b

Analysis is similar to case 3

m m m m
a ...... a b ...... b a ...... a b ...... b
uv x y z
21
Other cases: m m m m
vxy is within a b a b
or
m m m m
a b a b
or
m m m m
a b a b

Analysis is similar to case 1:


m m m m
a b a b
22
More cases: m m m m
vxy overlaps a b a b
or
m m m m
a b a b

Analysis is similar to cases 2,3,4:

m m m m
a b a b
23
There are no other cases to consider

Since | vxy | m, it is impossible


vxy to overlap: m m m m
a b a b
nor
m m m m
a b a b
nor
m m m m
a b a b
24
In all cases we obtained a contradiction

Therefore: The original assumption that

L  {vv : v {a, b}*}


is context-free must be wrong

Conclusion: L is not context-free


25
Non-context free languages
n n n
{a b c : n  0} {ww : w  {a, b}}
n!
{a : n  0}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

26
Theorem: The language
n!
L  {a : n  0}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

27
n!
L  {a : n  0}

Assume for contradiction that L


is context-free

Since L is context-free and infinite


we can apply the pumping lemma

28
n!
L  {a : n  0}

Pumping Lemma gives a magic number m


such that:

Pick any string of L with length at least m

m!
we pick: a L

29
n!
L  {a : n  0}

m!
We can write: a  uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
30
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

We examine all the possible locations


m!
of string vxy in a

There is only one case to consider


31
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

m!
a ............... a
u v x y z

k1 k2 1  k1  k 2  m
va ya
32
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

m! k1  k 2
a ........................... a
u v2 x y2 z

k1 k2 1  k1  k 2  m
va ya
33
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

m! k k  k1  k 2
a ........................... a
u v2 x y2 z

k1 k2
va ya 1 k  m
34
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

m! k 2 2
a  uv xy z

1 k  m

35
Since 1  k  m , for m  2 we have:
m! k  m! m
 m! m!m
 m!(1  m)
 (m  1)!

m! m! k  (m  1)!


36
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

m! m! k  (m  1)!

m! k 2 2
a  uv xy z  L

37
n!
L  {a : n  0}
m! | vxy | m | vy | 1
a  uvxyz

2 2
However, from Pumping Lemma: uv xy z  L

m! k 2 2
a  uv xy z  L

Contradiction!!!
38
We obtained a contradiction

Therefore: The original assumption that


n!
L  {a : n  0}
is context-free must be wrong

Conclusion: L is not context-free


39
Non-context free languages
n n n
{a b c : n  0} {ww : w  {a, b}}
2 n!
n n
{a b : n  0} {a : n  0}

Context-free languages

n n R
{a b : n  0} {ww : w  {a, b}*}

40
Theorem: The language
2
n n
L  {a b : n  0}
is not context free

Proof: Use the Pumping Lemma


for context-free languages

41
2
n n
L  {a b : n  0}
Assume for contradiction that L
is context-free

Since L is context-free and infinite


we can apply the pumping lemma

42
2
n n
L  {a b : n  0}
Pumping Lemma gives a magic number m
such that:

Pick any string of L with length at least m

2
m m
we pick: a b L

43
2
n n
L  {a b : n  0}
2
m m
We can write: a b  uvxyz

with lengths | vxy | m and | vy | 1

Pumping Lemma says:

i i
uv xy z  L for all i0
44
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

We examine all the possible locations

vxy in m2 m
of string a b

45
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1
m
Most complicated case: v is in a
m
y is in b

2 m
m
a ..................... a b ...... b
u v x y z
46
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

k1 k2
va yb 1  k1  k 2  m
2 m
m
a ..................... a b ...... b
u v x y z
47
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
va yb 1  k1  k 2  m
2 m
m
a ..................... a b ...... b
u v x y z
48
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
va yb 1  k1  k 2  m
2
m  k1 m  k 2
a ............... a b ... b
u 0 x 0z
v y
49
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

Most complicated sub-case: k1  0 and k 2  0


k1 k2
va yb 1  k1  k 2  m

m 2  k1 m  k 2 0 0
a b  uv xy z

50
k1  0 and k 2  0 1  k1  k 2  m

2 2
(m  k 2 )  (m  1)
2
 m  2m  1
2
 m  k1

2 2
m  k1  (m  k 2 )
51
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

2 2
m  k1  (m  k 2 )

2
m  k1 m  k2 0 0
a b  uv xy z  L

52
2
n n
L  {a b : n  0}
2
m m
a b  uvxyz | vxy | m | vy | 1

0 0
However, from Pumping Lemma: uv xy z  L

2
m  k1 m  k2 0 0
a b  uv xy z  L

Contradiction!!!
53
When we examine the rest of the cases
we also obtain a contradiction

54
In all cases we obtained a contradiction

Therefore: The original assumption that


2
n n
L  {a b : n  0}
is context-free must be wrong

Conclusion: L is not context-free


55

Das könnte Ihnen auch gefallen