求解T(n)= 4T(n / 2)+n²

时间:2013-03-03 12:30:45

标签: algorithm complexity-theory recurrence

我正在尝试使用替换方法解决重现问题。递归关系是:

  

T(n)= 4T(n / 2)+ n 2

我的猜测是T(n)是Θ(nlogn)(我确信它是因为主定理),并且为了找到上限,我使用归纳法。我试图证明这一点 T(n)< = cn 2 logn,但这不起作用。

我得到T(n)&lt; = cn 2 logn + n 2 。然后我试图表明,如果T(n)&lt; = c 1 n 2 logn-c 2 n 2 < / sup>,那么它也是O(n 2 logn),但这也没有用,我得到T(n)&lt; = c 1 n < SUP> 2 的log(n / 2)-c <子> 2 名词 2 + N 2 `。

如何解决此问题?

2 个答案:

答案 0 :(得分:6)

T(n) = 4T(n/2) + n2
     = n2 + 4[4T(n/4) + n²/4]
     = 2n2 + 16T(n/4) 
     = ... 
     = k⋅n2 + 4kT(n/2k) 
     = ...

2k到达n时,此过程停止 ⇒k = log2n
T(n) = O(n2logn)

答案 1 :(得分:4)

diagram of recursive calls

您可以用非递归形式重写等式

Non-recursive form of T(n)

你的递归方程非常简单:每次展开T(n / 2)时,只会出现一个新术语。因此,在非递归形式中,您将得到一系列二次项。你只需要表明A(n)是log(n)(我把它留给你作为一个简单的练习)。