簡體   English   中英

如何解決此遞歸關系:T(n)= 4 * T(sqrt(n))+ n

[英]How to solve this recurrence relation: T(n) = 4*T(sqrt(n)) + n

我知道如何使用主方法解決遞歸關系。 我也知道如何解決以下重復問題:

T(n)= sqrt(n)* T(sqrt(n))+ n

T(n)= 2 * T(sqrt(n))+ lg(n)

在以上兩個重復中,遞歸樹的每個級別上的工作量相同。 遞歸樹中總共有log log n個級別。

我在解決這一問題時遇到了麻煩:T(n)= 4 * T(sqrt(n))+ n

編輯:這里n是2的冪

假設n = 2 ^ k。 我們有T(2 ^ k)= 4 * T(2 ^(k / 2))+ 2 ^ k。 令S(k)= T(2 ^ k)。 我們有S(k)= 4S(k / 2)+ 2 ^ k。 通過使用Mater定理,我們得到S(k)= O(2 ^ k)。 由於S(k)= O(2 ^ k)並且S(k)= T(2 ^ k),因此T(2 ^ k)= O(2 ^ k)這意味着T(n)= O(n)。

我在解決這一問題時遇到了麻煩:T(n)= 4 * T(sqrt(n))+ n

編輯:這里n是2的冪

此編輯很重要。 因此,可以說遞歸在2處停止。

因此,現在的問題是遞歸樹的深度。 好吧,這是您可以在n變得足夠小(例如,小於2)之前取n的平方根的次數。 如果我們寫

n = 2 lg n

那么在每個遞歸調用中n都會取其平方根。 這等效於將上述指數減半,因此經過k次迭代,我們得到了

n 1 /(2 k = 2 lg n /(2 k

我們想在小於2時停止

2 lg n /(2 k = 2

lg n /(2 k )= 1

lg n = 2 k

lg lg n = k

因此,在平方根的所有迭代之后,遞歸停止。 來源

對於每次遞歸,我們將有4個新分支,分支的總數為4 ^(樹的深度),因此為4^(lg lg n)

編輯

在此處輸入圖片說明

資源

   T(n) = 4 T(sqrt(n)) + n
   4 [ 4 T(sqrt(sqrt(n) + n ] + n
   4^k * T(n^(1/2^k)) +kn because n is power of 2.
   4^k * T(2^(L/2^k)) +kn   [  Let n = 2^L , L= logn]
   4^k * T(2) +kn   [  Let L = 2^k,  k = logL = log log n]
   2^2k * c +kn
   L^2 * c + nloglogn 
   logn^2 * c + nloglogn
   = O(nloglogn)
T(n) = 4T(√n) + n 
suppose that (n = 2^m) . so we have :
T(2^m) = 4T(2^(m/2)) + (2^m)
now let name T(2^m) as S(m):
S(m) = 4S(m/2) + m . now with master Method we can solve this relation, and the answer is :
S(m) = Θ(m^2) 
now we step back to T(2^m):
T(2^m) = Θ((2^m)^2)
now we need m to solve our problem and we can get it from the second line and we have :
n = 2^m   =>   m=lgn 
and the problem solved .
T(n) = Θ((2^lgn)^2)
T(n) = Θ(n^2)

暫無
暫無

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

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