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

时间:2012-03-03 22:32:50

标签: algorithm math big-o analysis recurrence

我一直在关注这种情况,并想检查一下我是否采取了正确的方法。

T(n) = T(n^(1/2)) + 1
= T(n^(1/4)) + 1 + 1
= T(n^(1/8)) + 1 + 1 + 1
...
= 1 + 1 + 1 + ... + 1 (a total of rad n times)
= n^(1/2)

所以答案将达到n ^(1/2)

的θ界限

2 个答案:

答案 0 :(得分:12)

以下是如何在没有任何提示的情况下找到答案,只需使用数学。

开始展开递归:enter image description here

递归会在某个时刻停止,所以我们必须找到一个合理的停止点。尝试0,1,2,你可以看到2看起来不错,因为你可以很容易地解决方程:enter image description here

解决它,你得到enter image description here

因此,递归将持续$line次,这是您的时间复杂度。

P.S。有点难以复发here

答案 1 :(得分:7)

提示:假设n = 2 2 m 或m = log 2 log 2 < / sub> n,你知道2 2 m-1 * 2 2 m-1 = 2 < sup> 2 m 所以,如果你定义S(m)= T(n)你的S将是:

  

S(m)= S(m-1)+1→S(m)=Θ(m)→S(m)= T(n)=Θ(log 2 log <子> 2 n)的

为一般情况扩展它。

在递归中,如T(n)= T(n / 2)+ 1,在每次迭代中,我们将树的高度减少到一半。这导致Θ(logn)。但是,在这种情况下,我们将输入数除以2的幂(而不是2),因此它变为Θ(log log n)。