我一直在观看关于有限状态机,DFA和NFA的Coderisland的讲座,在一次讨论中,他谈到了如何使用抽取引理来说明语言是如何不规则的。我不知道如何应用引理,并想知道我是否做得对。如果我有类似的东西:
w = {a n b k ,n = / = k}
我是正确的,我可以这样说:h = {a n b n + r ,r> 0}是 w 的子集,因此如果我通过引理显示 h 不规则,那么 w 必须不是常规的 h 是 w 的子集。
我要表明的方式如下:
因此 h 不能是规则的,因为 n + r b n + r 的形式不是{a n < / sup> b n + r ,r&gt; 0},因为 h 不常规 w 一定不能定期,因为 h 是 w 的元素
我是否正确应用了它?我理解如何将它应用于像{a n b n }这样简单的语言,因为我可以直接将这个引理应用于这种语言,但这是我能想到的唯一方法对于我的语言来说,创建一个属于我的语言的子集,并将该引理应用于此。
如果我没有正确应用它,有没有办法证明我的语言不是常规(或常规),使用另一个引理,或者可能是封闭属性?
这是一个非常棒的话题,即使我完全不理解泵浦引理,我很高兴能够进一步探索它!
答案 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}我们是证明它不是常规的。
现在考虑字符串s = a n b n!+ n (也就是说,n的n个后跟n阶乘加上n个b的数量)。通过抽取引理,如果 w 是常规的,那么应该有xyz,使得s = xyz,并且| xy |&lt; = n。
由于| xy |&lt; = n并且我们在s的开头有一个 n ,因此x和y必须只包含一个。设y = a m 。我们知道1&lt; = m&lt; = n。
现在我们得到a和b的数量之差是(n!+ n)-n = n!。此数字可以被1到n(包括1和n)范围内的任何数字整除。所以我们有n!/ m是一个整数。设q = n!/ m。
考虑到字符串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 不满足抽水引理。
因此 w 不常规。
<小时/> 要在评论中解决问题,请使用补充。
假设 w 是常规的。那么补语 w'也应该是常规的。
但补语 w' = {a n b n ,n自然数}不规律(你表明了,对吗?)。
因此 w 不常规。