对于哪种算法,理论分析与现实之间有很大的差距?


52

分析算法效率的两种方法是

  1. 在其运行时设置渐近上限,并且
  2. 运行它并收集实验数据。

我想知道在(1)和(2)之间是否存在明显差距。我的意思是,要么(a)实验数据表明渐近渐近,要么(b)有算法X和Y使得理论分析表明X比Y好得多,实验数据表明Y比Y好得多。 X。

由于实验通常会揭示平均情况下的行为,因此,我希望最有趣的答案涉及平均情况下的上限。但是,我不想排除谈论不同范围的可能有趣的答案,例如Noam关于Simplex的答案。

包括数据结构。请为每个答案输入一个算法/ ds。


如果您弄清楚您要说的是哪种上限,将会有所帮助。您是否仅在谈论最坏情况下的时间复杂性而众所周知的上限和下限之间存在明显差距的问题?或者,您是否还包括已知最坏情况下的时间复杂性的严格界限,但典型的运行时间明显更快的问题?考虑平滑的复杂性而不是最坏情况的复杂性可能更有趣。“典型”输入或随机输入的实验结果几乎不能证明病理输入的存在。
詹姆斯·金

在那种情况下,我认为应该分别提出两个问题:一个关于最坏情况复杂度与平均情况/平滑复杂度之间的差距,另一个关于理论平均情况/平滑度复杂度与实际实验结果之间的差距。编辑:当我写我的评论时,您进行了编辑:)
James King 2010年

Answers:


37

最明显的例子当然是单纯形法,该方法在实践中运行很快,暗示了多重时间,但理论上花费了指数时间。丹·斯皮尔曼(Dan Spielman)在很大程度上解释了这个奥秘,从而获得了内凡林纳奖。

更一般而言,使用标准IP求解器可以很好地解决Integer编程的许多情况,例如,可以解决针对大型输入尝试的大多数发行版的组合拍卖-http: //www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf


3
是否找到了一个明确的线性程序族,其单纯形花了指数时间?
选择于2010年

1
据我了解,有许多显式族需要指数时间(例如,Klee和Minty给出的第一句话:“单纯形算法有多好?”,1972年)。但是,枢纽规则的选择与这些结果有关。我想大多数有关这些结果的参考资料都可以在Spielman和Teng的论文(arxiv.org/abs/cs/0111050)中找到。
MRA 2010年

2
@Sid:是的。在克利-明蒂立方体:glossary.computing.society.informs.org/notes/Klee-Minty.pdf

本文中有一些特定的关键规则的下限cs.au.dk/~tdh/papers/random_edge.pdf
Igor Shinkar,2013年

26

Groebner基地。最坏情况下的运行时间是双指数的(变量数)。但是实际上,特别是对于结构良好的问题,F4和F5算法是有效的(即,很快终止)。找出关于平均运行时间或预期运行时间的正确猜想仍然是一个活跃的研究领域。据推测,它与潜在理想的牛顿多表位的体积有关。


平均值/期望值按什么分布?我认为即使定义预期的运行时间也很难解决代数问题……
Joshua Grochow 2010年

1
对于用F4和F5方法快速解决的情况,我不知道,但是构建具有许多变量和低度的SAT实例编码的多项式系统是很容易的。在这种情况下,我不知道该算法的性能优于DPLL / DPLL +。我真的很想了解更多关于这些事情的实验结果!
MassimoLauria 2010年

@Joshua:在这一点上,任何允许结果的分布……@Massimo:将问题X编码为Y的实例几乎从未击败过专门针对X的算法!但是GB和DPLL本质上是等效的,因此看到有效的区别会让我感到惊讶。
雅克·卡莱特

1
@Massimo:是的,GB计算是NP-Hard。取决于配方。实际上,大多数问题(完成,理想成员,代数封闭域与布尔值)都是PSPACE完整或更差的(EXPSPACE完整)。也就是说,预计GB计算比NP完全问题要困难得多(因此,即使在平均情况下,针对它们的任何算法(如F5)也很可能不会胜过DPLL)。
米奇

22

图同构是这种现象的一个鲜为人知的例子。最著名的算法采用类似的时间,但图同构倾向于是可解的相当迅速在实践。 Ø2ñØGñ

我不知道该问题的平均/平滑复杂性是否有正式的结果,但我记得读过一个存在的事实-也许其他人可以指出一个正式的结果。当然,有大量的实验证据和许多快速求解器。我也很好奇此属性是否扩展到GI完整家族的其他成员。


1
Ø2ñ日志ñ

2
哦! 也许您在考虑Babai-Kucera,它为GI提供了线性时间平均情况下的算法:doi.ieeecomputersociety.org/10.1109/SFCS.1979.8
Joshua Grochow 2010年

是的,Babai-Kucera是一个!感谢您的参考。
阿南德·库尔卡尼

20

