求解递推T(n)= 2T(sqrt(n))

时间:2013-08-07 08:26:06

标签: algorithm math big-o recurrence

我想解决以下重现关系:

  

T(n)= 2T(√n);

我猜是T(n) = O(log log n),但我不确定如何证明这一点。我如何证明此重复解决了O(log log n)

2 个答案:

答案 0 :(得分:9)

一个想法是通过引入新的变量k来简化重现,使得2 k = n。然后,递归关系适用于

  

T(2 k )= 2T(2 k / 2

如果你然后让S(k)= T(2 k ),你会得到复发

  

S(k)= 2S(k / 2)

请注意,这相当于

  

S(k)= 2S(k / 2)+ O(1)

因为0 = O(1)。因此,通过主定理,我们得到S(k)=Θ(k),因为我们得到a = 2,b = 2,并且d = 0并且log b a> d。

由于S(k)=Θ(k)且S(k)= T(2 k )= T(n),我们得到T(n)=Θ(k)。由于我们选择2 k = n,这意味着k = log n,因此T(n)=Θ(log n)。这意味着您对O(log log n)的初始猜测是不正确的,并且运行时只是对数,而不是双对数。但是,如果只进行了一次递归调用,那么运行时将是O(log log n)是正确的。

希望这有帮助!

答案 1 :(得分:4)

您可以通过展开递归来轻松解决此问题:

enter image description here

现在重复将在T(1) = a时完成,您可以找到相应的a。如果a = 01没有意义,但a=2会得到:

enter image description here

k替换为第一个等式的最新部分,您将获得O(log(n))的复杂性。

在此检查其他类似的递归: