是什么大O符号之间的差额O(n)
和小O符号o(n)
Answer 1:
˚F∈O(克)表示,基本上
对于至少一个选择一个常数k> 0,则可以找到一个常数,使得不等式0 <= F(X)<=千克(X)成立对于所有x>一个。
需要注意的是O(g)为所述一组指此条件成立的所有功能。
˚F∈O(克)表示,基本上
对于常数k> 0的每一次选择,可以找到一个常数,使得不等式0 <= F(X)<公斤(X)成立对于所有x>一个。
再次,注意O(g)为一组。
在BIG-O,你找到该不等式成立超出一些最小x特定的系数K,只需要。
在小-O,它必须有一个最小X之后,不等式成立,无论你如何让小K,只要不是负数或零。
这些都说明上限,虽然有点反直觉,小-O是强硬的声明。 有的f和g如果f∈O(克),比若f∈O(克)的生长速率之间的大得多的间隙。
视差的一个图示是这样:F∈O(f)为真,但˚F∈O(f)为假。 因此,大O可以读为“f∈O(克)指使得f的渐近增长不会高于克的”,而“F∈O(克)指使得f的渐近生长严格大于克的慢”。 这就像<=
与<
。
更具体地,如果g(x)的值是F(X)的值的常数倍,则f∈O(g)为真。 这就是为什么你可以用大O表示法工作时掉落的常量。
然而,适用于f∈O(克)是真实的,则g必须包括x的其式中的较高的功率 ,并因此f(x)和g(x)的之间的相对分离实际上必须变得更大为x变大。
要使用纯数学的实例(而不是指算法):
以下是大O真实的,但如果你使用的小邻不会是真实的:
- X 2∈O(X 2)
- X 2∈O(X 2 + x)的
- X 2∈O(200 * X 2)
以下是小邻真:
- ∈的X 2(X 3)
- ∈的X 2(X!)
- LN(x)的一个∈(x)的
请注意,如果f∈O(克),此蕴涵f∈O(克)。 例如X 2∈O(X 3),所以它也是事实,X 2∈O(X 3),(再次,认为的O为<=
和O作为<
)
Answer 2:
大-O是小邻为≤
是<
。 大澳是一个包容性的上限,而小o是一个严格的上限。
例如,函数f(n) = 3n
是:
- 在
O(n²)
o(n²)
和O(n)
- 不是在
O(lg n)
,o(lg n)
,或o(n)
类似地,编号1
是:
-
≤ 2
< 2
和≤ 1
- 不
≤ 0
< 0
或< 1
这里有一个表,显示的总体思路:
(注:该表是一个很好的指导,但其极限定义应该在的条款优越限制 。而不是正常的限制。例如, 3 + (n mod 2)
3和4永远之间振荡它在O(1)
尽管没有一个正常范围,因为它仍然有一个lim sup
:4)
我建议记忆怎么大O符号转换成渐近的比较。 在比较容易记住,但不灵活,因为你不能说这样的话N}÷(1)= P。
Answer 3:
我发现,当我不能在概念把握的东西,想为什么人会使用X有助于了解X.(不是说你还没有尝试过,我只是搭建了舞台。)
[东西你知道]分类算法的常用方法是通过运行,并通过引用的算法的大哦复杂,你可以得到一个很好的估计,其中一个是“更好” - 取其具有“最小”功能在哦! 即使是在现实世界中,O(N)比O(N²)“更好”,除非无聊的事情像超大规模的常数等。[/的东西,你知道]
比方说,有在O(N)运行一些算法。 不错,是吧? 但是,假设你(你聪明的人,你)想出了一个O(N / loglogloglogN)运行算法。 好极了! 它的速度更快! 但是你说一遍又一遍的感觉无聊的写作当你写你的论文。 所以,你写一次,你可以说“在本文中,我已经证明了算法X,以前在时间O(N)可计算的,其实是在O(N)不可计算的。”
因此,每个人都知道你的算法要快---多少还不清楚,但他们知道它的速度更快。 理论上。 :)