泵引理#
用于证明一个语言不是正则语言
泵引理指出:对于任何正则语言L,存在一个整数p(称为泵长度),使得对于任何长度大于或等于p的字符串s∈L,都可以将s分解为三个部分s=xyz,满足以下条件:
- ∣xy∣≤p,即前两个部分的长度之和不超过p
- ∣y∣>0,即中间部分y的长度大于0
- 对于所有的非负整数i,字符串xyiz∈L,即重复中间部分y任意次数后,仍然属于语言L
- ∣s∣≥p,即字符串s的长度大于或等于泵长度p
所以利用上述规则,当重复中间部分任意次数后,只要有一个结果不属于语言L,就可以证明该语言不是正则语言
证明L={0n1n∣n≥0}不是正则语言
- 假设L是正则语言,则存在泵长度p
- 设输入字符串s, ∣s∣≥p,设s=0p1p,∣s∣=2p 确实大于等于p
- 根据泵引理,s可以分解为s=xyz,满足∣xy∣≤p且∣y∣>0。由于∣xy∣≤p,所以x和y只能包含0,因此可以设x=0k,y=0m,则∣xy∣=k+m≤p,∣y∣=m>0,所以z=0p−k−m1p
- 根据泵引理,xyiz∈L对于所有的非负整数i都应成立。当i=0时,xy0z=xz=0p−m1p,其中m>0,所以p−m<p,因此xy0z∈/L
- 不满足泵引理的条件,故L不是正则语言