我如何检查大 O 的复杂性函数

How do i check the big O for complexity function

我有这个:

a) f(n) = n
b) f(n) = 1045n
c) f(n) = n2 + 70
d) f(n) = 7n + 3
e) f(n) = Cn + D (where C and D are both constants)
f) f(n) = 8
g) f(n) = n3 + n + 1
h) f(n) = 4n + 2log n + 5

我想看看它们的大O表示法是不是O(n)。

如何判断?

以及如何找到以下函数的大 O 表示法:

a) f(n) = 3n3 + n
b) f(n) = 3 log n + 5n
c) f(n) = 3n2 + 5n + 4
d) f(n) = 3n3 + n2 + 5n + 99 

一般来说,函数的大O表示法是以出现的n的最大次方来衡量的。在您的情况下,这将是 n²,因为唯一的其他因素是 70,它是常数。

编辑:原始 post 仅包含函数 f(n) = n² + 70。

f(x) is O(g(x)) if there exists a constant c such that f(x) < c*g(x)

你应该看看你的函数中的 "biggest" 渐近因子(最高指数或类似的东西),那将是你的大 O

示例:f(n) = 2^n + n^5 + n^2 + n*log(n) + n
这个函数有 5 个影响大 O 的不同因素,从大到小排序,所以这个是 O(2^n)。删除 2^n,现在 f(n)O(n^5)

常数是 O(1)。

希望我解释得很好

参见this answer

简而言之,没有固定的方法来确定 Big O 结果。严格来说,任何最终(对于某些 n)总是比你的函数更大的函数,都是它的大 O。在实践中,您正在寻找尽可能紧的界限。如果函数的唯一分量是 n 中的多项式,那么大 O 将只是出现的 n 的最大幂(或者更确切地说,n 的那个幂)。另一个需要知道的有用的事情是 log n 的阶数低于 n(但高于常量)。