405 字
2 分钟
[形式语言与自动机] 泵引理

泵引理#

用于证明一个语言不是正则语言

泵引理指出:对于任何正则语言LL,存在一个整数pp(称为泵长度),使得对于任何长度大于或等于pp的字符串sLs \in L,都可以将ss分解为三个部分s=xyzs = xyz,满足以下条件:

  • xyp|xy| \leq p,即前两个部分的长度之和不超过pp
  • y>0|y| > 0,即中间部分yy的长度大于0
  • 对于所有的非负整数ii,字符串xyizLxy^iz \in L,即重复中间部分yy任意次数后,仍然属于语言LL
  • sp|s| \ge p,即字符串ss的长度大于或等于泵长度pp

所以利用上述规则,当重复中间部分任意次数后,只要有一个结果不属于语言LL,就可以证明该语言不是正则语言

例子#

证明L={0n1nn0}L = \{0^n1^n | n \geq 0\}不是正则语言

  1. 假设LL是正则语言,则存在泵长度pp
  2. 设输入字符串ss, sp|s| \geq p,设s=0p1ps = 0^p1^ps=2p|s| = 2p 确实大于等于pp
  3. 根据泵引理,ss可以分解为s=xyzs = xyz,满足xyp|xy| \leq py>0|y| > 0。由于xyp|xy| \leq p,所以xxyy只能包含0,因此可以设x=0k,y=0mx = 0^k, y = 0^m,则xy=k+mp,y=m>0|xy| = k + m \leq p, |y| = m > 0,所以z=0pkm1pz = 0^{p-k-m}1^p
  4. 根据泵引理,xyizLxy^iz \in L对于所有的非负整数ii都应成立。当i=0i = 0时,xy0z=xz=0pm1pxy^0z = xz = 0^{p-m}1^p,其中m>0m > 0,所以pm<pp-m < p,因此xy0zLxy^0z \notin L
  5. 不满足泵引理的条件,故LL不是正则语言
[形式语言与自动机] 泵引理
https://alkaid114.github.io/posts/automata/pump/
作者
Alkaid114
发布于
2026-07-07
许可协议
CC BY-NC-SA 4.0