DCFL的歧义性是否为不可判定问题?两种矛盾表述该如何理解?

正如DCFL名称本身所示,输入处理的每个阶段都具备确定性,不存在选择路径的可能,因此每一个DCFL都至少对应一个无歧义文法。事实上,不存在无歧义文法的语言被称为固有歧义语言,固有歧义从Chomsky hierarchy的CFL层开始出现,DCFL不存在固有歧义的情况。
因此这篇文章指出所有DCFL都是无歧义的,但相关表格却表明DCFL的歧义性是不可判定的,请问为何会出现这种矛盾?
这两个结论描述的是完全不同的两个维度,不存在任何矛盾:
- 第一个结论是存在性判定:明确所有DCFL本身的属性,即只要某个语言是DCFL,就一定存在至少一个可以生成它的无歧义文法,DCFL不可能是固有歧义语言。
- 第二个结论是算法可判定性判定:指不存在通用的算法,能对任意输入的上下文无关文法,100%准确判定两个结果:1)该文法生成的语言是不是DCFL;2)该文法本身是不是无歧义的。
简单来说,我们知道所有DCFL都一定有对应的无歧义文法,但没办法靠通用算法快速判断任意一个给定文法是不是能生成DCFL、以及这个文法本身有没有歧义,二者描述的范畴完全不同,自然不存在冲突。
内容的提问来源于stack exchange,提问作者Lucifer The devil
相关产品推荐
相关产品推荐

