使用递归树查找上限猜测

时间:2012-03-22 16:48:02

标签: algorithm complexity-theory

如何找到此递归的复杂性?

  

T(n)= 2 T(n 1/2 )+ O(lg n)

2 个答案:

答案 0 :(得分:2)

(来自https://stackoverflow.com/a/3956416/395857

T(n)= 2T(n ^(1/2))+ O(lg n)

设m = log 2 n;

=> T(2 m )= 2T(2 m / 2 )+ O(m)

现在重命名K(m)= T(2 m )=> K(m)= 2K(m / 2)+ O(m)

然后使用Master theorem代替K.总结一下,O(T)~O(lg K)。

答案 1 :(得分:1)

有一种经典方法可以解决这些递归关系,其中n项的值取决于p指数\次方小于n(此处为p = n^(1/2) = exp(1/2*log(n)) })。

将变量n更改为exp(k)并定义函数F,以便

  F(k) = T(exp(k))

第一步给你

  T(exp(k)) = 2 T(exp(k/2))  + O(k)

第二步给你

   F(k) = 2F(k/2) + O(k)

众所周知(对于此证明搜索)O(klog(k))。 现在只需n = exp(k) => k = log(n),你终于获得了

 T(n) = O(log(n) * log(log(n)))