如何计算该函数的增长率:T(n)= 2T(n ^(1/2))+ 2(n ^(1/2))

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算该函数的增长率:T(n)= 2T(n ^(1/2))+ 2(n ^(1/2))相关的知识,希望对你有一定的参考价值。

我需要为我的作业计算这个函数的增长率:

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

换一种方式:

T(n) = 2T( sqrt(n) ) + 2( sqrt(n) )

改变变量可能会有所帮助(类似于n = 2^m

我找到的答案是log(n)*log(log(n)),但我知道这是不正确的。

答案

n = 2^m确实是正确的变量替代品。定义一个函数S(m)

S(m) = T(n) = T(2^m)

T(sqrt(n)) = T(2^[m/2]) = S(m/2)

S(m) = 2S(m/2) + 2^[m/2+1]

扩张:

S(m) =  4*S(m/4)  + 2*2^[m/4+1]  + 2^[m/2+1]
     =  8*S(m/8)  + 4*2^[m/8+1]  + 2^[m/4+2] + 2^[m/2+1]
     = 16*S(m/16) + 8*2^[m/16+1] + 2^[m/8+3] + 2^[m/4+2] + 2^[m/2+1]
     = ...

2^[m/2]将主导所有其他条款,因此:

S(m) = O(2^[m/2])

*********************
*                   *
* T(n) = O(sqrt(n)) *
*                   *
*********************

以上也可以使用Master Theorem得出(案例3)。

以上是关于如何计算该函数的增长率:T(n)= 2T(n ^(1/2))+ 2(n ^(1/2))的主要内容,如果未能解决你的问题,请参考以下文章

如何求解递归 T(n) = 2T(n^(1/2)) + log n? [关闭]

计算时间复杂度[重复]

T(n) = T(3n/4) + 2T(n/2) + n 的复杂度是多少? [关闭]

通过替换求解递归 T(n) = 2T(n/2) + Θ(1)

问题总结

求解 T(n) = 2T(n/2) + log n [关闭]