大O图实际上意味着什么

时间:2015-05-12 06:48:21

标签: algorithm data-structures

关于big-0有很多解释,但我真的很困惑这一部分。

根据此功能中Big-O的定义

f (n) ≤ c ·g(n), for n ≥ n0

“ f (n) is big-Oh of g(n).”

但是,根据大O表示法对函数的描述通常只提供函数增长率的上限。

因此,例如,34是集合{ 5, 10, 34 }

的上限

enter image description here

因此,如果在该图中f(n)是如何O(g(n)),因为如果我得到g(n)函数的上界,则它的值将不同于此处针对n> = n0所提到的值。 。

1 个答案:

答案 0 :(得分:0)

超过n0,f(n)的增长速度不会快于g(n)。 f(n)作为n的函数的增长率最多为g(n)。

据说g(n)的增长率是f(n)增长率f(n)的上限,是g(n)的Big-O。

f(n)的最坏情况增长率最多为g(n),因为f(n)是g(n)的Big-O。

这就是要知道f(n)相对于另一个已知函数的增长有多大。

例如,如果f(n)= n ^ 2,并且g(n)是n ^ 3,则平凡f(n)是g(n)的Big-O,因为n ^ 2将永远不会比N R个3。

“c”用于数学证明 - 它只是一个线性缩放变量。我们不能只是四处走动,声称某些东西是大东西。如果我们为给定的g(n)选择n0和c,则该等式成立

  

f(n)≤c·g(n),n≥n0

然后我们可以证明真正的f(n)是g(n)的Big-O。

示例:

  

f(n)= n ^ 2;
  g(n)= n ^ 3;

我们可以选择n0 = 1,并且c = 1,这样

  

f(n)≤1·g(n),n≥1

成为

  

n ^2≤1·n ^ 3,n≥1

总是成立,因此f(n)被证明是g(n)的Big-O。

证明可能会变得更复杂,例如this,但这是它的要点。