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)
- T(n)=T(1)+对数(3/2)+对数(4/3)+…+日志((n+1)/n)
- 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:-)这令人尴尬。无论如何,这个解决方案没有什么错,只是它使事情变得过于复杂。它还可以显示如果没有封闭式解决方案,该怎么办无需担心。我正准备走同一条路,因为极限允许我们在头脑中快速计算解决方案。只是尝试了另一种方式:)