大O和小O符号之间的区别(Difference between Big-O and Little-O

2019-06-21 08:49发布

是什么大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)不可计算的。”

因此,每个人都知道你的算法要快---多少还不清楚,但他们知道它的速度更快。 理论上。 :)



文章来源: Difference between Big-O and Little-O Notation