难以理解渐近符号

时间:2018-08-25 20:18:59

标签: algorithm math time-complexity asymptotic-complexity

据我所知和研究,

  

大-哦符号描述了算法时间复杂度的最坏情况。

     

Big-Omega 符号描述了算法时间复杂度的最佳情况。

     

大-Theta 符号描述了算法时间复杂度的平均情况。

     

Source

但是,最近几天,我看到了一个讨论,其中有些人告诉我们

  最糟糕的情况是“可原谅”的误解。 Θ最好是平淡的   错误。最好的Ω也是可以原谅的。但是它们仍然是误解。

     

big-O表示法可以表示任何复杂性。实际上可以   描述任何函数的渐近行为。

我还记得我在大学课程中学习了前者。我仍然是学生,如果我对他们的认识有误,请您能解释一下吗?

2 个答案:

答案 0 :(得分:2)

Bachmann-Landau表示法与算法的计算复杂度完全无关。通过巴赫曼(Bachmann)和朗道(Landau)于1894年发明这种表示法的时候,并不真正存在一种用于计算算法的计算机器的想法,这一点就已经很明显了。

Bachmann-Landau表示法将功能的增长率归为一组以大致相同速率增长的功能。 Bachmann-Landau符号没有说明这些功能的含义。它们只是功能。实际上,它们根本不需要任何意义。

它们的全部意思是这样:

  • f∈ο(g):f的增长慢于g
  • f∈Ο(g):f的增长速度远不及g
  • f∈Θ(g):f的增长速度与g一样快
  • f∈Ω(g):f的增长不会比g显着慢
  • f∈ω(g):f比g增长快

它没有说明f或g或它们的含义。

请注意,实际上有两个冲突的,不兼容的Ω定义;此处给出的一个对计算复杂性理论更有用。还要注意,这些只是非常广泛的直觉,如果有疑问,您应该查看一下定义。

如果需要,可以使用巴赫曼-兰道(Bachmann-Landau)表示法来描述作为时间函数的兔子种群的增长率,或者根据啤酒函数来描述人的腹部的增长率。

或者,您可以使用它来描述最佳情况下的步骤复杂度,最坏情况下的步骤复杂度,平均情况下的步骤复杂度,预期情况下的步骤复杂度,摊销的步骤复杂度,最佳情况下的时间复杂度,最坏情况下的时间复杂度,平均情况下的时间复杂度,预期情况下的时间复杂度,摊销时间复杂度,最佳情况下的空间复杂度,最坏情况下的空间复杂度,平均情况下的空间复杂度,预期情况下的空间复杂度或算法的摊余空间复杂性

答案 1 :(得分:1)

这些断言充其量是错误的,充其量是错误的。这是事实。

  • 算法的运行时间不是N的函数(因为N也取决于特定的数据集),因此您不能直接讨论其渐近复杂度。您只能说它介于最佳和最差情况之间。

  • 最坏情况,最佳情况和平均情况下的运行时间是N的函数,尽管平均情况取决于数据的概率分布,所以没有唯一定义。

那么渐近符号就是这样

  • O(f(N))表示上限,该上限可以严格,也可以不严格;

  • Ω(f(N))表示下界,该下界可以紧密或不紧密;

  • Θ(f(N))表示双边边界,即O(f(N))和Ω(f(N))的和;它很紧。

所以

  • 所有最坏情况,最好情况和平均情况下的复杂度都具有Θ界,因为它们是函数。在实践中,这个界限可能太难建立,我们对自己的O或Ω界限感到满意。

  • 为平均情况保留Θ边界是绝对不正确的。

示例:

快速排序的最坏情况是Θ(N²),其最佳和平均情况是Θ(N Log N)。因此,由于语言滥用,快速排序的运行时间为O(N²)和Ω(N Log N)。

插入排序的最坏情况,最好情况和平均情况都是三个Θ(N²)。

任何需要查看所有输入的算法都是最佳情况,平均情况和最坏情况Ω(N)(并且如果没有更多信息,我们将无法确定任何上限)。

众所周知,矩阵乘法在时间O(N³)中是可行的。但是我们仍然不知道该运算的Θ界,它是N²乘以缓慢增长的函数。因此,Ω(N²)是一个明显的下限,但不是很严格。 (最差,最佳和平均情况具有相同的复杂性。)


最佳/平均/最坏情况的持续时间明确,而一般情况在一定范围内(实际上是一个随机变量),这引起了一些混淆。另外,算法分析即使不是很棘手,也通常很乏味,我们使用的简化方法可能会导致界限松动。