Algorithm 如何求解此递推T(n)=T(n&x2212;1)+;lg(1+;1/n),T(1)=1?

Algorithm 如何求解此递推T(n)=T(n&x2212;1)+;lg(1+;1/n),T(1)=1?,algorithm,time-complexity,asymptotic-complexity,recurrence,Algorithm,Time Complexity,Asymptotic Complexity,Recurrence,我陷入了这样的循环: T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1? 有一段时间,主方法似乎无法应用于此方法。我们有: lg(1+1/n)=lg((n+1)/n)=lg(n+1)-lg(n) 因此: T(n)-T(n-1)=lg(n+1)-lg(n) T(n-1)-T(n-2)=lg(n)-lg(n-1) … T(3)-T(2)=lg(3)-lg(2) T(2)-T(1)=lg(2)-lg(1) 添加和删除,我们得到: T(n)-T(1)=lg(n+1)-lg

我陷入了这样的循环:

T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1?
有一段时间,主方法似乎无法应用于此方法。

我们有:

lg(1+1/n)=lg((n+1)/n)=lg(n+1)-lg(n)

因此:

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

T(n-1)-T(n-2)=lg(n)-lg(n-1)

T(3)-T(2)=lg(3)-lg(2)

T(2)-T(1)=lg(2)-lg(1)

添加和删除,我们得到:

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

T(n)=1+lg(n+1)


因此,
T(n)=O(lg(n))

与这里的另一个正确答案相同,只是证明了不同

以下所有方程式均根据给定的递推公式创建:

T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1?
  • T(n)=T(n-1)+对数((n+1)/n)
  • T(n-1)=T(n-2)+对数(n/(n-1))
  • T(2)=T(1)+对数(3/2)
将上述方程式中的所有RHS和LHS相加得出:

  • T(n)=T(1)+对数(3/2)+对数(4/3)+…+日志((n+1)/n)
因为Log(a)+Log(b)=Log(ab)

  • T(n)=1+Log((n+1)/2)
  • T(n)=Log(10)+Log((n+1)/2)=Log(5n+5),假设基数为10,使用1=Log1010

因此T(n)=O(Log(5n+5))=O(Log(n))

这并不像一些人所说的那样是线性的。它是
O(log(n))
。以下是数学分析:


如果开始展开递归,您将得到:

如果你坚持到最后,你就会

或者简而言之:

用积分近似求和后,将得到:

最后,如果您选择极限x->无穷大:

你会看到第一部分是


这给了你一个最终的解决方案,就是,我可能错了,但对我来说,它似乎是线性的。我同意计算机(我不是那个否决你答案的人),但是这个方程从根本上是不正确的。如果它在计算机的算法基础上是有效的,它应该被重写为
T(n)=T(n-1)+lg(1+1/n)+k
,其中
k
是一个常数或
O(1)
。在这种情况下,解将变成
T(n)=n*k+lg(n+1)
O(n)
。在这种情况下,求和有一个超出限制的有限
n
的封闭形式解。@user1952500:-)这令人尴尬。无论如何,这个解决方案没有什么错,只是它使事情变得过于复杂。它还可以显示如果没有封闭式解决方案,该怎么办无需担心。我正准备走同一条路,因为极限允许我们在头脑中快速计算解决方案。只是尝试了另一种方式:)