【问题标题】:Reccurrence T(n) = T(n^(1/2)) + 1重复 T(n) = T(n^(1/2)) + 1
【发布时间】:2012-03-21 23:15:28
【问题描述】:

我一直在查看这种重复,并想检查我是否采取了正确的方法。

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) 的 theta 界

【问题讨论】:

标签: algorithm math big-o analysis recurrence


【解决方案1】:

以下是您无需任何提示即可找到答案的方法,只需使用数学即可。

开始展开递归:

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

解决它,你会得到

所以递归将继续log(log(n)) 次,这是您的时间复杂度。

P.S.解决了一点困难的复发here

【讨论】:

  • 我喜欢学习你的答案,我希望有一天我能达到超过 10k 分,从而与你一起工作,先生。 +1
  • 对于那些难以理解 loglogn 部分的人,the image 可以帮助您。
  • @snr 感谢您提供讲义。干杯!
【解决方案2】:

提示:假设 n = 22m 或 m = log2log2n,你知道 22m-1 * 22m-1 = 22m 所以,如果你定义 S(m)=T(n) 你的 S 将是:

S(m) = S(m-1)+1 → S(m) = Θ(m) → S(m)=T(n) = Θ(log2log2n)

将其扩展到一般情况。

在像 T(n) = T(n/2) + 1 这样的递归中,在每次迭代中,我们将树的高度减半。这导致Θ(logn)。然而,在这种情况下,我们将输入数字除以 2 的幂(而不是 2),所以结果是 Θ(log log n )。

【讨论】:

  • 所以这意味着递归树的高度是 log log n?
  • 是的,它是 log log n(以 2 为底),实际上 sqrt 减少了 2 的幂值(不是两次)。
猜你喜欢
  • 2013-01-10
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多