algorithm - 大 O 表示法是什么意思?

标签 algorithm big-o

<分区>

Possible Duplicate:
Plain English explanation of Big O

我需要找出以下的 O(n):

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

我能想到的只有 50,我实在不好意思说出我是怎么想到的。

谁能解释一下它的含义以及我应该如何为上面的 f(n) 计算它?

最佳答案

Big-O 表示法与复杂性分析有关。函数是 O(g(n))如果(除了一些 n 值之外的所有值)它的上限是 g(n) 的某个常数倍数作为n趋于无穷大。更正式地说:

f(n)O(g(n))当且仅当存在常量 n0c这样对于所有n >= n0 , f(n) <= c.g(n)

在这种情况下,f(n) = 10n^2 + 10n + 20 , 所以 f(n)O(n^2) , O(n^3) , O(n^4)等。最紧上限是 O(n^2) .

通俗地说,这意味着f(n)增长不比二次方差 n趋于无穷大。

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

最后,有一个 Big-Theta结合了两者的符号,即 iff f(n)O(g(n))f(n)Omega(g(n))然后 f(n)Theta(g(n)) .在这种情况下,f(n)Theta(n^2) :也就是说,它以 n 的二次方增长趋于无穷大。

--> 这一切的重点是 n变大时,线性 (10n) 和常量 (20) 项基本上变得无关紧要,因为函数值受二次项的影响更大。 <--

关于algorithm - 大 O 表示法是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073270/

相关文章:

java - 不同场景下的定时冒泡排序

algorithm - 实现通用ATM算法的有效方法是什么?

java - Big-O 表征问题 - java

c - 编程不同权重的随机分布

algorithm - 一次在 B 树中搜索多条记录

java - 在 log(n) 时间内获取排序数组中落在特定范围内的元素数量

algorithm - Fibonacci 堆上每个操作的最坏情况时间界限是多少?

algorithm - 使用深度优先搜索查找所有简单路径的复杂性?

java - Delaunay 对带孔的二维多边形进行三角剖分

algorithm - 具有常量的递归树 - T(n) = T(n/3) + T(2n/3) + cn