关于Context Free Grammars的归纳证明

时间:2014-05-12 09:49:46

标签: context-free-grammar induction

所以我有这个问题我正在研究关于Context Free Grammars的归纳证明。

鉴于此语法

S-> aSb | SS | AB

使用归纳证明语法生成的字符串不以 abb 开头。

很容易看出这实际上是正确的,但我对如何制作它的正式证据有一些问题。

我想要使用价值归纳法对词的长度进行过程,或者通过价值归纳来推导词的长度(在这种情况下,不知道哪一个更好)。

让我们在推导的长度上使用归纳法。

基本情况:推导的长度是一步,然后唯一的可能性是S-> ab,显然有效。

归纳假设:如果S => w' n个推导(n> 0),则w'不以abb开头

归纳步骤:??

诱导步骤是我遇到问题的地方,我不知道该怎么做。

我想知道是否有人可以解释我应该在那里做什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于n的任何归纳,基本情况是P(0)或P(1),归纳假设是P(n),诱导步骤是证明P(n)意味着P(n + 1) )。所以你希望你的归纳步骤是:

归纳步骤:鉴于所有w'这样S =>瓦特'有n个推导步骤,w'不是以字符串abb开头,证明对于所有w''这样S =>瓦特''使用n + 1个推导步骤,w''不以字符串abb开头。

换句话说:如果对于长度为n的所有推导,我们都有w不以abb开头的属性,我们希望证明对于长度为n + 1的所有推导,相同的属性都成立。

长度为n + 1的每个推导都具有S - >中的一个。 aSb,s - > SS或s - > AB。 (如果我们要求n> 0,那么最后一个不适用。)所以你想要一个案例分析。

案例1:S - > ASB。如果S可以扩展为单个b,或者扩展为bb的字符串,我们就会反驳结论。如果我们能够证明语言中的单词不是以b开头,或者等效地说每个单词都以a开头,我们就可以为这个案例确定结论。

案例2:S - > SS。初始字符串abb必须是

  • 全部在RHS的第一个S中,或
  • 部分在第一个S中,或
  • (如果第一个S重写为空字符串)在第二个S的开头。

归纳假设排除了第一个和最后一个。那么我们可以通过多少种方式定义前缀' abb'在第一个S和第二个之间?我算两个:' a' +' bb'和' ab' +' b'。如果我们能够证明这些语言中的任何一个都不可能,那么我们就可以免费回家了。

所以,如果我的任务是制作这个证据,我首先要证明语言中没有任何单词以' b'开头,并使用它来处理这两种情况。