T(sqrtn)+ 5的Big-O表示法

时间:2017-10-01 13:34:50

标签: big-o computer-science

我面临一个问题: T(N)= T(sqrt(N))+ 5.

我想知道我能以这种方式解决它吗?

T(N)= O(sqrt(N))+ O(5)

由于O(5)= O(1)是常数,我们可以忽略它。

所以T(N)的大O符号是 O(N ^(1/2))

或者我可以说它的符号是O(N),因为O(N)和O(sqrt(N))之间没有太大的区别。

谢谢!

2 个答案:

答案 0 :(得分:3)

(为了整洁,让我们用常数c替换5)

多次将此函数替换为自身,我们可以发现一种模式:

enter image description here

我们什么时候停止迭代?满足停止条件时。取此为n = 2(通常情况下不是1,因为参数是n = 1的渐近):

enter image description here

所以这个函数的最终成本是:

enter image description here

请注意,常量c(= 5)与渐近复杂度无关。 (而且结果不仅仅是log n而是log log n

编辑:如果您选择不同的停止条件n = a, a > 1,则上述步骤将变为:

enter image description here

仅与原始结果中的常量不同。

答案 1 :(得分:2)

编辑:我在原始答案中犯了一个错误,假设 n 2 的力量,并将重复发生减少到 1,2,4, ... n,这是错误的。我为误导而道歉。这是更新后的答案。

来自,

  

T(n)= T(sqrt(n))+ 5,

我们也可以把它写成:

  

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

然后重复

  

T(n ^(1/2))= T(n ^(1/4))+ 5,

     

T(n ^(1/4))= T(n ^(1/8))+ 5,

     

...

     

T(n ^(2 ^ -m))= T(n ^(2 ^ - (m + 1))+ 5,

这并没有显示我们可以停止的常数。因此,我们需要替换 n

尝试:

  

n = 2 ^(2 ^ m),

我们在哪里

  

m = log log n

m = 0 开始, n = 2

然后我们有:

  

T(n)= T(2)+ 5 + 5 + ... + 5,

有多少5? 我们算这样:

  

2 ^(2 ^ 0),2 ^(2 ^ 1),2 ^(2 ^ 2),... 2 ^(2 ^ m)

所以 m 5s,其中 m = log log n 。所以

  

T(n)= T(2)+ 5 log log n,

是,

  

T(n)= O(log log n)。