可能解释为什么log(n!)= O(nlogn))

时间:2012-02-01 01:18:05

标签: algorithm complexity-theory

  

可能重复:
  Is log(n!) = Θ(n·log(n))?

为什么lg(n!)为O(nlg(n))的“证明”是因为n多项式大于lg(n!),因此nlg(n)总是多项式大于lg(n) !)。这是可以接受的原因吗?或者你必须在数学上证明它(在这种情况下我不知道如何处理因子)

4 个答案:

答案 0 :(得分:5)

我见过的通常证据是,对于足够大的 n n! < Ñ名词 的。取两边的对数得到 log(n!)<的log(n 名词。由于 log(b a )=一个log(b),我们得到 log(n!)< n log(n)

答案 1 :(得分:1)

你可能确实需要一些在数学上更严格的东西,但这并不太难。由于

 lg(n!) = lg 1 + lg 2 + lg 3 + ..... + lg n

您可以考虑y = lg x图表下方的区域,并将其与http://en.wikipedia.org/wiki/Rectangle_method近似。你会得到类似http://en.wikipedia.org/wiki/Stirling's_approximation的内容。

因为它是'小o',你的矩形需要在上方和下方绑定。

答案 2 :(得分:1)

使用斯特林的近似值:http://en.wikipedia.org/wiki/Stirling%27s_approximation

ln n! = n\ln n - n +O(ln(n)) 

答案 3 :(得分:0)

回想一下ln(a⋅b)= ln(a)+ ln(b)。因此,ln(n!)= ln(n⋅(n-1)·...·2⋅1)= ln(n)+ ln(n-1)+ ... ln(2)+ ln(1);通过检查得到n⋅ln(n)≤ln(n!)。