Advertisement
Guest User

Corrected Version

a guest
Sep 21st, 2014
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ********Problem 1****************
  2. Assume f1(n) = O(n). Find running time of the following recursive function
  3.  
  4. function Recurse(A[1..n])
  5. f1(n) // O(n)
  6. t1 <-- Recurse(A[1..(n-1)]) // T(n-1)
  7. t2 <-- Recurse(A[(2..n]) // T(n-1)
  8. return (t1+t2) // O(1)
  9. end function
  10.  
  11. Total Runtime:
  12. T(n) = O(n) + 2*T(n-1) + O(1) = 2*T(n-1) + O(n)
  13. = 4*T(n-2) + 2*O(n) + O(n)
  14. = 8*T(n-3) + 4*O(n) + 2*O(n) + O(n)
  15. .................
  16. .................
  17. = (2^k)*T(n-k) + O(n)(1+2+4+8+...+2^(k-1)) [ n-k=1
  18. k=n-1 ]
  19. = 2^(n-1)*T(1) + O(n)*((2^(n-1)-1)/(2-1))
  20. = O(n*(2^(n-1)-1))
  21. = O(n*2^n)
  22. **********************************
  23.  
  24.  
  25. ***************Problem 2**********
  26. Assume f1(n) = O(log n). Find running time of the following recursive function
  27.  
  28. function Recurse(A[1..n])
  29. f1(n) // O(log n)
  30. m <-- n/3 // O(1)
  31. t1 <-- Recurse(A[1..m]) // T(n/3)
  32. t2 <-- Recurse(A[(m+1)..2m]) // T(n/3)
  33. t3 <-- Recurse(A[(2m+1)..3m]) // T(n/3)
  34. return (t1+t2+t3)/3 // O(1)
  35. end function
  36.  
  37. Total Runtime:
  38. T(n) = 3*T(n/3) + O(log n) + O(1) + O(1)
  39. = 3*T(n/3) + O(log n)
  40. = 3*[3*T(n/3^2) + O(log(n/3))] + O(log n)
  41. = (3^2)*T(n/3^2) + 3*O(log n) + O(log n)
  42. .............................
  43. .............................
  44. = (3^k)*T(n/3^k) + (1 + 3 + 3^2 +.....+ 3^(k-1))*O(log n)
  45. = 3^(log3 (n)) + ((3^(log3 (n))-1)/(3-1))*O(log3 (n)) [ n/3^k = 1
  46. => n = 3^k
  47. => k = log3(n) ]
  48. = n + n*O(log3 (n))
  49. = O(n*log (n))
  50.  
  51. *********************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement