我要证明log(n!) = Θ(n·log(n))
给出了一个提示,我应该用nn表示上界,用(n/2)(n/2)表示下界。这对我来说不是那么直观。为什么会这样呢?我可以清楚地看到如何将nn转换为n·log(n)(即方程两边都取对数),但这有点倒过来了。
解决这个问题的正确方法是什么?我要画递归树吗?没有什么递归的,所以这似乎不是一个可能的方法。
我要证明log(n!) = Θ(n·log(n))
给出了一个提示,我应该用nn表示上界,用(n/2)(n/2)表示下界。这对我来说不是那么直观。为什么会这样呢?我可以清楚地看到如何将nn转换为n·log(n)(即方程两边都取对数),但这有点倒过来了。
解决这个问题的正确方法是什么?我要画递归树吗?没有什么递归的,所以这似乎不是一个可能的方法。
当前回答
记住,
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)
其他回答
参见斯特林近似:
-不,不,不。
后两项的重要性小于前一项。
这可能会有帮助:
eln(x) = x
and
(lm)n = lm*n
我知道这是一个有公认答案的老问题,但这些答案实际上都没有使用暗示所建议的方法。
这是一个非常简单的论证:
n !(= 1*2*3*…*n)是n个小于或等于n的数的乘积,因此它小于n个都等于n的数的乘积;也就是说,n ^ n。
一半的数字,即n/2个,在n!乘积大于或等于n/2。因此它们的乘积大于n/2个数的乘积都等于n/2;例如(n / 2) ^ (n / 2)。
全程记录日志以建立结果。
更进一步,米克·夏普留给你的
它的推导很简单: 参见http://en.wikipedia.org/wiki/Logarithm ->群论
log(n!)=log(n*(n-1)*(n-2)*…* 2*1)=log(n)+log(n-1)+…+ log(2) + log(1)
把n看成无限大。无穷减一是多少?还是- 2 ?等。
日志(inf)+日志(inf)+日志(inf)+…= inf*log(inf)
然后把无穷看做n。
记住,
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)