【发布时间】:2016-04-04 22:39:55
【问题描述】:
我需要仅使用迭代方法来查找此递归的复杂性:
T(n) = 4T(n/2) + (n^2)*logn
我知道你可以使用master方法解决这个问题,复杂度是(n^2)(logn)^2,但是我尝试使用迭代方法解决它,我得到了别的东西:
T(n) = 4 * T(n/2) + (n^2) * log(n)
T(n/2) = 4 * T (n/4) + ((n/2)^2) * log(n/2)
T(n/4) = 4 * T(n/8) + ((n/4)^2) * log(n/4)
T(n) = 4 * (4 * (4 * T(n/8) + (n/4)^2 * log(n/4)) + (n/2)^2 * log(n/2)) + (n^2) * log(n)
T(n) = 64T(n/8) + 16((n/4)^2) * log(n/4) + 4((n/2)^2) * log(n/2) + (n^2)log(n)
T(n) = (4^i) * T(n/(2^i)) + 4^(i-1) * (n/(2^(i-1)))^2 * log(n/(2^(i-1)))
使用 i = logn 后,我发现该算法的复杂度为 2^n.. 这是不正确的。
【问题讨论】:
标签: algorithm math big-o recurrence