我对语言的识别存在问题。给定某种语言,例如 a n cb 2n ,n> 0 ,如何根据乔姆斯基快速确定属于哪种类型?
我的想法是确定生成它的语法,然后确定语言,但这是一个漫长的过程。我认为还有另一种方法可以用眼睛识别它, 不写语法或自动机。 有人能帮助我吗?
答案 0 :(得分: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 }
)的语言不是上下文(但是是上下文相关的)。 (这与<{1}}不同, 无上下文。)