递归函数(Theta)的渐近时间复杂度

时间:2014-11-12 11:52:24

标签: recursion time big-o asymptotic-complexity big-theta

我被要求分析以下递归函数的渐近时间复杂度:

for-all k ≥ 1:
T(n) = n + T(n/2) + T(n/4) + T(n/8) + .... + T(n/2^k)

我能够证明:
T(n) = O(n⋅log n)T(n) = Ω(n)
但我正在寻找一个更严格的界限(Big Theta)。

1 个答案:

答案 0 :(得分:0)

首先:
我通过这种方式理解“ for-all k> = 1 ”:k = 1k = m其中2m-1 ≤ n ≤ 2m
基本上m = log₂(n)成立了。

看看我的计算:

T(n) = n + Σk=1,...,m T(n/2k)
     = n + T(n/2) + Σk=2,...,m T(n/2k)
     = n +  n/2 + 2⋅Σk=2,...,m T(n/2k)
     = ...
     = n + Σk=1,...,m k⋅n/2k
     = n + n⋅Σk=1,...,m k/2k
     = n + n⋅(2 - 2-mm - 21-m)
     ≤ n + 2⋅n
     = 3n

所以T(n)位于Θ(n)

注意:
您还可以通过积分Σk=1,...,m k/2k估算s(m) = ∫1m k/2k dk 此处limm → ∞s(m) = 2也有效。