我可以使用主定理轻松解决一些递归关系,但我想了解如何使用定理解决它们
EX:
T(n) = 5T(n/2) + O(n) T(1) =1
答案:O(n^{log_2(5)}
扩展,
T(n) = 5T(n/2) + cn = 5(5T(n/4) + c(n/2)) + cn =
..... = 5^i * T(n/(2^i)) + cn*(1 + (5/2) + (5/2)^2 +......+ (5/2)^i)
Now let i= log_2(n)
然后
5^(log_2(n)) * T(1) + cn*(1 + (5/2) + (5/2)^2 +......+ (5/2)^(log_2(n)))
在此之后我迷失了。如何获得与n^{log_2(5)
类似的内容?
更新: 使用几何级数之和的公式(Sum = a *(1-r ^ n)/(1-r))
我得到Sum = 1*(1-(5/2)^{log_2(n)})/(-3/2) = 2/3*c*(5^{log_2(n)} - n
5^{log_2(n)}
和n^{log_2(5)}
如何相关?
谢谢:D
答案 0 :(得分:0)
我没有检查你的剩余计算,但请注意
a^b = exp(b * ln(a))
和
log_b(a) = ln(a) / ln(b)
因此
5^{log_2(n)} = exp(log_2(n) * ln(5)) = exp(ln(n) / ln(2) * ln(5))
以及
n^{log_2(5)} = exp(ln(5) / ln(2) * ln(n))