是L = {a ^ n b ^ m | n> m}常规或不规则语言?

时间:2013-03-02 11:46:07

标签: regular-language dfa formal-languages

我在解决/证明这个问题时遇到了麻烦。有什么想法吗?

1 个答案:

答案 0 :(得分:10)

  

L = {a n b m | n> m}是不是常规语言。

是的,问题很棘手,最初几次尝试并值得投票。

抽取引理常规语言的必要属性是用于正式证明语言不是常规语言的工具。

正式定义:Pumping lemma for regular languages

  

L 成为常规语言。然后存在一个 p ≥1的整数,仅取决于 L L 每个字符串 w 长度至少 p p 称为“抽水长度”)可写为 w = xyz (即 w 可分为三个子字符串),满足以下条件:

     
      
  1. | ý | ≥1
  2.   
  3. | XY | ≤ p
  4.   
  5. 所有 i ≥0, xy i z L < / LI>   

假设,如果您选择字符串 W = a n b m ,其中(n + m) ≥ pn > m + 1。选择 W 是有效的,但此选项您无法显示该语言常规语言。因为使用此W,您总是有 at-least 选择y=a,以便通过重复 a 来抽取语言中的新字符串 所有 i 的值(对于i = 0和i&gt; 1)

在我编写解决方案以证明语言不规律之前。请理解以下几点并注意:我在上面的泵浦引理的正式定义中提出了粗体every string wall i

  • 虽然语言中有一些Sufficiently large W,但您可以在语言中生成新字符串但不可能全部 W (我的证明下面)有很多可能的选择,你找不到 任何选择 y 所有i&gt; = 0 的语言生成新字符串。因此,因为每个Sufficiently large W都无法在语言中生成新的字符串,因此语言 NOT 是常规的。

阅读:what pumping lemma formal definition says

证明:使用泵浦引理

步骤(1):选择字符串 W = a n b m 其中(n + m) ≥ pn = m + 1

Is this choice of W is valid according to pumping lemma?

是的,此类 W 使用的是语言,因为 a = n &gt; 的数量为 {{ 1}} = m。 W 的语言足够大&gt; = b

步骤(2):现在选择p所有 y生成新字符串。

这次i >= 0可以选择没有!为什么?

首先,我们知道我们不能在 y 中包含 y 符号,因为它会生成 b 的结果字符串总数中超出模式的新字符串将超过 b 的总数符号。

第二个,我们无法选择 y =某些 a ,因为使用a您将获得一个新字符串其中 i=0 的数量将小于 a 的数量,这在语言中是不可能的。(记住{的数量W中的{1}}只是b的一个,因此删除结果字符串N(a)= N(b)中的任何均值是不可接受的,因为n> m

因此,我们可以找到一些足够大的W,但是使用它们我们不能用与常规语言的泵浦引理属性相矛盾的语言生成新的字符串,因此语言{a n b < sup> m | n> m}确实是常规语言。