L = {an bm | n > m} 是非常规语言。
是的,问题很棘手在最初的几次尝试中都值得一票。
抽取引理是常规语言的必要属性,是正式证明语言不是常规语言的工具。
正式定义:Pumping lemma for regular languages
让 L 成为常规语言。那么存在一个整数 p ≥ 1 仅取决于 L 使得 每个字符串 w 在 L长度至少为p的(p称为“抽水长度”)可以写成w = xyz (即w可以分为三个子串),满足如下条件:
- |是| ≥1
- |xy| ≤ p
- 对于所有i ≥ 0,xyiz ∈ L
假设,如果你选择字符串 W = an bm 其中(n + m) ≥ p 和n > m + 1。 W 的选择是有效的,但该选择您无法表明该语言不是常规语言。因为有了这个W,您总是有至少一个y=a 的选择,通过重复a 为 来抽取语言中的新字符串i 的所有值(对于 i =0 和 i > 1)。
在我编写解决方案以证明语言不规则之前。请理解以下几点并注意:我在上面的泵引理的正式定义中加粗了every string w和all i。
阅读:what pumping lemma formal definition says
证明:使用抽引引理
步骤(1):选择字符串W = an bm 其中(n + m) ≥ p和@ 987654335@。
Is this choice of W is valid according to pumping lemma?
是的,这样的 W 是语言,因为 a 的数量 = n > b 的数量 em> = 米。 W 是语言并且足够大 >= p。
步骤 (2): 现在选择 y 为 all i >= 0 生成新字符串。
而这次y 可以选择否!为什么?
首先,要明白我们不能在 y 中有 b 符号,因为它会生成新的字符串超出模式 或 结果字符串中的 b 总数将超过 a 符号的总数。
Second,我们不能选择 y = some a's,因为使用 i=0 你会得到一个新字符串,其中a 的数量将少于 b 的数量,这在语言中是不可能的。(记住 W 中 a 的数量只是比b 多一个,因此删除结果字符串 N(a)=N(b) 中不可接受的任何 a 手段,因为 n>m)
因此,我们可以找到一些足够大的 W,但是使用它我们无法在与常规语言的泵引引理属性相矛盾的语言中生成新字符串,因此语言 {an bm | n > m} 确实是不是常规语言。