Θ(n)和O(n)之间的区别是什么?
有时候我会看到带有奇怪的Θ符号的Θ(n),它的中间有一些东西,有时候只是O(n)。 这只是懒惰的打字,因为没有人知道如何输入这个符号,或者它意味着什么不同?
简短的解释:
如果一个算法的Θ(g(n)),这意味着作为n(输入大小)的算法运行时间变大,与g(n)成正比。
如果算法是O(g(n)),则意味着算法的运行时间为n变大,最多与g(n)成比例。
通常,即使人们谈论O(g(n)),他们实际上意味着Θ(g(n)),但从技术上讲,这是有区别的。
更具体地说:
O(n)表示上限。 Θ(n)表示紧密结合。 Ω(n)代表下限。
如果f(x)= O(g(x))且f(x)=Ω(g(x)),则f(x)=Θ(g
基本上当我们说一个算法是O(n)时,它也是O(n2),O(n1000000),O(2n),...但是一个Θ(n)算法不是 Θ(n2)。
事实上,由于f(n)=Θ(g(n))意味着对于足够大的n值,对于c1和c2的某些值,f(n)可以在c1g(n)和c2g f的生长速率是渐近等于克:克可以是一个下限和和上界的F。 这直接暗示f也可以是g的下界和上界。 所以,
f(x)=Θ(g(x))iff g(x)=Θ(f(x))
同样,为了显示f(n)=Θ(g(n)),它足以表明g是f的上界(即f(n)= O(g(n))),f是下界g(即f(n)=Ω(g(n)),这与g(n)= O(f(n))完全相同)。 简洁,
如果f(x)= O(g(x))且g(x)= O(f(x)),则f(x)=Θ(g
还有一些小欧姆和小欧米茄( ω
)符号表示函数的宽松上限和下限。
总结:
f(x) = O(g(x))
(big-oh)意味着f(x)
的增长率渐近地小于或等于g(x)
的增长率。
f(x) = Ω(g(x))
(big-omega)意味着f(x)
的增长率渐近地大于或等于g(x)
的增长率,
f(x) = o(g(x))
(little-oh)意味着f(x)
的增长率渐近地小于g(x)
的增长率。
f(x) = ω(g(x))
(little-omega)意味着f(x)
的增长率渐近地大于g(x)
的增长率,
f(x) = Θ(g(x))
θ表示f(x)
的增长率渐近地等于g(x)
的增长率,
有关更详细的讨论,您可以阅读维基百科上的定义,或参阅Cormen等人的“算法导论”等经典教科书。
有一个简单的方法(我猜)是要记住哪个符号意味着什么。
所有的大O符号可以被认为有一个酒吧。
当看一个Ω时,该条在底部,所以它是(渐近的)下限。
当看Θ时,酒吧显然在中间。 所以这是一个(渐近的)紧密的界限。
当手写O时,你通常会在顶部完成,并画出一条曲线。 因此O(n)是函数的上界。 公平地说,这个不适用于大多数字体,但它是名称的最初理由。
一个是大“O”
一个是Big Theta
http://en.wikipedia.org/wiki/Big_O_notation
大O意味着你的算法将在不超过给定表达式(n ^ 2)的情况下执行,
大欧米茄意味着你的算法将以比给定表达式(n ^ 2)更少的步骤执行,
当两个条件对于相同的表达式都成立时,您可以使用big theta符号....
链接地址: http://www.djcxy.com/p/6791.html