1

マスターメソッドを使用して再帰関係を解決する方法を知っています。また、以下の再発を解決する方法も知っています。

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

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

上記の 2 つの繰り返しでは、再帰ツリーの各レベルで同じ量の作業が行われます。また、再帰ツリーには合計 n レベルのログ ログがあります。

これを解決するのに問題があります: T(n) = 4*T(sqrt(n)) + n

編集: ここで n は 2 の累乗です

4

4 に答える 4

5

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 Theorem を使用すると、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) を意味します。

于 2012-11-20T23:02:45.627 に答える
1

これを解決するのに問題があります: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

したがって、lg lg n回の平方ルート化の後、再帰は停止します。(ソース

再帰ごとに4つの新しいブランチがあり、ブランチの合計は4 ^(ツリーの深さ)です4^(lg lg n)

編集

ここに画像の説明を入力してください

ソース

于 2012-11-19T18:20:08.747 に答える
0
   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)
于 2016-03-01T02:54:44.830 に答える