【问题标题】:Solving the recurrence T(n) = T(sqrt(n))+a求解递归 T(n) = T(sqrt(n))+a
【发布时间】:2017-12-22 12:14:47
【问题描述】:
【问题讨论】:
标签:
algorithm
recurrence
master-theorem
【解决方案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^(2^k) 这样的术语,T(n) 的对应值只是 (k+1)a。
鉴于n = 2^(2^k) 和T(n) = (k+1)a,我们可以根据n 求解k 的第一个方程,然后代入第二个方程。我们得到了log log n = k 和T(n) = (1 + log log n)a,它具有你所追求的渐近界。
从技术上讲,要完成这个论点,我们必须注意 T(n) 是一个单调非递减函数,因此对于 n 的这个特定值序列,我们已经证明该函数以这种方式有界就足够了.一般来说,一个函数的行为方式可能会导致上述分析方法被愚弄,从而暗示一个不准确的界限。对于表现良好的函数,这通常不会发生。