-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 –

相關問題