我需要找出以下O(n)
:
f(n) = 10n^2 + 10n + 20
我所能想到的只是50
,而且我太尴尬了,不知道我是怎么想出来的。
有人可以解释一下这意味着什么,以及我应该如何计算上面的f(n)
?
答案 0 :(得分:5)
Big-O表示法与复杂性分析有关。函数为O(g(n))
if(对于除n
个值之外的所有值),它由g(n)
的某个常数倍上限,因为n
趋于无穷大。更正式地说:
f(n)
位于O(g(n))
中,如果存在常量n0
和c
,那么对于所有n >= n0
,f(n) <= c.g(n)
在这种情况下,f(n) = 10n^2 + 10n + 20
,f(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; -