Big O vs Small omega

时间:2015-01-10 05:16:06

标签: complexity-theory

为什么ω(n)小于O(n)?

我知道什么是小欧米茄(例如,n = ω(log n)),但我不明白为什么ω(n)小于O(n)。

3 个答案:

答案 0 :(得分:3)

大哦'O'是上限,小欧米茄'ω'是下限。

O(g(n))= {f(n):存在正常数c和n0,使得0≤f(n)≤cg(n)对于所有n≥n0}

ω(g(n))= {f(n):对于所有常数c> 0,存在常数n0,使得0≤cg(n)<0。所有n≥n0}的f(n)。 另外:无穷大= lim f(n)/ g(n)

n∈O(n)和n∉ω(n)。 或者: n∈ω(log(n))和n∉O(log(n))

答案 1 :(得分:0)

算法复杂度具有数学定义。

如果fg是两个函数,f = O(g)如果您可以找到两个常量c(&gt; 0)和n,例如{{}每个f(x) < c * g(x)都有1}}。

对于x > n,情况正好相反:您可以找到常量,例如Ω

f(x) > c * g(x)如果每个f = Θ(g)有三个常量cdn,例如c * g(x) < f(x) < d * g(x)

然后,x > n表示你的函数占主导地位,O你的函数等同于另一个函数,Θ你的函数有一个下限。 因此,当您使用Ω时,您的近似值更适合您将函数“包裹”在两条边之间;而Θ仅设定最大值。同上O(最低)。

总结一下:

  • Ω:在最糟糕的情况下,您的算法的复杂度为O(n)
  • n:在最好的情况下,您的算法的复杂度为Ω(n)
  • n:在任何情况下,您的算法都具有Θ(n)
  • 的复杂性

总而言之,您的假设是错误的:它是n,而不是Θ。正如您所知,Ω n > log(n)具有巨大价值。然后,根据之前的定义,说出n是合乎逻辑的。

答案 2 :(得分:0)

我无法发表评论,所以首先让我说n≠Θ(log(n))。 Big Theta意味着对于一些正常数c1,c2和k,对于n大于k的所有值,c1 * log(n)≤n≤c2* log(n),这不是真的。当n接近无穷大时,无论log(n)的系数如何,它总是大于log(n)。

jesse34212说n =ω(log(n))是正确的。 n =ω(log(n))表示n≠θ(log(n))AND n =Ω(log(n))。换句话说,小的或小的欧米茄是松散的下限,而大欧米茄可能松散或紧张。

Big O表示法表示上限松散或紧张。例如,12n = O(n)(紧上限,因为它的精确度可以得到),12n = O(n ^ 2)(上限松散,因为你可以更精确)。

12n≠ω(n)因为n是12n上的紧束缚,ω仅适用于宽松边界。这就是12n =ω(log(n)),甚至12n =ω(1)的原因。我继续使用12n,但该常量的值不会影响相等。

从技术上讲,O(n)是渐近等于或慢于n的所有函数的集合,并且所属字符最合适,但大多数人使用“= O(n)”(而不是“∈O” (n)“)作为一种非正式的写作方式。