戴维·约翰逊(David Johnson)的理论与实验的近似比率之间的差异: 《旅行商问题:局部优化的案例研究》,DS约翰逊(DS Johnson)和LA McGeoch。在本文中,他们提供了无症状的实验证据(因为实验进行到N = 10,000,000!),无视理论上的无症状现象:乔恩·本特利(Jon Bentley)的“贪婪”或“多片段”算法(最坏情况下的近似比至少为logN / loglogN)击败了Nearest Insertion和Double MST,两者的最坏情况下的近似值为2。


20

直到最近还没有被很好地理解的另一个例子是劳埃德(Lloyd)的k-means算法的运行时间,从实用的角度出发,它的聚类算法已经超过50年了(从实际角度出发)。仅在最近的2009年(Vattani)证明,在最坏的情况下,劳埃德算法需要进行多次迭代,迭代次数与输入点的数量成指数关系。另一方面,同时进行的平滑分析(由Arthur,Manthey和Röglin进行的分析)证明,平滑的迭代次数只是多项式,这可以解释经验性能。


10

展开树的动态最优性猜想的遍历,双端和拆分推论就是这种差距的例子。实验支持线性时间要求,但尚无已知证据。


3
塞思·佩蒂(Seth Pettie)证明了n个双端队列操作所花费的时间不超过O(n alpha *(n)),其中“ alpha *”是迭代的逆阿克曼函数,这是一个很小的差距。
jbapple

9

这个问题有一个小问题。实际上,分析算法有两种以上的方法,而一种被忽略的理论方法是预期运行时间,而不是最坏情况下的运行时间。实际上,这种平均案例行为与进行实验有关。这是一个非常简单的示例:假设您有一个算法,用于输入大小为n的输入,对于每个大小为n的可能输入,它花费的时间为n,但每个长度的特定输入需要花费2 ^ n的时间。听到最坏情况的运行时间是指数的,但平均情况为[(2 ^ n -1)n +(2 ^ n)1] /(2 ^ n)= n-(n-1)/ 2 ^ n限制为n。显然,两种类型的分析给出了截然不同的答案,但这是可以预期的,因为我们正在计算不同的数量。

通过多次运行该实验,即使我们花了最长的运行时间来进行采样,我们仍然仅对可能的输入空间的一小部分进行了采样,因此,如果硬实例很少,那么我们很可能会错过它们。

构造这样的问题相对容易:如果前n / 2位全为零,则解决用后n / 2位编码的3SAT实例。否则拒绝。随着n变大,在最坏的情况下,问题的运行时间与3SAT的最有效算法的运行时间大致相同,因为平均运行时间被保证为非常低。


我已经在上面回答了James King,我希望最有趣的答案是关于预期的运行时间。我将编辑问题以使其更明显。
Radu GRIGore 2010年

9

事实证明,Damas-Milner类型推断已完成了指数时间,并且容易构造的情况下结果大小呈指数爆炸。但是,在大多数实际输入中,它以有效的线性方式运行。


您对此结果有推荐的参考吗?我想了解更多。
Radu GRIGore 2010年

1
我自己还没有读过它,但是最常被引用的论文是Harry G. Mairson,“机器学习类型的可确定性在确定性的指数时间内是完整的”,第17届编程语言原理研讨会(1990)。
sclv 2010年

9

平面图中Steiner树的PTAS对epsilon有荒谬的依赖。但是,有一种实现在实践中显示出令人惊讶的良好性能。


8

从[1]开始,配对堆-实现堆,其中插入和合并具有O(log n)摊销的复杂度,但推测为O(1)。实际上,它们非常高效,尤其是对于合并用户。

我刚刚在阅读第二节时才发现它们。C. Okasaki的书“ Purely Functional Data Structures”的5.5版,所以我认为我应该分享有关它们的信息。

[1]弗雷德曼(Fredman,ML),塞奇威克(Sedgewick),里奇(Sleator),DD和塔里扬(Tarjan),1986年。配对堆:一种新形式的自我调节堆。Algorithmica 1,1(1986年1月),111-129。DOI = http://dx.doi.org/10.1007/BF01840439


自Okasaki以来取得了一些进步,现在(强制性)的配对堆具有O(0)混合,O(1)插入和findMin,O(lg lg n)reduceKey和O(lg n)deleteMin:arxiv。 org / abs / 0903.4130。该堆使用与Fredman等人的原始配对堆不同的配对机制。
jbapple

7

与ilyaraz关于分支和绑定的评论有关,Pataki等。表明分支定界加点阵基减少可以解决几乎所有的随机IP。


6

TSP的Lin-Kernighan启发式算法(“有效的启发式推销员问题”,Operations Research 21:489–516,1973)在实践中非常成功,但仍缺乏平均情况或平滑分析来解释其性能。相比之下,Matthias Englert,HeikoRöglin和BertholdVöcking(即将出版的算法)对TSP的2选启发法进行了平滑分析。


5

在实践中,有很多非常快速和有效的分支定界算法,可以解决我们无法严格分析的各种NP难题:TSP,Steiner树,装箱等。

Ωñ


您的意思是O(mn),还是我感到困惑?
Radu GRIGore 2010年

到目前为止最好的结合是ØñØGñ2/
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.