为什么函数的复杂度为f(n)= n ^ d,O(b ^ n),其中b> 1且d为正?

时间:2017-02-02 18:40:39

标签: algorithm complexity-theory

所以,我在我的离散数学书中遇到了这个问题,其中函数f(n) = n^d的复杂性是O(b^n),其中b>1d是正。但我似乎无法理解为什么。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

允许L = lim{n->inf} (n^d/b^n) => ln(L) = lim{n->inf} (d*ln(n) / (n*ln(b))) = (d/ln(b)) * lim{n->inf} (ln(n) / n) = (inf) / (inf) = (d/ln(b)) * lim{n->inf} (d/dn(ln(n)) / d/dn(n))(申请L-Hospital

      = (d/ln(b)) * lim{n->inf} (1/n) / (1) = (d/ln(b)) * 0 = 0 

(自b>1ln(b) > 0

=> L = exp(0) = 1 < inf

lim{n->inf} (n^d/b^n) < inf以来,我们可以在n^d=O(b^n)时说b>1(请参阅此O的替代定义:https://en.wikipedia.org/wiki/Big_O_notation)。

要点是exponential函数的增长速度比polynomials快。

答案 1 :(得分:0)

示例:&#xA; d = 2

&#xA;&#xA;

f(2)= 4,f(3)= 9,f(4)= 16 ...... 。

&#xA;&#xA;

for:&#xA; d = 3

&#xA;&#xA;

f(2)= 8,f(3 )= 21,f(4)= 64 ...&#xA;。&#xA;。&#xA;。

&#xA;&#xA;

所以只要n> 1 (你说的是b,但它是n)而d是正的&#xA;时间复杂度将是O(n ^ d)

&#xA;&#xA;

在这里你可以看到什么是功能的增长&#xA;

&#xA;

答案 2 :(得分:0)

我认为我设法找到了@Sandipan Dey的替代解决方案。由于b> 1和d> 0,b ^(1 / d)>因此,log b (1 / d) (n)&lt; ñ。 接下来是,

  => log n / log (b^(1/d)) < n
  => d*logn < d*n*log (b^(1/d))
  => log (n^d) < log (b^((1/d)*n*d)))
  => n^d <= b^n

证明n ^ d是O(b ^ n)。