[英]Solving T(n)=4T(n/2)+n with iterative methode
我正在嘗試使用迭代方法解決重復問題。 我知道解決方案應該是 θ(n^2) 但我無法用迭代方法解決它。
這是我走了多遠:
我不知道如何計算總和。 我希望有一個人可以幫助我。
提前致謝!
讓我們定義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.