-2

我正在练习渐近分析的问题,并且遇到了这个问题。是log(n!)= O((log(n))^ 2)?

log(n!) = O((log(n))^2)

我能够证明

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

(log(n))^2 = O(n*log(n)) 
(log n <= n => (log n)^2 <= n*logn) 

我不能进一步进行。有关如何进一步进行的任何暗示或直觉?由于

+1

什么比log(n)^2

增长速度严格大于你想显示?事实是,日志(n!)不在O((log n)^ 2)。 – Henry

+3

这个问题是关于数学而不是关于编程算法 – FDavidov

+0

@Henry那么我该如何显示?比绘制一个图表还有更正式的方式来表明这一点吗? –

回答

2

Accoriding到Stirling's Approximation

log(n!) = n*log(n) - n + O(log(n))

所以很明显的上界log(n!)将是去掉了方程的上半年O(nlogn)

下界可以这样计算:

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

所以下界也是nlogn。很明显的答案是NO

+0

但这不是问题! –

+1

'log(n!)= O((log(n))^ 2)?'answer is NO @JanakyMurthy –

+0

@JanakyMurthy你期望什么样的答案? –

0

我想我得到了我自己的问题的答案。我们将证明以下事实:

1)n*log(n)是一个严密开往log(n!)

2)n*log(n)是一个上限(log(n))^2

3)n*log(n)不是一个下界(log(n))^2

有关(1)的证明,请参阅this

证明(2)&(3)在问题本身中提供。 增长率为log n<增长率为n。 因此增长率为log(n)^2<增长率为n*log(n)。 所以log(n)^2 = o(n*log(n))(这里我用小-O表示的n*log(n)的增长速度是如此的结论是:log(n!) = big-omega(log(n^2)) 纠正我,如果我做了什么错误

+0

关于证明3,在你给出的链接方法和我的下限是一样的,他的下限是'n/2 * log(n/2)'@janaky –

相关问题