【发布时间】:2016-03-12 21:52:45
【问题描述】:
我陷入了这种重复:
T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1?
一会,好像master方法不能用在这个上。
【问题讨论】:
-
我可能错了,但对我来说它似乎是线性的。
标签: algorithm time-complexity asymptotic-complexity recurrence
我陷入了这种重复:
T(n) = T(n − 1) + lg(1 + 1/n), T(1) = 1?
一会,好像master方法不能用在这个上。
【问题讨论】:
标签: algorithm time-complexity asymptotic-complexity recurrence
我们有:
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) + k,其中k 是一个常数或O(1)。在这种情况下,解决方案将变成T(n) = n * k + lg(n + 1) 或O(n)。
与此处的另一个正确答案相同,只是证明不同。
以下所有方程都是从给定的递归中创建的:
将上述等式中的所有 RHS 和 LHS 相加得到:
由于 Log(a) + Log(b) = Log(ab),
因此 T(n) = O(Log(5n + 5)) = O(Log(n))
【讨论】:
【讨论】:
n,求和有一个封闭形式的解。