证明以下语言是等效的

时间:2019-03-31 17:38:23

标签: context-free-grammar

我需要通过归纳证明以下语言是等效的:

P :: =ε| id | (P)

S :: =ε| id | (R

R :: =)| S)

需要证明:

L(P)= L(S)

我该怎么做?

我能够证明L(S)包含L(P),但我无法证明另一个方向。

1 个答案:

答案 0 :(得分:0)

要通过归纳出示证明,我们必须陈述要求,证明其在基本情况下是正确的,陈述假设,然后证明要求对下一个大小的情况成立。

我们的主张可以是“ L(P)和L(S)对于所有自然n都包含长度为n的相同字符串”。

我们的基本情况可以是两种语言中最小的最小字符串:L(P)和L(S)都包含空字符串,唯一的零长度字符串;因此L(P)和L(S)都包含id,这是长度为2的语言中唯一的字符串(假设i和d是不同的符号;如果id是一个符号,则这些字符串的长度为一)。因此,该索赔最多可保留n = 2(或n = 1,视情况而定)。

我们可以使用强归纳法,而不是普通归纳法,如下:L(P)和L(S)包含所有相同的长度不超过k的字符串。

现在,我们必须证明,对于第二长的字符串,一种语言中包含的任何字符串都包含在另一种语言中,反之亦然。

  1. 让w是L(P)中下一个更高长度的字符串。由于| w |,用于导出w的第一个乘积必须是P :: =(P)。 > 2(或| w |> 1),我们已经介绍了较小的情况。然后w =(w'),其中w'是L(P)中的字符串,| w'| <| w |。但是w在L(P)中的下一个长度大于k,因此w'的长度必须小于或等于k。但是,根据归纳假设,w'必须同时在L(P)和L(S)中。因此,推导S :: =(R :: =(S):: =(w')是有效的并产生w。因此,w在L(S)中。
  2. 让w是L(S)中下一个更高长度的字符串。用于推导w的第一个产品必须为S :: =(R,下一个产品必须为R :: =)或R :: = S)。让我们分别考虑这些情况。
    • 如果第二个产生式是R :: =,则w = S :: =(R :: =(),我们可以用两种语言来验证它(或者我们可以仅依靠归纳假设)。 / li>
    • 如果第二个产生式为R :: = S),则w = S :: =(R :: =(S),所以w的形式为(w')其中| w'| <| w | 。由于w的下一个更大长度大于k,因此w'的长度小于或等于k,并且由P的语法生成。