了解Big-Ω(Big-Omega)表示法

时间:2015-06-22 14:57:34

标签: algorithm big-o

我正在阅读对数和算法运行时间的增长率。

然而,我有理解Big-Ω(Big-Omega)符号的问题。

我知道我们将它用于'渐近下界',并且我们可以表达算法至少需要一定时间的想法。

考虑这个例子:

var a = [1,2,3,4,5,6,7,8,9,10];

有人选择了一个号码。我编写了一个程序,尝试使用线性搜索猜测这个数字(1,2,3,4 ...直到它猜出数字)。

我可以说算法的运行时间是其输入大小的函数,所以这些都是真的(n是数组中元素的数量) :

  1. Θ(n)(Big-Theta表示法 - 渐近紧束缚)
  2. O(n)(Big-O表示法 - 上限)
  3. 当谈到Big-Ω时,根据我的理解,算法的运行时间将是Ω(1),因为它是找到所选数字所需的最少量的猜测(例如,如果玩家选择1(数组中的第一项))。

    我认为这是因为这是我在KhanAcademy找到的定义:

      

    有时,我们想说算法至少需要   时间量,没有提供上限。我们使用大Ω   符号;那是希腊字母“omega。”

    我说这个算法的运行时间是Ω(1)吗?也是真的,它是Ω(n),如果是 - 为什么?

1 个答案:

答案 0 :(得分:2)

Big O,Theta或Omega符号都是指解决方案如何随着问题的大小渐近无穷大而渐近扩展,但是,它们应该以您正在测量的内容为前提。

通常当谈到大O(n)时,通常意味着最坏情况复杂度是O(n),但是,有时会看到它用于典型的运行时间< / em>,特别是对于具有随机性元素或根本没有严格保证收敛的启发式算法或算法。

所以在这里,我们可能正在谈论最坏情况的复杂性,即Theta(n),因为它是Theta(n),它也是O(n)和Omega(n)。

一种证明下界的方法,当它的未知是X是这个算法最简单的情况时,这里最好的情况是O(1),所以我们可以说算法至少需要Omega(1) )并且最多O(n),并且Theta是未知的,这是正确的用法,但目的是获得仍然为真的Omega的最高可能界限,以及仍然是O(n)的最低可能界限真正。这里Omega(n)是显而易见的,所以说Omega(n)比Omega(1)更好,就像O(n)而不是O(n ^ 2)更好。