为常规语法泵送引理


定理

设 L 为常规语言。那么存在一个常量'c',使得对于L中的每个字符串w -

|w| ≥c

我们可以将w分成三个字符串,w = xyz,这样 -

  • |y| > 0
  • |xy| ≤ c
  • 对于所有 k ≥ 0,字符串 xy k z 也在 L 中。

泵浦引理的应用

泵引理用于表明某些语言是不规则的。它不应该被用来表明语言是规则的。

  • 如果L是正则的,则满足泵送引理。

  • 如果L不满足泵引理,则它是非正则的。

证明语言 L 不是正则的方法

  • 首先,我们必须假设L是正则的。

  • 因此,泵送引理对于L应该成立。

  • 使用泵引理获得矛盾 -

    • 选择w使得|w| ≥c

    • 选择y使得|y| ≥1

    • 选择x使得|xy| ≤c

    • 将剩余的字符串分配给z。

    • 选择k使得结果字符串不在L中。

因此 L 不是正则的。

问题

证明L = {a i b i | i ≥ 0}不是正则。

解决方案-

  • 首先,我们假设L是正则的,n 是状态数。

  • 设 w = a n b n。因此 |w| = 2n ≥ n。

  • 通过抽引理,令 w = xyz,其中 |xy| ≤ n。

  • 令 x = a p、 y = a q和 z = a r b n,其中 p + q + r = n,p ≠ 0,q ≠ 0,r ≠ 0。因此 |y| ≠ 0。

  • 令 k = 2。则 xy 2 z = a p a 2q a r b n

  • as的个数=(p+2q+r)=(p+q+r)+q=n+q

  • 因此,xy 2 z = a n+q b n。由于 q ≠ 0,xy 2 z 不是 a n b n的形式。

  • 因此,xy 2 z 不在L 中。因此L 不规则。