为什么多项式时间称为“有效”?


50

为什么在计算机科学中将最多多项式的复杂度视为有效的?

对于任何实际应用(a)来说,复杂度为的算法比及时运行的算法(即要快得多,但是前者被认为效率低下,而后者是有效的。逻辑在哪里?nlognn80

(a)例如,假设宇宙中的原子数约为。1080


3
我不确定我是否同意你的前提。我认为大多数人会认为效率很低(尽管当然这也取决于常量和要解决的问题)。n80
sepp2k 2012年

16
对于任何我都会认为效率很低。您有一个不合理的渐近分析示例。(我知道)没有运行时的自然算法。但是,对于某些问题,存在一些运行时间为自然算法,而复杂性理论中的基本问题是是否存在针对此类问题的多项式算法。 c > 3 n 80 2 nncc>3n802n
2012年

5
我认为这个问题不应该被否决,因为人们不同意这个前提(假设这就是原因)。赞成票和反对票应该被认为是问题的质量的指标,而不是它们的内容(只要它们是话题性的)。
亚历克斯(Alex)10 Brink

8
@RanG。完整的引言是(重点是我的):Cobham的论点认为P是计算问题的一类,可以“有效地解决”或“易于解决”。在实践中,P中不存在的一些问题具有实用的解决方案,P中没有的一些问题具有实用的解决方案,但这是一个有用的经验法则。
2012年

6
在(理论CS的)文献中,“有效”一词是“多项式”的同义词。对于其他(更实际的)子字段,这可能有所不同。
Ran G.

Answers:


32

关于“效率”的另一个观点是,多项式时间使我们能够定义不依赖于机器模型的“效率”的概念。具体来说,有一种名为“有效的教堂-图灵论题”的“教堂-图灵论”的变体,它说在某种机器模型上以多项式时间运行的任何问题也将在另一个同样强大的机器模型上以多项式时间运行。

这对于一般的CT论文来说是一个较弱的陈述,并且被随机算法和量子算法都“违反了”,但是在能够通过改变聚类时间解决NP难题的意义上并没有被违反。机器型号。

最终,这就是为什么多项式时间成为理论CS中流行的概念的原因。但是,大多数人意识到这并不反映“实践效率”。有关更多信息,Dick Lipton在“ 银河算法 ” 上的帖子是一本好书。


15
选择P的第二个实用的原因是,它在具有常数的加法,乘法和乘幂运算下是封闭的。组合算法/机器时很方便;如果构件是有效的,那么结果也是。
拉斐尔

我很好奇,有人知道实践中是否曾经使用过“银河算法”这个词吗?
Juan Bermejo Vega 2012年

这个词还不算老。但我已经开始使用它了:)
Suresh 2012年

24

从理论上讲,我们关心渐近行为,并根据渐近行为描述问题和算法的类别。这里的关键字是渐近的。渐近地,比快,即从(顺便说一句:septillion!)开始,假设单位常数系数,并且不低订单条款。O n log nn > 1208925819614629174706176O(n80)O(nlogn)n>1208925819614629174706176

然而,实际上,要注意指数和常数系数。实际上,输入大小不能增长到数十亿,因此,是的,会比更好。在实践中,其他因素也很重要:并行性,内存访问模式(例如局部性)。 n 80nlognn80

例如,大多数用于整数乘法的库(例如GMP)将实现算法的混合,并根据输入大小选择劣等算法,但根据输入大小选择实际上优等的算法,尽管这些算法可能渐近劣等。在某些输入大小上,某些渐近“劣等”算法会更快,并且会在最佳算法上进行选择。

另一个示例是已知最快的矩阵乘法算法,它是在运行的Coppersmith-Winograd算法(最近有改进,请此处)。但是,它从未实现过,因为(1)很难(2)常数系数巨大。所有线性代数包都使用不太理想的StrassenO(n2.3737)

TL; DR理论关注渐近行为,以便在输入大小的限制达到任意大数时比较算法。


他们“选择劣等算法”?您不是说“选择高级算法”吗?
位掩码

另一个很好的例子是插入排序与快速排序。插入排序为而快速排序为。但是,对于少量输入(例如10个项目),插入排序的速度大约是快速排序的两倍!实际上,优化的快速排序对小型数组使用插入排序。O n l g n Θ(N2)O(nlgn)
罗伯特·S·巴恩斯

为什么我们不将渐近三次算法视为“坏”而将渐进二次算法视为“好”呢?这个答案引出了问题。
djechlin

2

该答案将着眼于您问题的“大局”。计算机科学实际上是一门相对年轻且开放的科学,它对某些基本问题和根本问题还没有很好甚至很好的答案。基本的问题:“什么是有效地计算”要么准确大致在CS形式化(根据意见),而著名的P VS NP问题(或密切相关的P VS Exptime问题),其仍然开放后超过四个十年最初是由Cook / Levin于1970年提出的,后来由世界上最伟大的计算机科学家进行了艰苦的工作(许多数学家也对该问题感兴趣,因为它们是基本问题)。

因此,换句话说,即使将“效率” 粗略地定义为P时间,并且是价值最高的科学奖励之一,即10年来与该问题相关的100万美元奖励,计算机科学甚至无法证明某些问题(接近此边界)必须具有或不能具有有效的(Ptime)算法。因此“高效”更精确的小于P时间的精确定义不是必要的或甚至可能在这个时候。如果/当以一种或另一种方式解决P对NP猜想时,“效率”的更严格定义可能或大概将是可能的。

而且,人们可能会觉得Ptime对“效率”的定义甚至可能有点“草率”,大多数计算机科学家可能会同意,而且几乎所有人都认为P对NP猜想对于解决,他们甚至可能认为这种主张或观察微不足道。。。换句话说,这是一项正在进行的工作/我们正在努力。(实际上,主流计算机科学家甚至只是半开玩笑地走到现在为止,经常将差距和缺乏进展/确定性的间隔称为尴尬。)

实际上,甚至有一个与P对NP 密切相关/ 远比P对NP 更强的猜想,即NP对P / poly,目前计算机科学也无法解决。它猜想NP时间问题不能通过任何 “ P大小”电路来解决,即甚至不限于可以由算法/图灵机创建的电路。

至于P vs NP的难度,有充分的理由认为它至少可以与数学上非常古老的Riemann猜想(现在是1.5 世纪一样困难,因为两者都获得了相同的100万美元奖金。十年,至今尚未解决。

因此,换句话说,精确定义哪些算法真正“有效”实际上是理论科学和数学中最重要和最困难的现有开放问题之一

实际上,“有效地计算什么”的问题实际上甚至更加微妙,因为存在Church-Turing命题的一种变体,称为P-time CT命题,而且量子计算是否确实违反了它,这一点尚不清楚。鉴于Shor在P-time QM方面取得的突破性结果,保理被认为是本研究中的重大转折。换句话说,有效计算的问题实际上似乎可以归结为深层物理学原理,并且与量子计算是否可以比传统计算更有效地计算有关,这也是理论CS和高级物理学中普遍存在的问题。

因此,人们甚至可以补充说,P与NP以及有效计算的问题对于CS以及数学之外的物理学可能都至关重要。

[1] P与NP问题,维基百科

[2] 千年奖金问题

[3] P / Poly类,维基百科

[4] Shor算法


更正:P vs Pspace,而不是P vs ExpTime
vzn 2012年

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.