大O符号是什么意思?

时间:2011-11-09 23:39:43

标签: algorithm big-o

  

可能重复:
  Plain English explanation of Big O

我需要找出以下O(n)

f(n) = 10n^2 + 10n + 20

我所能想到的只是50,而且我太尴尬了,不知道我是怎么想出来的。

有人可以解释一下这意味着什么,以及我应该如何计算上面的f(n)

1 个答案:

答案 0 :(得分:5)

Big-O表示法与复杂性分析有关。函数为O(g(n)) if(对于除n个值之外的所有值),它由g(n)的某个常数倍上限,因为n趋于无穷大。更正式地说:

f(n)位于O(g(n))中,如果存在常量n0c,那么对于所有n >= n0f(n) <= c.g(n)

在这种情况下,f(n) = 10n^2 + 10n + 20f(n)位于O(n^2)O(n^3)O(n^4)等。 tightest 上限是O(n^2)

用外行人的话来说,这意味着f(n)增长不会比平方更差,因为n趋于无穷大。

有一个相应的Big-Omega表示法,它可以用于类似方式的下界函数。在这种情况下,f(n)也是Omega(n^2):也就是说,由于n趋于无穷大,它的增长不会超过二次方。

最后,有Big-Theta符号将两者结合起来,即if f(n)位于O(g(n))f(n)位于Omega(g(n))然后{{1}在f(n)中。在这种情况下,Theta(g(n))位于f(n)中:也就是说,它会以Theta(n^2)趋于无穷大的方式完全呈二次方增长。

- &GT;所有这一切的要点是,当n变大时,线性(n)和常量(10n)项基本上变得无关紧要,因为函数的值受到的影响更大二次项。 &LT; -