Answers:
实例最优性是算法的一个非常有趣的特性。可以泛化实例最优性的概念,并提出令人惊讶的有趣概念,其中包括最坏情况分析和平均情况分析。
尽管它不严格属于传统算法分析的范围,但它本身很有趣。Afshani-Barbay-Chan(FOCS '09)在一篇论文中讨论了一种几何算法,该思想认为算法性能不受输入顺序的影响(这与他们的特定问题有关)。
可以将其概括如下:对于每种算法,将输入划分为等效类,并认为算法性能是这些等效类中每一个的平均性能之上的某种集体统计量。
最坏情况分析只是将输入视为单个等效类,并计算最大运行时间。平均案例分析着眼于琐碎的对等类,它是包含所有输入的单个类。在Afshani-Barbay-Chan论文中,如果将输入划分为排列的类别(即,顺序不明显的性能),则它们的算法是最佳的。
尚不清楚这是否导致算法分析的新范式。 蒂姆·罗格加登(Tim Roughgarden)的课程提供了一些极具启发性的示例,并涵盖了各种分析算法的方法。
我还有另外两个清单,有些相似。
参数化分析使用一些有关在所谓的``参数''中测量的输入的附加信息,将运行时间表示为两个值而不是一个值的函数。以独立集问题为例。对于某些常量,一般情况下的最佳运行时间为。如果现在将图的树宽作为参数并用参数,则可以在时间内计算独立集。因此,如果树宽与图的总大小相比较小,则此参数化算法要快得多。1 < c < 2 k O (2 k n O (1 ))k n
输出敏感分析是一种应用于构造问题的技术,并且还在运行时表达式中考虑了输出大小。一个很好的例子是确定平面中一组线段的交点的问题。如果我没记错的话,您可以在时间内计算交点,其中是交点数。k
您可以将随机性添加到算法中,并将其与上述所有方法结合使用。然后,您将获得例如最坏情况下的预期运行时间(最坏情况,但在算法中所有可能的随机硬币翻转序列中取平均值)和最坏情况下的运行时间(再次出现最坏情况,但算法中随机硬币翻转的概率)。