最坏情况、大 o、大 theta 和大 omega

worst-case, big o, big theta and big omega

我无法理解这 3 种表示法在最坏情况下的差异。

大 o 的最坏情况 = 上限,永远不会 运行 更快。

big omega 的最坏情况 = 下限,在最坏情况下永远不会 运行 更快?

大 theta 的最坏情况 = 在下限和上限之间,在最坏情况下 运行 会在这些界限之间吗?

编辑:

抱歉不清楚。我不确定我对 big o 最坏情况、big omega 最坏情况和 big theta 最坏情况的理解是否正确。我在“=”后面写的是我认为的。

您概述的内容似乎大体上是正确的。一个重要的区别是 case 和 bound 之间的区别。

案例是 class 当前正在考虑的输入。您可以考虑 class 您的算法表现最差的输入,或您的算法表现最好的输入。

边界是一个函数,它说明算法使用的资源 - 通常是时间或 space - 如何随着输入的变化而变化。上限和下限是典型值。

您可以随意混合和匹配大小写和边界。

也许您想知道算法最坏情况的上限,这样您就可以知道在最坏的可能情况下缩放会是什么样子。这可以让您相信您的解决方案无论如何使用都能够很好地扩展

也许您想知道最坏情况的下限,以了解您的解决方案是否尽可能快 - 如果其缩放行为对于您要解决的问题是最佳的。例如,我们知道基于比较的整数排序是 Omega(n log n),没有任何额外的假设。如果你写一个排序程序,你是否达到了这个界限,或者你的方法是否更慢?

最佳案例分析当然也有其用途。您还可以通过对给定参数的输入进行一些分布来讨论平均情况分析,并找到相应的界限;一种类似的分析是摊销分析,其中您的“案例”实际上是一系列操作。