求解T(n)= n ^(1/2)T(n ^(1/2))+ n的运行时间

时间:2014-02-18 03:08:10

标签: algorithm big-o recurrence

我试图找到以下的重复运行时间:

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

但我无法找到总和甚至是将g(n)与递归总和联系起来的等式。有人可以帮我总结一下吗?

2 个答案:

答案 0 :(得分:0)

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

    =n^(1/2)[ n^(1/2^2)T(n^(1/2^2)+n^(1/2)]+n

    =n^(3/2^2)T(n^(1/2^2)+2n

    =n^(3/2^2)[n^1/2^3 T(n^(1/2^3)+n^(1/2^3)]+2n

    = and so on 

    assume n^(1/2^k)=2
           1/2^k logn=1
           logn=2k
           log logn = k

   = n^(1-1/2^k)T(n^(1/2^k)+kn
   = n/n(1/2^k)T(2)+kn
   = n/2*2+nloglogn
   =n+nloglogn
   = O(nloglogn)

答案 1 :(得分:0)

这些类型的递归可以通过展开递归来解决,发现元素之间的相似性。

enter image description here

现在在某些时候递归会耗尽自己。如果T(...) = T(a) = b,就会发生这种情况。任何合理的a都可以使用,因此我选择了2.通过获取双方的n^(1/2^k) = 2来求解等式log,得到:k = log(log(n))。现在在你的递归中替换它:

enter image description here

如果2^(-loglogn)0的限制等于n -> infinity,因此求和中的第一个元素等于b。复杂性为O(n * log log (n))