我正在学习计算机科学课程的chomsky hiearchy。我的教授已多次提到lrk语法,但他们没有在书中教过。根据我的理解,它们是确定性上下文无关语法的子集,可生成明确的语言。但它们与确定性CFG有何不同?
以下是我们在课堂上使用识别相关语法的设备进行的Chomsky层次结构:
recursively enumerable - all turing machines
recursive - deciders/TMs that halt on every input
context sensitive - Linear-bounded non-deterministic Turing machine
context free - nondeterministic PDA
deterministic context free - deterministic PDA
LRK grammar - deterministic PDA
regular - DFAs/NFAs
另请注意(如果这个问题应该单独发布,请在评论中告诉我) - 线性限制的非确定性图灵机与决策者有何不同?
答案 0 :(得分:1)
这里棘手的是,存在两个相互关联但并不完全相同的并行层次结构。有LR(k)语法,它们是具有某些属性的语法类别。我们知道
LR(0)⊊LR(1)⊊LR(2)⊊...
也就是说,随着k的增加,LR(k)类将包含越来越多的语法。
独立地有LR(k)语言,这些语言对于某些k选择都存在LR(k)语法。 Don Knuth有一个很酷的定理,它表明一种语言在且仅当具有LR(1)语法时,它对于某k具有LR(k)语法。因此,从这个意义上讲,LR(k)语言是“您可以为其编写LR(1)语法的语言。”
然后是确定性上下文无关语言(DCFL),您可以为其构建确定性PDA的语言。众所周知,DCFL与LR(k)语言完全相同-也就是说,当且仅当它具有LR(1)语法时,该语言才是确定性CFL。
那么这对于语言层次结构意味着什么?从最不强大/最严格的限制到最强大/最不严格的限制,看起来像这样: