有人可以使用泵浦引理帮我解决这个问题吗?

时间:2013-03-14 14:02:05

标签: regular-language automata proof pumping-lemma

我刚刚开始阅读关于泵浦引理并且知道如何执行一些证明,主要是通过矛盾。只是这个特殊的问题,我似乎没有找到答案。我不知道如何开始。我可以假设必须有一个抽取长度P,并且对于L的所有w元素,LENGTH(w) >= P。当然,我们可以用{3}的正常条件写出xyz

我必须证明以下语言不常规:

L = {x + y = z | x,y,z element of {0,1}* and #(x) + #(y) = #(z) }

有人可以帮我解决这个问题,我真的想掌握证明这类问题的过程吗?

修改
抱歉,忘了说字母是{0,1,+,=}#表示字符串的二进制值。与#(00101) = 5#(110) = 6一样。

2 个答案:

答案 0 :(得分:2)

既然你想掌握这个过程,我会在展示证据之前指出一些事情。

  1. 首先要注意的是,+=可能只出现一次。因此,当您将字符串w写为w = abc时,抽取的部分b不能包含+=,否则您将达到一个微不足道的矛盾(我没有使用更标准的w = xyz符号来避免与L的定义混淆)。

  2. 需要注意的另一件事是,通常情况下,您需要选择一个特定的字符串w来进行抽取。在这种情况下,可以更容易选择一组共享某个属性的字符串。抽取引理只需要你使用一个字符串来达到一个相互作用,但没有理由你不能用多个字符串达成矛盾。

  3. 证明(在剧透中):

      

    因此,wL中的任何字符串,以使|w| ≥ Px, y, z不包含前导0。通过抽取引理,我们可以将w写为w = abc通过抽取引理,我们知道b不是空的。由于b不能包含+=,因此它完全包含在x, y,z中。使用任何i≠1抽取w会导致二进制方程不再保持,因为x, y, z中只有一个是不同的数字(这就是我们需要无前导0位的原因)。

答案 1 :(得分:2)

选择字符串1(0^n+1) + 1(0^n) = 11(0^n)

换句话说,你的字符串将显示“2到2的幂和+ 2加2到幂n + 1等于11后跟n个零”。

由于要抽取的字符串将完全由第一个加数中的符号组成,因此抽取必须更改所表示的数字(向数字添加或删除数字将更改数字;这是正确的,因为我们的字符串不包含前导零)如果x + y = z成立,那么x' + y = z如果x' != x(至少是整数)则不会成立。

由于泵浦引理要求泵浦的字符串在语言中,并且泵送该字符串失败,我们认为语言不规则。