递归树法求解递归方程

时间:2019-10-22 14:23:15

标签: algorithm recursion tree recurrence

如何使用递归树解决递归关系-T(n)= 2T(n / 2)+ nlogn?

1 个答案:

答案 0 :(得分:1)

扩展后,我们将拥有:

T(n) = 2(2T(n/2^2) + n/2 log(n/2)) + nlog(n) = 2^2 T(n/2^2) + n log(n/2) + n log(n)
= 2^2(2T(n/2^3) + n/2^2 + log(n/2^2) 
= 2^3T(n/2^3) + nlog(n/2^2) + n log(n/2) + n log(n)

因此,通过归纳法,我们将得到:

T(n) = n ( log(n) + log(n/2) + log(n/2^2) + ... + log(n/2^log(n)))
= n log(n * n/2 * n/2^2 * ... * n/2^log(n))
= n log(n^log(n) / 2^(1 + 2 + ... + log(n)))
= n log(n^log(n) / 2^(log(n)*(log(n)+1)/2)
= n log((n^2 / 2^(log(n)+1)) ^ (log(n)/2))
= n (log(n)/2) log(n^2 / 2n) = Theta(n (log(n))^2)
相关问题