Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Solving the recurrence T(n) = 2T(sqrt(n))

I would like to solve the following recurrence relation:

T(n) = 2T(√n);

I'm guessing that T(n) = O(log log n), but I'm not sure how to prove this. How would I show that this recurrence solves to O(log log n)?

like image 389
Tasneem Fathima Avatar asked Aug 07 '13 08:08

Tasneem Fathima


2 Answers

One idea would be to simplify the recurrence by introducing a new variable k such that 2k = n. Then, the recurrence relation works out to

T(2k) = 2T(2k/2)

If you then let S(k) = T(2k), you get the recurrence

S(k) = 2S(k / 2)

Note that this is equivalent to

S(k) = 2S(k / 2) + O(1)

Since 0 = O(1). Therefore, by the Master Theorem, we get that S(k) = Θ(k), since we have that a = 2, b = 2, and d = 0 and logb a > d.

Since S(k) = Θ(k) and S(k) = T(2k) = T(n), we get that T(n) = Θ(k). Since we picked 2k = n, this means that k = log n, so T(n) = Θ(log n). This means that your initial guess of O(log log n) is incorrect and that the runtime is only logarithmic, not doubly-logarithmic. If there was only one recursive call being made, though, you would be right that the runtime would be O(log log n).

Hope this helps!

like image 155
templatetypedef Avatar answered Sep 20 '22 20:09

templatetypedef


You can solve this easily by unrolling the recursion:

enter image description here

Now the recurrence will finish when T(1) = a and you can find the appropriate a. When a = 0 or 1 it does not make sense but when a=2 you will get:

enter image description here

Substituting the k into latest part of the first equation you will get the complexity of O(log(n)).

Check other similar recursions here:

  • T(n) = 2T(n^(1/2)) + log n
  • T(n) = T(n^(1/2)) + Θ(lg lg n)
  • T(n) = T(n^(1/2)) + 1
like image 35
Salvador Dali Avatar answered Sep 19 '22 20:09

Salvador Dali