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