为什么这不是上下文无关语法?

时间:2011-09-30 19:24:54

标签: math

我模糊地回忆起{a ^ n b ^ n c ^ n is,n> = 0}不是无上下文的。

但不是以下有效的上下文无关语法捕获上述

S - > ABCS S - >空

引用维基百科:

  

“在形式语言理论中,无上下文语法(CFG)是一种形式语法,其中每个生成规则都是形式   V→w   其中V是单个非终结符号,w是一串终端和/或非终结符(w可以为空)。“

4 个答案:

答案 0 :(得分:3)

S - > abcS产生类似的东西(abc)^ n而不是^ n b ^ n c ^ n

答案 1 :(得分:2)

您编写了一个生成规则,生成abc ^ n,而不是^ n b ^ n c ^ n。

答案 2 :(得分:2)

对于n = 2,生产不应该是:aabbcc?但你的示例语法不会产生abcabc吗?

答案 3 :(得分:2)

万一你想知道为什么它不是一个无上下文语法,这里有一个简单的解释:

无上下文语法是一种语法,可以通过下推自动机识别,该自动机是一个有限状态自动机,并添加了一个堆栈。

CFG的一个例子是^ n b ^ n。如果你考虑一下,我们可以在我们看到的每个“a”上为我们的堆栈推送一个令牌,并为我们看到的每个'b'在堆栈中弹出一个令牌。如果我们,我们将在任何时候失败 - 弹出后按下一个标记('b'后跟'a') - 完成处理字符串,但我们仍然有堆栈上的令牌(更多'比'b'更多') - 尝试弹出一个空堆栈(更多'b比'a')

如果您考虑如何使用下推式自动机识别^ n b ^ n c ^ n,您可能会意识到在玩完一些游戏后这是不可能的。

希望有所帮助。