是否可以有效确定所有无上下文和常规语言?


12

我碰到了该图,该图表明无上下文和常规语言是有效问题(假设为)的(适当)子集。我完全理解有效的问题是所有可确定问题的子集,因为我们可以解决它们,但可能需要很长时间。P

为什么所有无上下文和常规语言都可以有效地确定?这是否意味着解决它们将不会花费很长的时间(我的意思是我们无需更多上下文即可知道)?

在此处输入图片说明


3
出于好奇,您在哪里找到这个数字?用上下文来解释可能会有所帮助,因为“有效”不是形式化的概念,不同的人可能会用它来表示不同的含义。
吉尔斯(Gilles)'所以

2
PP

@Raphael:在这种情况下,高效是一类可以在多项式时间内确定的语言。我将“可能花费很长时间”用于可解决的问题,而不是无法在有限的时间内找到解决方案的未解决的问题。
Gigili 2012年

说这的正确技术方法是确定w∈L,其中w是一个单词,L是一种语言是在P中。即/ aka “语言识别”
vzn 2015年

Answers:


15

O(n)

O(n3)

PEXPTIMEP


2
您可能要提到针对上下文无关语法的矩阵乘法算法,该算法具有更好的运行时间,并且该算法几乎可以在任何实用的上下文无关语法上非常有效地(线性地)工作:sciencedirect.com/science/article/pii / 030439759190180A
亚历克斯10

@AlextenBrink我不认为这个问题要求比“是否多项式”更精细的粒度。
拉斐尔

1
O(n)

1
实际上,对于常规语言,您甚至不需要明确地需要确定性自动机。通过以模仿电源集构造的方式跟踪所有状态,可以并行模拟所有计算。
Hendrik '01 Jan

1
@Dave:对于固定的固定语言,输入字符串的长度是线性的,就像这里给出的其他复杂性一样。
Hendrik'1 Jan

1

DC 回答时的细化/“精细打印” :可以使用CYK算法高效解析所有Chomsky Normal Form形式的CFL,并且可以将所有CFL转换为CNF。但是,根据某些算法,在最坏的情况下,将任意CFL 转换为CNF可能会占用指数空间。(我不知道有什么算法可以保证P时间转换,还有其他人吗?必须考虑所有边缘/最坏情况,例如不确定的CFL或模棱两可的情况。)Wikipedia在CNF部分说明了转换顺序

|G|222|G|

因此,似乎可能存在无法有效解析的CFL。大多数编程语言都可以有效地转换为CNF(或者可能大多数是在CNF或近CNF中定义的),因此在P中“典型”语言的CFL解析是“实际”的。在这种最坏情况下的复杂性方面可能有一些现代研究(但没有)在粗略搜索中找到有关它的最新论文)。例如,Greibach于1973年发表的较早的研究论文似乎也表明,最坏情况下的性能可能不受P的限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.