我正在复习我的计算理论课程的笔记,而我很难理解如何完成某个证明。这是一个问题:
A = {0^n 1^m 0^n | n>=1, m>=1} Prove that A is not regular.
很明显,泵浦引理必须用于此。所以,我们有
尝试考虑选择正确的字符串似乎有点不确定。我在想0 ^ p 1 ^ q 0 ^ p,但我不知道我是否可以模糊地制作一个q,因为没有约束你,这可能会让事情变得难以驾驭......
那么,怎么会这样呢?
答案 0 :(得分:4)
如果使用适用于常规语言的泵浦引理的定义,而不是适用于CFG的定义,则会更简单。任何常规字符串s = xyz必须具有的三个条件是:
使用这三个条件再次尝试使用0 ^ p1 ^ q0 ^ p。
提示:因为我们有0 ^ p,所以y只包含0。因此,当我们“吸入”更多y(考虑xyyz)时,我们将不会使用该语言中的字符串。
答案 1 :(得分:3)
你正在使用错误的抽取引理......这里没有上下文,但它不常规。
http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages
那应该向你展示你需要的引理......如果你从那开始,你可能会想出一个答案。如果没有,请告诉我,我会编辑我的答案,给你一些提示。
答案 2 :(得分:0)
我会在没有引理的情况下解决它: - 考虑h(a)其中h(1)= 1 h(2)= 0 h(0)= 0。将h ^ -1应用于您的语言,然后与0 ^ * 1 ^ 2 ^ 交叉,为您提供语言0 ^ n1 ^ m2 ^ n。 - 现在使用h'(a)其中h'(0)= a,h'(1)= epsilon,h'(2)= b。你得到一个不常规的^ nb ^ n。
为什么这更容易?因为在学习了这个基本技巧后,你可以很容易地解决这个问题。
至于引理: - 当用作子字符串时,您将需要A中单词的任何子字符串。我可以看到6个案例(从开始只有0,从开始0到1,等等......)
正如其他已添加的那样,您不需要CF引理。 CF-lemma用于表示语言通常不是CF.