Processing math: 100%

正则语言的泵引理

用法

泵定理(pumping lemma):判断一个语言不是正则语言,通常使用反证法(泵引理是RL语言的必要条件)

原理

L 是一个RL,则存在仅依赖于L的正整数P
对于wL, 如果|w|P,则存在x,y,zΣ 满足w=xyz,同时有:
(1) |xy|P
(2) |y|1
(3) iN0xyizL

上叙是自然语言,用正式表达式 (formal expression)如下

(LΣ)(regular(L)((P1)((wL)((|w|P)((x,y,zΣ)(w=xyz(|xy|P|y|1(iN0)(xyizL))))))))

图形结合

泵引理.png

所以对于y这个字符串来说,无论中间重复多少遍,都是会回到红色的状态中
其中P可以取值 = 最小DFA状态数

证明

试证明上下文无关文法L={0n1n|n1}不是RL

反证法:设L={0n1n|n1}是RL,则L满足泵引理. 不妨设 P是仅依赖于 L的正整数
取语句w=0P1P,由L的定义可知 wL.
此时|w|=2PP,由定理结论
(1) |xy|P
(2) |y|1
可知 xy一定是形如 x=0g(g1),y=0h(h1)
那么倒推出 z=0Pgh1P
取定理结论(3)中变量i=2,则xy2z=0g(0h)20Pgh1P=0P+h1PL,不满足定理结论(3),得出矛盾
假设不成立,得证

实际上,正则语言不具有计数性.
例如编译原理中,利用正则表达式(DFA、NFA)做完词法分析,需要引入更强的语法 上下文无关文法 去做语法分析


附件下载