【问题标题】:Calculating the Recurrence Relation T(n)=T(n-1)+logn计算递归关系 T(n)=T(n-1)+logn
【发布时间】:2014-05-02 08:42:56
【问题描述】:

我们要通过重复替换来解决递归关系:

T(n)=T(n-1)+logn

我开始替换并得到以下内容。

T(n)=T(n-2)+log(n)+log(n-1)

按对数积规则,log(mn)=logm+logn,

T(n)=T(n-2)+log[n*(n-1)]

继续这个,我明白了

T(n)=T(n-k)+log[n*(n-1)*...*(n-k)]

我们知道基本情况是 T(1),所以 n-1=k -> k=n+1,代入我们得到

T(n)=T(1)+log[n*(n-1)*...*1]

显然 n*(n-1)*...*1 = n!所以,

T(n)=T(1)+log(n!)

我不知道如何解决这个问题。答案是否只是O(log(n!))?我读过其他解释,说它是 Θ(nlogn),因此 O(nlogn) 和 Ω(nlogn) 分别是上限和下限。

【问题讨论】:

  • Θ(log(n!)) = Θ (n log n)
  • 最后两个等式中的k 只是在大喊……嘿,如果其余的项与我无关,我到底在做什么?这看起来不太对...
  • @KarolyHorvath k 是此递归的最大步数。
  • @Jay:改写。你的意思是k=n? ;)
  • @KarolyHorvath 我的教授(以及其他一些在线解释)这样做的方式是使用 k 来表示通用的“最大”替换。

标签: recursion big-o complexity-theory recurrence


【解决方案1】:

这扩展为 log (n!)。你可以看到这个,因为

T(n) = T(n - 1) + log n

= T(n - 2) + log (n - 1) + log n

= T(n - 3) + log (n - 2) + log (n - 1) + log n

= ...

= T(0) + log 1 + log 2 + ... + log (n - 1) + log n

= T(0) + log n!

确切的答案取决于 T(0) 是什么,但对于 T(0) 的任何固定常数值,这是 Θ(log n!)。

注意 - 使用 Stirling's approximation,Θ(log n!) = Θ(n log n)。这可能会帮助您将其与现有的复杂性类联系起来。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    是的,这是一阶的线性递归。完全可以解决。如果你的初始值为 $T(1) = 0$,你会得到 $T(n) = \log n!$。您可以近似 $\log n!$(请参阅 Stirling's formula): $$ \ln n! = n \ln n - n + \frac{1}{2} \ln \pí n + O(\ln n) $$

    [这里需要乳胶!!]

    【讨论】:

      【解决方案3】:

      不需要斯特林公式来获得大 Theta 界。它是 O(n log n),因为它是最多 n 项的总和,每个项最多 log n。它是 Omega(n log n) 因为它是至少 n/2 项的总和,每个项至少 log (n/2) = log n - 1。

      【讨论】:

        猜你喜欢
        • 2015-08-29
        • 2020-07-30
        • 2019-04-15
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 2021-08-30
        相关资源
        最近更新 更多