繁体   English   中英

计算理论-在上下文无关的语言中使用抽水引理

[英]Theory of computation - Using the pumping lemma for context free languages

我正在审查有关计算理论的课程的笔记,但在理解如何完成特定证明方面遇到困难。 这是问题:

A = {0^n 1^m 0^n | n>=1, m>=1}  Prove that A is not regular.

很明显,必须使用抽水引理。 所以,我们有

  1. | vy | > = 1
  2. | vxy | <= p(p是抽水长度,> = 1)
  3. 所有i> = 0的A中都存在uv ^ ixy ^ iz

尝试考虑选择正确的字符串似乎有些困难。 我当时在想0 ^ p 1 ^ q 0 ^ p,但是我不知道我能否默默地制作aq,而且由于u上没有限制,所以这会使事情变得不规则。

那么,如何处理呢?

如果使用适用于常规语言的泵引理的定义,而不是适用于CFG的泵引理的定义,则要简单得多。 任何常规字符串s = xyz都必须满足的三个条件是:

  1. 对于每个i> = 0,xy ^ iz在A中
  2. | y | > = 0
  3. | xy | <= p

尝试使用这三个条件再次使用0 ^ p1 ^ q0 ^ p。

提示:因为我们有0 ^ p,所以y将仅包含0。 因此,当我们“输入”更多y(考虑xyyz)时,将不会获得该语言的字符串。

您使用了错误的抽引引理... A在这里与上下文无关,但是它不是常规的。

http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages

那应该显示出您需要的引理...如果您从那开始,您可能会想出答案。 如果没有,请告诉我,我将编辑答案以给您一些提示。

我将在没有引理的情况下解决该问题:-考虑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)=ε,h'(2)= b。 您会得到一个不规则的^ nb ^ n。

为什么这更容易? 因为学习了这些基本技巧后,您就可以轻松解决此问题。

至于引理:-您需要将A中一个单词的任何子串用作子串破坏您的语言。 我可以看到6种情况(从头开始只有0,从头开始只有0,之后是1,依此类推...)

正如其他已经添加的那样,您不需要CF引理。 CF引理用于表示语言通常不是CF。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM