簡體   English   中英

用迭代方法求解 T(n)=4T(n/2)+n

[英]Solving T(n)=4T(n/2)+n with iterative methode

我正在嘗試使用迭代方法解決重復問題。 我知道解決方案應該是 θ(n^2) 但我無法用迭代方法解決它。

這是我走了多遠:

  1. T(n) = 4T(n/2)+n
  2. T(n) = 4(4T(n/4)+n/2)+n
  3. T(n) = 4(4(4T(n/8)+n/4)+n/2)+n

4^{i}*T(\frac{n}{2^{i}})+ \sum ?

我不知道如何計算總和。 我希望有一個人可以幫助我。

提前致謝!

讓我們定義k使得2^k = n^代表提高權力)。 所以我們有

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

作為

T(2^k) = 2^2 * T(2^(k-1)) + 2^k

讓我們放松一下:

T(2^k) = 2^2 * T(2^(k-1)) + 2^k =
       = 2^4 * T(2^(k - 2)) + 2^(k + 1) + 2^k =
       = 2^6 * T(2^(k - 3)) + 2^(k + 2) + 2^(k + 1) + 2^k =
       = 2^8 * T(2^(k - 4)) + 2^(k + 3) + 2^(k + 2) + 2^(k + 1) + 2^k = 
         ...
       = T(0) * (2^(2 * k) + ... + 2^(k + 2) + 2^(k + 1) + 2^k) =
       = T(0) * (2^k * (2^k + 2^(k - 1) + ... + 4 + 2 + 1)) = 
       = T(0) * (2^k * (2 * 2^k - 1))  

k回到n的時間; 因為我們有2^k = n

T(n) = T(0) * n * (2 * n - 1)

有了T(n)的近似公式,我們可以輕松計算θ

    θ(T(0) * n * (2 * n - 1)) = 
  = T(0) * θ(n * (2 * n - 1)) =
  = 2 * T(0) * θ(n^2) =
  = θ(n^2)

您可以通過與您所做的相同的方式輕松地對其進行近似:

T(n) = 4T(n/2)+n                  
T(n) = 4(4T(n/4)+n/2)+n         =  4^2 T(n/4)     + 2n + n
T(n) = 4(4(4T(n/8)+n/4)+n/2)+n  =  4^3 T(n/8)     + 4n + 2n + n
                                  |--first part--|--second part--|

起初,由於每次迭代減半,所以這個迭代發生在最大的log(n)輪次。

現在對於第一部分,在第i輪之后是4^i ,所以它將來自O(4^log(n)) = O(n^2)

對於第二部分,它是一個幾何系列n+2n+4n+8n....+n*2^i=n*(2^(i+1)-1) 因此,它的log(n)輪次攤銷時間將為O(n*2^log(n))=O(n^2)

由於這兩個部分都是O(n^2)並且它們相加,所以總的攤銷時間也是O(n^2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM