【问题标题】:Big O or Big Omega?大O还是大欧米茄?
【发布时间】:2016-01-26 04:55:47
【问题描述】:

这是我对 B 的 A 是 O 还是 Ω 的答案?你认为我猜对了吗?

A               B           O   Ω
(log n)^3       N           No  Yes
2n^2+4n         4n^2        Yes No
n!              2^n         No  Yes
n^5             n^4         No  Yes
100             10000       Yes No
n^2             (1.5)^n     No  Yes

【问题讨论】:

  • Big O 代表最差运行时间,而 Big Omega 代表最佳运行时间。
  • 我认为您对其中几个有误。你能证明哪些?
  • 我认为第一个应该是 Yes No 因为 log n 比 n 快。另外,最后一个应该是 Yes No 因为 n^2 比指数快
  • @TimBiegeleisen:你不应该这样说。对于给定函数,Big O 是一个上限,而Big Omega 是一个下限。此函数可以是算法的最佳/平均/最坏情况运行时间,但不一定如此。

标签: algorithm performance optimization big-o asymptotic-complexity


【解决方案1】:

Big O 是渐近上界,而 Big Omega 是渐近下界。

  • A = O(B) 当且仅当limit A(n)/B(n) < C as n 接近无穷大且 C 为正常数。
  • A = Ω(B) 当且仅当 limit A(n)/B(n) > C > 0 当 n 接近无穷大且 C 为正常数时。

您可以使用Wolframe Alpha 找到这样的限制。

A               B           O   Ω
(log n)^3       N           Yes  No
2n^2+4n         4n^2        Yes Yes
n!              2^n         No  Yes
n^5             n^4         No  Yes
100             10000       Yes Yes
n^2             (1.5)^n     Yes  No

例如:

【讨论】:

  • 大 O 和大 Theta 的定义不正确。 f(n) = (n 如果 n 是奇数,2n 如果 n 是偶数) 是 O(n),但是限制 f(n)/n 不存在。
  • @PaulHankin,但我们可以说,如果 n 变为奇数无穷大,则限制 f(n)/n = 1;如果 n 变为偶数无穷大,则限制 f(n)/n = 2。因此,当 n 趋于无穷时,限制 f(n)/n
  • @invisal 也许你打算使用“limsup”和“liminf”?
  • @PaulHankin,我认为定义是正确的。在“算法简介”中指出 O(g(n)) = {f(n):存在正常数 C 和 m,使得所有 n > m 的 0
  • 在具体数学中也使用 limit 来定义“波浪符号”,这样当 n 趋于无穷时,limit f(n)/g(n) = 1。
猜你喜欢
  • 2012-09-15
  • 2011-10-04
  • 2014-11-14
  • 1970-01-01
  • 2022-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多