【发布时间】: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