【问题标题】:Algorithm complexity and big O notation [duplicate]算法复杂性和大 O 表示法
【发布时间】:2017-09-28 07:01:38
【问题描述】:

我正在参加关于算法的在线课程,并且我进行了以下测验。我弄错了,我试图理解答案的原因。

以下哪个是 O(n^3)?

a) 11n + 151 gn + 100
b) 1/3 n^2
c) 25000 n^3
d) 以上所有。

正确答案是 (d) 以上所有。原因是 Big-O 表示法只提供了函数在 n 变大时增长率的上限。

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

【问题讨论】:

  • 如果某事物是 O(n ^ 2) 那么它也是 O(n ^ 3)。
  • 上限不一定是最严格的界限。
  • 没有“the”上限。有很多上限。 Big-O 表示法指定 an 上限。一个相关的表示法提供了最小上限,但它不是 Big-O 表示法。

标签: algorithm big-o complexity-theory


【解决方案1】:

原因是 正式,大 O 表示法是渐近的上限

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

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

欲了解更多信息,请参阅What is the difference between Θ(n) and O(n)?

【讨论】: