【问题标题】:Big-O notation confusionBig-O 符号混淆
【发布时间】:2016-08-21 13:39:49
【问题描述】:

我在做这个问题时遇到了一些困难。问题是:按照从最慢到最快的增长顺序对以下函数进行排序:

7n^3 − 10n, 4n^2, n, n^8621909, 3n, 2^(log log n), n log n, 6n log n, n!, 1.1^n

我对这个问题的回答是

  1. n,3n
  2. nlogn, 6nlogn
  3. 4n^2(等于n^2)
  4. 7n^3 – 10n(等于n^3)
  5. n^ 8621909
  6. 2^loglogn
  7. 1.1^n(指数 2^0.1376n)
  8. 嗯!

只是想知道:我可以假设2^(loglogn)2^n 具有相同的增长吗?我应该将1.1^n 作为常量吗?

【问题讨论】:

  • 有点跑题了,但是……如果有投资每年给你 10%,你肯定会注意到 1.1^n 与常数有何不同!在 7.27 年内,您的初始投资将会翻倍!

标签: algorithm math big-o calculus


【解决方案1】:

只是想知道我可以假设 2^(loglogn) 的增长与 2^n?

没有。假设日志以 2 为底,那么 2^log(n) 在数学上等于 n,所以 2^(log(log(n)) = log(n)。当然,它的增长也不如2^n

我应该把 1.1^n 作为常数吗?

没有。 1.1^n 仍然是 n 不可忽略的指数 - 当然它不是常数。

正确的顺序是:

2^loglogn = log(n)
n,3n
nlogn, 6nlogn
4n^2
7n^3 – 10n
n^8621909
1.1^n
n!

我建议看看Formal definition of the Big-O notation。但是,为简单起见,列表顶部的速度比较低的函数慢到无穷大。
例如,如果您将其中两个函数放在图表上,您会看到一个函数最终会通过另一个函数,并且会更快地达到无穷大。

看看this 比较n^22^n。您会注意到 2^n 正在通过 n^2 并更快地达到无穷大。
您可能还想查看this page 中的图表。

【讨论】:

  • 我认为您系列中的最后三个可以使用一个解释(即为什么n^86219091.1^nn!按此顺序出现)。
  • "2^log(x) 在数学上等于n"。编号2^(log base 2 of x) 等于n。但是,O(2^log(x)) = x
  • @intboolstring 感谢此更正以使其准确。相应地编辑了我的答案。
【解决方案2】:
  1. 2log(x) = x,所以 2log(log(n)) = log( n),它的增长速度2n慢。

  2. 1.1n 绝对不是常数。 1.1n趋于无穷大,而常数显然不会。

【讨论】:

  • OP 需要将函数从增长最慢到最快排序。你能做到吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
相关资源
最近更新 更多