今天看到了一个叫做 Akra-Bazzi method 的东西,感觉非常震惊。
对于一个递推式
T(x)=g(x)+∑i=1naiT(bix+hi(x))
其中 ai,bi 均为常数,且 ai>0,0<bi<1,存在常数 c 满足 g(x)=O(xc),hi(x)=O(x/log2x). 那么
T(x)=Θ(xp(1+∫1xg(u)/up+1 du))
其中 p 是 ∑i=1naibip=1 的解。
下面以这个帖的例 3 为例。
T(n)=3T(2n)+4T(4n)+n
首先求 p. 3(1/2)p+4(1/4)p=1,容易肉眼解得 p=2. 那么
T(x)=Θ(x2(1+∫1xu/up+1 du))=Θ(x2(1+1/x))=Θ(x2)
QED.
主要劣势就是计算量太大。