乔姆斯基语言:如何识别它们?

问题描述 投票:1回答:1

我对语言的识别存在问题。给定某种语言,例如ancb2n,n> 0,如何根据乔姆斯基快速确定属于哪种类型?

我的想法是确定生成它的语法,然后确定语言,但这是一个漫长的过程。我认为还有另一种方法可以通过眼睛识别它,而无需编写语法或自动机。有人能帮我吗?

grammar context-free-grammar ambiguous-grammar context-sensitive-grammar chomsky-hierarchy
1个回答
0
投票

不幸的是,在一般情况下,将任意语言与乔姆斯基等级的级别相关联是不可判定的。 (见Rice's Theorem。)

当然,很容易对给定的语法进行分类,因为Chomsky层次结构是通过对语法本身的简单句法分析来定义的。但是,语言没有独特的语法; (例如)语言的类型2(无上下文)语法的存在并不意味着同一语言没有类型3(常规)语法。

所以没有捷径。

但是,经验还有很多要说的。语言{ ancb2n | n > 0 }是无上下文(而不是常规),所有类似形式的语言也是如此。语法证明了它是无上下文的

L → c
L → a L b b

并且可以使用pumping lemma for regular languages证明它不常规的事实。 (链接的维基百科文章作为使用引理的一个例子,包含了一个易于适应的类似语言的证明。)

另一方面,需要三个相等计数({ ancnbn | n > 0 })的语言不是无上下文的(但是是上下文敏感的)。 (这与{ ancn+mbm | n > 0 }不同,后者无上下文。)

© www.soinside.com 2019 - 2024. All rights reserved.