Time Complexity Analysis | Tower Of Hanoi (Recursion)

Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules:
1) Only one disk can be moved at a time.
2) Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack i.e. a disk can only be moved if it is the uppermost disk on a stack.
3) No disk may be placed on top of a smaller disk.

Pseudo Code

TOH(n, x, y, z)
{
   if (n >= 1)
   {
      // put (n-1) disk to z by using y
      TOH((n-1), x, z, y)
   
       // move larger disk to right place
       move:x-->y
     
      // put (n-1) disk to right place 
      TOH((n-1), z, y, x)
   }
}

Analysis of Recursion



Recursive Equation : T(n) = 2T(n-1) + 1 ——-equation-1

Solving it by BackSubstitution :
T(n-1) = 2T(n-2) + 1 ———–equation-2
T(n-2) = 2T(n-3) + 1 ———–equation-3

Put value of T(n-2) in equation–2 with help of equation-3
T(n-1)= 2( 2T(n-3) + 1 ) + 1 ——equation-4

Put value of T(n-1) in equation-1 with help of equation-4
T(n)= 2( 2( 2T(n-3) + 1 ) + 1 ) + 1
T(n) = 2^3 T(n-3) + 2^2 + + 2^1 + 1

After Generalization :
T(n)=  2^k T(n-k) + 2^{(k-1)} + + 2^{(k-2)} + ............ +2^2 + + 2^1 + 1

Base condition T(0) == 1
n – k = 0
n = k;
put, k = n
T(n) = 2^n T(0) + 2^{(n-1)} + + 2^{(n-2)} + ............ +2^2 + + 2^1 + 1

It is GP series, and sum is 2^{(n+1)} - 1

T(n)= O( 2^{(n+1)} - 1), or you can say O(2^n) which is exponentioal



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


5


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.