浅浅冒泡一下我这个科研废物。
1 泵引理证明语言非正则
关于正则语言的泵引理:若 A A A是一个正则语言,则存在一个数 p p p(泵长度)使得,如果 s s s是 A A A中任一长度不小于 p p p的字符串,那么 s s s可以被分成 3 3 3段, s = x y z s=xyz s=xyz,满足下述条件:
- 对每一个 i ≥ 0 , x y i z ∈ A i\geq0,xy^iz\in A i≥0,xyiz∈A
- ∣ y ∣ > 0 |y|>0 ∣y∣>0
- ∣ x y ∣ ≤ p |xy|\leq p ∣xy∣≤p
这定理乍一看给我整不会了,然后以下借助例题说一下我的理解。(如有错误可以告诉我呜呜呜)
泵引理就是:在一个正则语言 A A A中有任意一个字符串 s s s,这个字符串由 3 3 3个子串 x 、 y 、 z x、y、z x、y、z构成(即 s = x y z s=xyz s=xyz),且 s s s中的一个子串(也就是 y y y)在自我重复 i i i次后,组成的新字符串 x y i z xy^iz xyiz仍在语言 A A A中。
注意:泵引理只能证明一个语言不是正则语言,而不能证明一个语言是正则语言。
例1:用泵引理证明语言 B = { 0 n 1 n ∣ n ≥ 0 } B=\{0^n1^n|n\geq0\} B={0n1n∣n≥0}不是正则的。
- 先假设语言正则:假设相反, B B B是正则的。
- 找合适的字符串 s s s,一般与语言本身形式长得一样:设 p p p是泵引理给出的泵长度。选择字符串 s = 0 p 1 p s=0^p1^p s=0p1p。
- 利用泵引理证明语言非正则,一般考察 x y y z xyyz xyyz?:
书上说,满足条件的子串 y y y有以下三种情况——
(1) y y y中只有 0 0 0:比如对于 000111 000111 000111, x = 00 , y = 0 , z = 111 x=00, y=0, z=111 x=00,y=0,z=111,那么 x y y z = 0000111 xyyz=0000111 xyyz=0000111, 0 0 0比 1 1 1多,矛盾。
(2) y y y中只有 1 1 1:比如对于 000111 000111 000111, x = 000 , y = 11 , z = 1 x=000, y=11, z=1 x=000,y=11,z=1,那么 x y y z = 0001111 xyyz=0001111 xyyz=0001111, 1 1 1比 0 0 0多,矛盾。
(3) y y y中有 0 0 0有 1 1 1:比如对于 000111 000111 000111, x = 00 , y = 01 , z = 11 x=00, y=01, z=11 x=00,y=01,z=11,那么 x y y z = 00010111 xyyz=00010111 xyyz=00010111,顺序乱了,不是所有 0 0 0都在 1 1 1前面,矛盾。
但是考虑
∣
x
y
∣
≤
p
|xy|\leq p
∣xy∣≤p,又因为
s
s
s前
p
p
p个字符都为
0
0
0,说明
x
y
xy
xy肯定由全
0
0
0组成。
而且
∣
y
∣
>
0
|y|>0
∣y∣>0,所以
y
y
y必然由
0
0
0组成。那就是上面的第(1)种情况。
例2:用泵引理证明语言 C = { w ∣ w 中 0 和 1 的 个 数 相 同 } C=\{w|w中0和1的个数相同\} C={w∣w中0和1的个数相同}不是正则的。
- 先假设语言正则:假设相反, C C C是正则的。
- 找合适的字符串 s s s,一般与语言本身形式长得一样:设 p p p是泵引理给出的泵长度。选择字符串 s = 0 p 1 p s=0^p1^p s=0p1p。
- 利用泵引理证明语言非正则,一般考察 x y y z xyyz xyyz?:同上。
例3:用泵引理证明语言 D = { w w ∣ w ∈ { 0 , 1 } ∗ } D=\{ww|w\in\{0,1\}^*\} D={ww∣w∈{0,1}∗}不是正则的。
- 先假设语言正则:假设相反, D D D是正则的。
- 找合适的字符串 s s s,一般与语言本身形式长得一样:设 p p p是泵引理给出的泵长度。选择字符串 s = 0 p 1 0 p 1 s=0^p10^p1 s=0p10p1。
- 利用泵引理证明语言非正则,一般考察
x
y
y
z
xyyz
xyyz?:
同样地, s s s前 p p p个字符串都是 0 0 0,所以根据泵引理, y y y必然由 0 0 0组成。
那么考察 001001 001001 001001,选择 x = 0 , y = 0 , z = 1001 x=0, y=0, z=1001 x=0,y=0,z=1001,
x y y z = 0001001 xyyz=0001001 xyyz=0001001,前面一串 0 0 0和后面一串 0 0 0的个数不相等,不满足 s s s的形式,矛盾。
2 泵引理证明语言不是上下文无关的
关于上下文无关语言的泵引理:若 A A A是上下文无关语言,则存在一个数 p p p(泵长度)使得,如果 s s s是 A A A中任一长度不小于 p p p的字符串,那么 s s s可以被分成 5 5 5段, s = u v x y z s=uvxyz s=uvxyz,满足下述条件:
- 对每一个 i ≥ 0 , u v i x y i z ∈ A i\geq0,uv^ixy^iz\in A i≥0,uvixyiz∈A
- ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0
- ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p
和正则语言那里差不多,直接看例题吧。
例4:用泵引理证明语言 E = { a i b j c k ∣ 0 ≤ i ≤ j ≤ k } E=\{a^ib^jc^k|0\leq i\leq\ j \leq k\} E={aibjck∣0≤i≤ j≤k}不是CFL。
- 假设语言 E E E是CFL,令 p p p是泵引理给出的泵长度,使 s = a p b p c p s=a^pb^pc^p s=apbpcp。
- 根据泵引理, s = u v x y z s=uvxyz s=uvxyz,且 ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0, ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p。
- 考察 a 5 b 5 c 5 a^5b^5c^5 a5b5c5,假设 v x y vxy vxy中只有 a a a,选择 u = a , v = a , x = a , y = a , z = a b 5 c 5 u=a,v=a,x=a,y=a,z=ab^5c^5 u=a,v=a,x=a,y=a,z=ab5c5,那么 i = 2 i=2 i=2时, u v i x y i z = u v v x y y z = a 7 b 5 c 5 ∉ E uv^ixy^iz=uvvxyyz=a^7b^5c^5\notin E uvixyiz=uvvxyyz=a7b5c5∈/E
例5:用泵引理证明语言 F = { 0 n 1 n 0 n 1 n ∣ n ≥ 0 } F=\{0^n1^n0^n1^n|n\geq 0\} F={0n1n0n1n∣n≥0}不是CFL。
- 假设语言 F F F是CFL,令 p p p是泵引理给出的泵长度,使 s = 0 p 1 p 0 p 1 p s=0^p1^p0^p1^p s=0p1p0p1p。
- 根据泵引理, s = u v x y z s=uvxyz s=uvxyz,且 ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0, ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p。
- 考察 0 4 1 4 0 4 1 4 0^41^40^41^4 04140414,假设 v x y vxy vxy中只有 0 0 0,选择 u = 0 , v = 0 , x = 0 , y = 0 , z = 1 4 0 4 1 4 u=0,v=0,x=0,y=0,z=1^40^41^4 u=0,v=0,x=0,y=0,z=140414,那么 i = 2 i=2 i=2时, u v i x y i z = u v v x y y z = 0 6 1 4 0 4 1 4 ∉ F uv^ixy^iz=uvvxyyz=0^61^40^41^4\notin F uvixyiz=uvvxyyz=06140414∈/F
例6:用泵引理证明语言 G = { w w ∣ w ∈ { 0 , 1 } ∗ } G=\{ww|w\in\{0,1\}^*\} G={ww∣w∈{0,1}∗}不是CFL。
- 假设语言 G G G是CFL,令 p p p是泵引理给出的泵长度,使 s = 0 p 1 0 p 1 s=0^p10^p1 s=0p10p1。
- 根据泵引理, s = u v x y z s=uvxyz s=uvxyz,且 ∣ v y ∣ > 0 |vy|>0 ∣vy∣>0, ∣ v x y ∣ ≤ p |vxy|\leq p ∣vxy∣≤p。
- 考察 0 4 1 0 4 1 0^410^41 041041,选择 u = 0 4 , v = 1 , x = 0 , y = 0 , z = 0 2 1 u=0^4,v=1,x=0,y=0,z=0^21 u=04,v=1,x=0,y=0,z=021,那么 i = 2 i=2 i=2时, u v i x y i z = u v v x y y z = 0 4 1 2 0 5 1 ∉ G uv^ixy^iz=uvvxyyz=0^41^20^51\notin G uvixyiz=uvvxyyz=0412051∈/G
参考:《计算理论导引(第3版)》