当某事物是Big O时,是否表示它正是Big O的结果?

时间:2018-11-10 15:56:17

标签: algorithm big-o

当我们说某个方法的时间复杂度为O(n^2)时,它的含义与10^2 = 100中的方法相同,或者意味着该方法的最大强度为 最接近的符号?我对如何理解Big O感到非常困惑。我还记得一个叫做上限的东西,这在最大程度上意味着什么?

2 个答案:

答案 0 :(得分:3)

If表示运行时间被N²限制在之上

更准确地说,T(N)

例如,2N²+ 4N + 6 = O(N²),因为对于所有N> 5,2N²+ 4N + 6 <3N²。

答案 1 :(得分:1)

说明

如果方法fO(g)内,而g是另一个函数,则意味着在某个点(存在某个n_0,这样对于所有{{1 }})函数n > n_0始终会为此点输出小于f的值。但是,g可以具有任意常数g。因此,k用于f(n) <= k * g(n)之上的所有n。因此,n_0可以先变大,然后再变小并保持变小。

我们说 ff 渐近界定。 渐近表示我们不关心g在开始时的行为。只有接近无限时它会做什么。因此,我们丢弃了f以下的所有输入。


插图

一个例子就是这样:

enter image description here

蓝色函数是n_0,带有一些常数k * g,红色函数是k。我们看到f首先较大,但是从f开始,它将始终小于x_0。因此k * g


定义

从数学上讲,这可以表示为

enter image description here

是Big-O的通常定义。从上面的解释中,定义应该很清楚。它说从某个f in O(g)开始,对于所有输入,函数n_0必须小于fk * g可以是常数。

两个图像均来自Wikipedia


示例

这里有几个例子可以使定义熟悉:

  • kn中(平常)
  • O(n)n中(平常)
  • O(n^2)位于5n中(从O(n^2)开始)
  • n_0 = 5位于25n^2中(接受O(n^2)或更高)
  • k = 25位于2n^2 + 4n + 6中(从O(n^2)开始,进入k = 3

注释

实际上,n_0 = 5是数学意义上的集合。它包含具有上述属性(由O(g)渐近限制)的所有函数。

因此,尽管有些作者写了g,但这实际上是错误的,应该是f = O(g)

还有其他类似的集合,仅在绑定方向上有所不同:

  • Big-O:小于等于 f in O(g)
  • Small-o: less <=
  • 欧米茄:更大等于 <
  • 小欧米茄:更大 >=
  • Theta:同时出现Big-O和Big-Omega(等于)。