让我在这里举例说明:
L = {a^n.b^n | n >= 0};
L 中接受的最小长度字符串是:
{ε, ab, aabb, ...} => 最小值 w = ab;
我没有使用n == 0,因为对于n == 0,y 永远不可能是|y| > 0。
我们先来x = ε,然后y = a和z = b或y = ab和z = ε,因为|y| > 0和|xy| <= 2(因为它是一种无限的语言,p(这里是2)可以与字符串长度一样最大reference here)
抽完y = a:
L' = aab, aaab, aaaab, aaaaab;
抽完y = ab:
L' = abab, ababab, abababab;
现在,取x = a,然后取y = b 和z = ε;
抽完y = b:
L' = abb, abbb, abbbb, abbbbb;
再次检查 w = aabb : w 在 L 中;
对于x 可以是ε, a, aa, aab,
那么y 可以是a, aa, bb, ab, aab, ... aabb
而z 可以是ε, b, bb, abb;
在上述所有情况下,L' 在抽取任何长度的y 后生成的L 都不会被接受。 L' 要么 a、b 不相等,要么顺序不符合定义。因此,L = {a^n.b^n | n >= 0}; 不规则,因为它失败了Pumping lemma for regular languages。