分析算法效率的两种方法是
- 在其运行时设置渐近上限,并且
- 运行它并收集实验数据。
我想知道在(1)和(2)之间是否存在明显差距。我的意思是,要么(a)实验数据表明渐近渐近,要么(b)有算法X和Y使得理论分析表明X比Y好得多,实验数据表明Y比Y好得多。 X。
由于实验通常会揭示平均情况下的行为,因此,我希望最有趣的答案涉及平均情况下的上限。但是,我不想排除谈论不同范围的可能有趣的答案,例如Noam关于Simplex的答案。
包括数据结构。请为每个答案输入一个算法/ ds。
分析算法效率的两种方法是
我想知道在(1)和(2)之间是否存在明显差距。我的意思是,要么(a)实验数据表明渐近渐近,要么(b)有算法X和Y使得理论分析表明X比Y好得多,实验数据表明Y比Y好得多。 X。
由于实验通常会揭示平均情况下的行为,因此,我希望最有趣的答案涉及平均情况下的上限。但是,我不想排除谈论不同范围的可能有趣的答案,例如Noam关于Simplex的答案。
包括数据结构。请为每个答案输入一个算法/ ds。
Answers:
最明显的例子当然是单纯形法,该方法在实践中运行很快,暗示了多重时间,但理论上花费了指数时间。丹·斯皮尔曼(Dan Spielman)在很大程度上解释了这个奥秘,从而获得了内凡林纳奖。
更一般而言,使用标准IP求解器可以很好地解决Integer编程的许多情况,例如,可以解决针对大型输入尝试的大多数发行版的组合拍卖-http: //www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf
Groebner基地。最坏情况下的运行时间是双指数的(变量数)。但是实际上,特别是对于结构良好的问题,F4和F5算法是有效的(即,很快终止)。找出关于平均运行时间或预期运行时间的正确猜想仍然是一个活跃的研究领域。据推测,它与潜在理想的牛顿多表位的体积有关。
图同构是这种现象的一个鲜为人知的例子。最著名的算法采用类似的时间,但图同构倾向于是可解的相当迅速在实践。
我不知道该问题的平均/平滑复杂性是否有正式的结果,但我记得读过一个存在的事实-也许其他人可以指出一个正式的结果。当然,有大量的实验证据和许多快速求解器。我也很好奇此属性是否扩展到GI完整家族的其他成员。
戴维·约翰逊(David Johnson)的理论与实验的近似比率之间的差异: 《旅行商问题:局部优化的案例研究》,DS约翰逊(DS Johnson)和LA McGeoch。在本文中,他们提供了无症状的实验证据(因为实验进行到N = 10,000,000!),无视理论上的无症状现象:乔恩·本特利(Jon Bentley)的“贪婪”或“多片段”算法(最坏情况下的近似比至少为logN / loglogN)击败了Nearest Insertion和Double MST,两者的最坏情况下的近似值为2。
直到最近还没有被很好地理解的另一个例子是劳埃德(Lloyd)的k-means算法的运行时间,从实用的角度出发,它的聚类算法已经超过50年了(从实际角度出发)。仅在最近的2009年(Vattani)证明,在最坏的情况下,劳埃德算法需要进行多次迭代,迭代次数与输入点的数量成指数关系。另一方面,同时进行的平滑分析(由Arthur,Manthey和Röglin进行的分析)证明,平滑的迭代次数只是多项式,这可以解释经验性能。
这个问题有一个小问题。实际上,分析算法有两种以上的方法,而一种被忽略的理论方法是预期运行时间,而不是最坏情况下的运行时间。实际上,这种平均案例行为与进行实验有关。这是一个非常简单的示例:假设您有一个算法,用于输入大小为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的最有效算法的运行时间大致相同,因为平均运行时间被保证为非常低。
事实证明,Damas-Milner类型推断已完成了指数时间,并且容易构造的情况下结果大小呈指数爆炸。但是,在大多数实际输入中,它以有效的线性方式运行。
从[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
TSP的Lin-Kernighan启发式算法(“有效的启发式推销员问题”,Operations Research 21:489–516,1973)在实践中非常成功,但仍缺乏平均情况或平滑分析来解释其性能。相比之下,Matthias Englert,HeikoRöglin和BertholdVöcking(即将出版的算法)对TSP的2选启发法进行了平滑分析。
在实践中,有很多非常快速和有效的分支定界算法,可以解决我们无法严格分析的各种NP难题:TSP,Steiner树,装箱等。