【问题标题】:Asymptotic complexity of T(n)=T(n-1)+1/n [closed]T(n)=T(n-1)+1/n 的渐近复杂度 [关闭]
【发布时间】:2013-03-17 08:48:35
【问题描述】:

有一种算法具有时间复杂度

    T(n)=T(n-1)+1/n if n>1
        =1          otherwise

我正在解决它的渐近复杂性,并将顺序设为“n”,但给出的答案是“log n”。这是正确的吗?如果是log n,那为什么?

【问题讨论】:

  • 请说明你到达 O(n) 的方式。
  • @interjay 你也应该提交它作为答案
  • @jamylak:完成了,我没有时间早点这样做。
  • @IvayloStrandjev:好的,我想现在应该更清楚了。

标签: algorithm math recursion


【解决方案1】:

很容易看出(或用归纳法正式证明)T(n) 是从 1 到 n 的 k 值的 1/k 之和。这是第 nharmonic number,Hn = 1 + 1/2 + 1/3 + ... + 1/n。

渐近地,谐波数在 log(n) 的数量级上增长。这是因为和的值接近于 1/x 从 1 到 n 的积分,它等于 n 的自然对数。事实上,Hn = ln(n) + γ + O(1/n) 其中 γ 是一个常数。由此,很容易证明 T(n) = Θ(log(n))。

【讨论】:

    【解决方案2】:

    更多详情:

    H(N) = 1 + 1/2 + 1/3 + ... + 1/N

    函数x :-> 1/x 是一个递减函数,所以:

    我们从1 to N 左侧部分求和,右侧部分从2 to N 求和,然后加上1,我们得到:

    然后我们计算左右部分:ln(N+1) <= H(N) <= 1 + ln(N)

    这意味着 H(N)/ln(N) -> 1 因此H(N)=Θ(log(N))

    (来自http://fr.wikipedia.org/wiki/S%C3%A9rie_harmonique#.C3.89quivalent_de_Hn

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 2013-12-27
      • 2020-02-14
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多