比较两个函数的增长率。 (棘手)

时间:2017-03-12 18:49:17

标签: algorithm

我需要比较以下功能的增长率:

f(n)= 2 ^ n且g(n)= n ^ log(n)(当n接近正无穷大时)。

这甚至可能吗?

2 个答案:

答案 0 :(得分:2)

n = 2^k。我们有:

2^n = 2^(2^k)
n^log(n) = (2^k)^log(2^k) = (2^k)^(k log 2)
         = 2^(k^2 log 2)

现在将2^kk^2 log 2进行比较。这是一个基本比较:2^k对于所有足够大的k来说都更大。

答案 1 :(得分:0)

log(基数2)用于这两个函数,我们得到log(f(n)) = n log(g(n)) = (log(n))^2

现在,(log(n))^2 = o(n)log是一个单调递增的函数,我们有

g(n) = o(f(n)),即f(n)n的大值增长更快。

以下是另一种更严格证明这一点的方法:

L = lim{n->inf} g(n) / f(n) = lim{n->inf} n^(log(n))/2^n

因此log (L) = lim{n->inf} log^2(n) - n

  ` = lim{n->inf} n*(log^2(n)/n) - 1)`

  ` = lim{n->inf} (n) * lim{n->inf} (log^2(n)/n) - 1)`

  ` = lim{n->inf} (n) * (0-1)`

  ` = lim{n->inf} (-n) = -inf`

=> L = 2^(-inf) = 0

根据o(n)的替代定义(小o,请参阅此处:https://en.wikipedia.org/wiki/Big_O_notation),

L = lim{n->inf} g(n) / f(n) = 0

=> g(n) = o(f(n))

以下是比较原始和对数比例f(n)g(n)增长的数据:

enter image description here enter image description here