这是使用泵浦引理的正确方法吗?

时间:2014-01-26 02:26:05

标签: regular-language finite-automata formal-languages pumping-lemma

我一直在观看关于有限状态机,DFA和NFA的Coderisland的讲座,在一次讨论中,他谈到了如何使用抽取引理来说明语言是如何不规则的。我不知道如何应用引理,并想知道我是否做得对。如果我有类似的东西:

w = {a n b k ,n = / = k}

我是正确的,我可以这样说:

h = {a n b n + r ,r> 0}是 w 的子集,因此如果我通过引理显示 h 不规则,那么 w 必须不是常规的 h w 的子集。

我要表明的方式如下:

  1. h = xyz
  2. | XY | < = n
  3. x = a n-r
  4. y = a r
  5. z = b n + r
  6. xyz = a n-r a r b n + r
  7. xy 2 z = a nr a 2r b n + r = a n + r b n + r
  8. 因此 h 不能是规则的,因为 n + r b n + r 的形式不是{a n < / sup> b n + r ,r&gt; 0},因为 h 不常规 w 一定不能定期,因为 h w 的元素

    我是否正确应用了它?我理解如何将它应用于像{a n b n }这样简单的语言,因为我可以直接将这个引理应用于这种语言,但这是我能想到的唯一方法对于我的语言来说,创建一个属于我的语言的子集,并将该引理应用于此。

    如果我没有正确应用它,有没有办法证明我的语言不是常规(或常规),使用另一个引理,或者可能是封闭属性?

    这是一个非常棒的话题,即使我完全不理解泵浦引理,我很高兴能够进一步探索它!

1 个答案:

答案 0 :(得分:1)

你的证明有两个错误。

首先,这是你的陈述中的错误:

  

如果我通过引理显示 h 不规律,那么 w 一定不能定期,因为 h 的一个子集>瓦特

因为考虑语言 L = {a n b m | n,m自然数} h L 的子集,但显然 L 是常规的,因为它可以用正则表达式a * b *表示。

但是你非常接近解决方案,实际上你不需要考虑 h 。您应该 w 中选择一个字符串,这样无论如何对它应用Pumping Lemma,您总会得到一个不在 w 中的字符串

现在这是你的泵浦引理的第3步中的第二个错误。在引用引理中,我们要证明“有一种语言的元素,这样无论你如何对该字符串应用泵浦引理,你总会得到一个超出语言的字符串”。

在你的证明中,你故意选择x = a n-r ,而没有解释为什么必须如此。可能存在实际上x = a n-2 的情况。在这种情况下,幸运的是,你仍然有相同的结论,它不满足泵浦引理(因此它不常规),因为通过考虑xy r + 1 z你肯定会有更多的a比b的


证明你的问题的一种正确方法是直接应用抽取引理(还有其他方法,例如使用补语,或者用常规语言交叉并证明交集是不规则的),但是为了解释的目的抽取引理,我将向您展示如何为这种语言应用泵浦引理。

所以,问题是我们 w = {a n b k ,n = / = k}我们是证明它不是常规的。

  1. 现在考虑字符串s = a n b n!+ n (也就是说,n的n个后跟n阶乘加上n个b的数量)。通过抽取引理,如果 w 是常规的,那么应该有xyz,使得s = xyz,并且| xy |&lt; = n。

  2. 由于| xy |&lt; = n并且我们在s的开头有一个 n ,因此x和y必须只包含一个。设y = a m 。我们知道1&lt; = m&lt; = n。

  3. 现在我们得到a和b的数量之差是(n!+ n)-n = n!。此数字可以被1到n(包括1和n)范围内的任何数字整除。所以我们有n!/ m是一个整数。设q = n!/ m。

  4. 考虑到字符串xy q + 1 z,我们得到a的数量为(nm)+(q + 1)* m = n-m + qm + m = n + qm = n + n !,这与b的数量相同。所以xy q + 1 z不在语言 w 中,因为a的数量与b的数量相同。因此,语言 w 不满足抽水引理。

  5. 因此 w 不常规。

  6. <小时/> 要在评论中解决问题,请使用补充。

    1. 假设 w 是常规的。那么补语 w'也应该是常规的。

    2. 但补语 w' = {a n b n ,n自然数}不规律(你表明了,对吗?)。

    3. 因此 w 不常规。