除了最坏情况,平均情况等之外,还有其他类型的运行时间分析吗?


22

以下是分析算法运行时间的一些方法:

1)最坏情况分析:最坏情况下的运行时间。

2)平均情况分析:随机实例上的预期运行时间。

3)摊销分析:最坏实例序列的平均运行时间。

4)平滑分析:在最坏的随机扰动实例上的预期运行时间。

5)通用案例分析:运行时间在所有实例中只有一小部分是最差的。

我的问题:这是完整的清单吗?


2
我猜想这种清单永远不会详尽无遗。
伊藤刚(Tsuyoshi Ito)2010年

Answers:


8

实例最优性是算法的一个非常有趣的特性。可以泛化实例最优性的概念,并提出令人惊讶的有趣概念,其中包括最坏情况分析和平均情况分析。

尽管它不严格属于传统算法分析的范围,但它本身很有趣。Afshani-Barbay-Chan(FOC​​S '09)在一篇论文中讨论了一种几何算法,该思想认为算法性能不受输入顺序的影响(这与他们的特定问题有关)。

可以将其概括如下:对于每种算法,将输入划分为等效类,并认为算法性能是这些等效类中每一个的平均性能之上的某种集体统计量。

最坏情况分析只是将输入视为单个等效类,并计算最大运行时间。平均案例分析着眼于琐碎的对等类,它是包含所有输入的单个类。在Afshani-Barbay-Chan论文中,如果将输入划分为排列的类别(即,顺序不明显的性能),则它们的算法是最佳的。

尚不清楚这是否导致算法分析的新范式。 蒂姆·罗格加登(Tim Roughgarden)的课程提供了一些极具启发性的示例,并涵盖了各种分析算法的方法。


Ananth,非常感谢您与Tim的课程建立联系。那正是我一直在寻找的东西。
umar 2010年

14

我还有另外两个清单,有些相似。

  1. 参数化分析使用一些有关在所谓的``参数''中测量的输入的附加信息,将运行时间表示为两个值而不是一个值的函数。以独立集问题为例。对于某些常量,一般情况下的最佳运行时间为。如果现在将图的树宽作为参数并用参数,则可以在时间内计算独立集。因此,如果树宽与图的总大小相比较小,则此参数化算法要快得多。1 < c < 2 k O 2 k n O 1 k nØCññØ1个1个<C<2ķØ2ķñØ1个ķñ

  2. 输出敏感分析是一种应用于构造问题的技术,并且还在运行时表达式中考虑了输出大小。一个很好的例子是确定平面中一组线段的交点的问题。如果我没记错的话,您可以在时间内计算交点,其中是交点数。kØñ日志ñ+ķķ


8

Øñ日志ñ

看起来像多项式时间算法的参数化分析,并且输出敏感型分析似乎属于此类。


Serge,感谢您链接到Glencora的博客文章,并在其中发表了许多有趣的评论。
umar 2010年

7

还有“ 高概率 ”分析(针对随机算法),在这种情况下,对于任何给定的实例,您都会担心算法在大多数情况下的性能如何,但可能会完全放弃一小部分时间。这在学习理论中很常见。


4

您可以将随机性添加到算法中,并将其与上述所有方法结合使用。然后,您将获得例如最坏情况下的预期运行时间(最坏情况,但在算法中所有可能的随机硬币翻转序列中取平均值)和最坏情况下的运行时间(再次出现最坏情况,但算法中随机硬币翻转的概率)。


3

双射分析是比较两种算法的一种方法(Spyros Angelopoulos,Pascal Schweitzer:双射分析下的分页和列表更新。J. ACM 60,2013):粗略地说,如果长度为n,则算法A优于算法B。长度为n的输入的双射f,使得A在输入x上的表现至少与f(x)上的B一样好。



0

竞争性分析在Page替换算法中,一种方法通过减少页面丢失而使另一种方法超重。更少的页面丢失说明“更少的运行时间”。此外,竞争分析是一种比较两种方法的方法。很好的参考书是艾伦·鲍罗丁(Allan Borodin)的“在线计算和竞争分析”。

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.