このアルゴリズムから再帰方程式を見つける必要があります。
ALGO(n)
if n <= 2 then return(0)
else
y = ALGO(n/3)
i = 2^n
while i >= 2 do
j = (1/2) * log(i) //base 2
while j > 0 do
i = i/2
j = j - 1
z = ALGO(n/2)
return(z+y)
私はそれについて推論し、n<=2 の場合、T(n) = O(1) と結論付けました
内側の while は O(n) (反復ごとに j が 1 ずつ減少) であり、外側の while は O(logn) (反復ごとに i が半分になる) であり、O(n*log( n)):
T(n) = T(n/3) + T(n/2) + O(n*log(n)) n > 2の場合
これは良い議論ですか?