一尘不染

log(n!)=Θ(n·log(n))吗?

algorithm

我要证明 log( n !)=Θ( n ·log( n ))

提示我应该用 n n 表示上限,而用 n / 2)( n /
2)
表示下限。在我看来,这似乎并不那么直观。为什么会这样呢?我绝对可以看到如何将 n n 转换为 n ·log( n
(即,记录方程的两边),但这有点倒退。

解决这个问题的正确方法是什么?我应该画递归树吗?对此没有任何递归,因此这似乎不是一种可行的方法。


阅读 765

收藏
2020-07-28

共1个答案

一尘不染

请记住

log(n!) = log(1) + log(2) + ... + log(n-1) + log(n)

您可以通过以下方式获得上限

log(1) + log(2) + ... + log(n) <= log(n) + log(n) + ... + log(n)
                                = n*log(n)

在丢弃总和的前一半之后,您可以通过执行类似的操作来获得下界:

log(1) + ... + log(n/2) + ... + log(n) >= log(n/2) + ... + log(n) 
                                       = log(n/2) + log(n/2+1) + ... + log(n-1) + log(n)
                                       >= log(n/2) + ... + log(n/2)
                                        = n/2 * log(n/2)
2020-07-28