rici是正确的。为了显示语法是相同的(它们生成相同的语言),可以显示出一个能够复制另一个,从而生成相同的字符串。
例如,所提出的语法可以产生(S)S
和E
如下:
`S => SS => (S)S` and `S => E`.
你的语法可以复制其他语法如下:
`S => (S)S => (S)`
`S => E`
对于S => SS
,你不能真正复制那个,或者讲课中的语法可以的任何其他S^n
。没关系,因为你不需要覆盖所有这些,只要覆盖一串串终端即可。对于这一个,注意S^n
最终必须所有的S
变成(S)
(其它规则),然后从左边工作:
`S => (S)S => (S)(S)S => ... => (S)^n S => (S)^n`
现在你做。你可以通过以下方式来证明它:(a)你的语法生成的每个字符串都在L
; (b)如果一个字符串在L
那么你的语法生成它。您可以通过归纳法(例如,括号对的数量)来完成此操作。
基本情况:对于n = 0
,字符串是E
,这在L
。 n = 0
唯一的字符串是E
,它是由我们的语法生成的。
归纳假设:所有的字符串与直到并包括k
双通过我们的语法生成的括号是L
,并在L
所有字符串与直到并包括k
对括号通过我们的语法生成。
归纳步:我们显示出与k+1
对我们的语法产生括号的所有字符串都在L
,并且在L
与k+1
对括号的所有字符串由我们的语法生成。
假设串w
与通过使用规则S => (S)S
我们的语法生成k+1
对括号。然后w
=(X)Y where
X and
are words in
Ý大号with fewer than
K + 1pairs of parentheses. But then they are balanced by the induction hypothesis.
瓦特is therefore balanced since
X is balanced, thus
(X)is balanced and
(X)Y = w`过。
假设字符串w
与k+1
括号对在L
。然后,通过L
的定义,w
是平衡的。平衡括号的字符串必须具有相同数量的左右括号,并且在任何前缀中必须至少具有与右括号相同数量的左括号(因此它们在任何后缀中必须至少具有与左括号一样多的右括号)。选择第一个左括号和第一个右括号,以便前缀包含相等数目的左右括号;这是w
的子串(x)
。在子字符串之后,还必须具有与右括号相同数量的左括号,并且在任何前缀中必须至少有与右括号一样多的左括号(这是为了满足w
平衡的条件)。因此,之后会发生什么 - 我们称之为y
- 也必须是一个平衡的括号字符串。作为(正确的)子字符串,x
和y
必须短于w
(包含更少的括号对),它们必须均衡,因此两者都在L
中。但它们都是由语法生成的,而且由于语法包含生产S => (S)S
,因此语法生成(x)y
。
QED
你的答案好感谢。 – yogeshagr