算法复杂度指的是最坏情况下的复杂度。

4
我们有最好情况、平均情况和最坏情况下的时间复杂度。因此,当有人询问算法的复杂度时,他指的是什么?

我们需要更多的上下文。否则,这可能是其中任何一个。 - flight
1
正如quasiverse所说,可能是其中任何一个。所以如果有人问,就给他们全部。问题解决了 :P - user684934
1个回答

6

口语:通常是平均情况。这就是为什么人们说快速排序的时间复杂度为O(N log N),哈希表查找的时间复杂度为O(K)(K = 键大小)。它们的最坏情况分别为O(N^2)和O(K*N)。我建议要明确。

学术上:通常是最坏情况。然而,在学术界,人们通常更感兴趣的是证明给定问题的复杂性类别,而不是研究算法的复杂性。对于学者来说,算法可能只是一个方便的证明复杂性上限的工具,而不是实际的研究对象。

另一个需要注意的是,“平均情况”完全取决于输入分布。大多数人假设均匀分布,除非他们使用“现实世界”的短语,此时他们的输入是任何人的猜测。


Li和Vitanyi在《Kolmogorov复杂性及其应用简介》第4.4节中指出,“通用分布下任何算法的平均计算复杂度与最坏情况复杂度的数量级相同”。粗略地说,如果您的输入是由随机选择的计算机程序生成的,则存在令人担忧的大概率,即该程序将恰好生成大量最坏情况的输入。 - mcdowella
当生成“随机选择的计算机程序”时,必须指定分布,否则这样的分析是不可能的。 - Dietrich Epp
上述的“通用分布”具有精确的定义,尽管它对仅影响细节的变化非常强大。您可以通过在双引号中搜索该短语或访问http://oai.cwi.nl/oai/asset/1991/1991A.pdf来查看完整的论证。顺便说一下,我怀疑对于以真随机数源为基础运行的随机算法可能存在漏洞。 - mcdowella

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接