求theta:T(n)= T(n ^(1/2))+ 1

时间:2014-02-14 18:51:43

标签: algorithm big-o complexity-theory recurrence

我试了很多个小时并且我一直到达log(logn)(其中log是base 2)但是这与Masters定理不一致,它维持它只是log(n)。

3 个答案:

答案 0 :(得分:2)

Master's定理在这里不适用,因为我们没有在每一步将输入除以常数。你的答案是对的。

答案 1 :(得分:1)

为了应用主定理,我们必须在每一步除以常数。在这种情况下我们仍然可以使用它,但我们必须改变这个问题。

k=log n,其中对数为基数b,并定义S(k)=T(b^k)。然后是S(k)=T(b^k)=T(n)=T(n^{1/2})+1=T((b^k)^{1/2})+1=T(b^{k/2})+1=S(k/2)+1,我们可以将主定理应用于S,它告诉我们S(k)=Theta(log k)。因此,T(n)=T(b^{log n})=S(log n)=Theta(log(log n))正如您所发现的那样。

答案 2 :(得分:0)

人们正确地告诉你,主人定理在这里不起作用。 要解决您的问题,您必须开始展开递归:enter image description here

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

解决它,你得到enter image description here

因此,递归将持续log(log(n))次,这是您的时间复杂度。

P.S。有点难以复发here