用替换法求解递推方程

时间:2014-05-04 11:42:54

标签: algorithm recursion complexity-theory recurrence

我试图通过绘制一个reccurence树解决T(n) = sqrt(n)*T(sqrt(n))+sqrt(n)并解决它是替换方法。但是我很难理解sqrt方法将如何影响这个过程,如果可能的话我正在寻找一些指针

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以将T(n) = sqrt(n)⋅T(sqrt(n)) + sqrt(n)写为

T(n) = n1/2 + n3/4 + n7/8 + ...

我们知道Σi=1,...,∞ 2-i = 1,所以你可以说

T(n) = n1/2 + n3/4 + n7/8 + ... < n + n + n + ...

现在你只需要通过求解n2-x < 2计算总和的长度,就可以获得类似x ≈ log log n的内容。

所以解决方案是T(n) = O(n ⋅ log log n)

抱歉,您正在寻找使用substitun方法的解决方案。我从来没有这样做,所以我在this site上阅读了一篇描述。

T(sqrt(n)) = k ⋅ sqrt(n) ⋅ log log sqrt(n) + O(sqrt(n))为常量k

T(n) = sqrt(n) ⋅ k ⋅ sqrt(n) ⋅ log log sqrt(n) + sqrt(n) + O(sqrt(n)) 
     = k ⋅ n ⋅ log (0.5 log n) + sqrt(n) + O(sqrt(n))
     = k ⋅ n ⋅ log log n + log 0.5 + sqrt(n) + O(sqrt(n))
     = k ⋅ n ⋅ log log n + O(sqrt(n))
     = O(n log log n)

我希望这会有所帮助。