求解递归T(n)= T(sqrt(n))+ a

时间:2017-12-22 12:14:47

标签: algorithm recurrence master-theorem

您好我试图用主定理解决以下等式:

T(n)= a;对于n <= 2

T(n)= T(√n)+ a;其他

当我发现类似的等式(Solving the recurrence T(n) = 2T(sqrt(n)))时,我想知道我的解决方案是否正确。我得到T(n)= O(log log n)。这对我上面的等式是否正确?

1 个答案:

答案 0 :(得分:1)

我们可以写下表格并寻找模式:

n        T(n)
-        ----
2        a
4        T(2)  + a = 2a
16       T(4)  + a = 3a
256      T(16) + a = 4a
...
2^(2^k)  (k+1)a

我们注意到2 = 2^(2^0)4 = 2^(2^1)16 = 2^(2^2)等等;通过从两个开始并反复平方,我们得到2^(2^k)之类的术语,T(n)的相应值只是(k+1)a

鉴于n = 2^(2^k)T(n) = (k+1)a,我们可以用k来解释n中的第一个等式,然后在第二个中进行替换。我们得到log log n = k所以T(n) = (1 + log log n)a,它具有您所追求的渐近约束。

从技术上讲,为了完成这个论点,我们必须注意T(n)是一个单调非递减函数,因此我们已经证明函数是以这种方式限制的,这个特定的值序列{ {1}}。通常,函数可能会以这样一种方式运行,即上述分析方法可能被欺骗,表明不准确的界限。对于性能良好的功能,通常不会发生这种情况。