算法复杂度和大 O 符号

Algorithm complexity and big O notation

我正在参加关于算法的在线 class,我有以下测验。我弄错了,正在尝试理解答案的原因。

Which of the following is O(n^3)?

a) 11n + 151 gn + 100
b) 1/3 n^2
c) 25000 n^3
d) All of the above.

正确答案是 (d) 以上所有。原因是当 n 变大时,Big-O 符号仅提供函数增长率的上限。

我不确定为什么答案不是 (c)。例如,(b) 的上限小于 n^3.

原因是形式上,大O符号是渐近的上限

所以 1/3*n^2O(n^2),但它也是 O(n^3),也是 O(2^n)

虽然在关于复杂性的日常转换中,O(...) 被用作严格的(上限和下限),theta 符号或 Θ(...) 是技术上正确的术语。

有关详细信息,请参阅 What is the difference between Θ(n) and O(n)?