求解递归T(n)= T(n / 2)+ T(n / 2 - 1)+ n / 2 + 2

时间:2014-03-24 14:13:25

标签: big-o recurrence

使用Big-Oh:

需要一些帮助来解决此运行时重现问题
T(n) = T(n/2) + T(n/2 - 1) + n/2 + 2

我不太懂得如何使用这里的主定理

1 个答案:

答案 0 :(得分:0)

对于n 足够,你可以假设T(n/2 - 1) == T(n/2),所以你可以改变

  T(n) = T(n/2) + T(n/2 - 1) + n/2 + 2

进入

  T(n) = 2*T(n/2) + n/2 + 2

使用主定理(http://en.wikipedia.org/wiki/Master_theorem

  T(n) = a*T(n/b) + f(n)

  a = 2
  b = 2
  f(n) = n/2 + 2
  c = 1 
  k = 0

  log(a, b) = 1 = c 

所以你有(案例2 ,因为log(a, b) = c

  T(n) = O(n**c * log(n)**(k + 1))
  T(n) = O(n * log(n))