证明n!对于任何常数自然数p,不在O(n ^ p)中

时间:2010-11-07 00:53:54

标签: math proof proofs

我怎样才能证明n!任何常数自然数p不在O(n ^ p)中? 对于所有k?

,是(n k)(n选择k)在O(n ^ p)中

3 个答案:

答案 0 :(得分:10)

Stirling's approximation

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

但是

log (n^p) = p log n = O(log n)

表示常量p。显然,n!的增长速度比n^p快,因此不是O(n^p)

答案 1 :(得分:8)

你可以证明n!通过显示你总是可以选择n(对于固定常数p),n! > n^p

(为了得到一个想法,选择一些低的p值并绘制n!对n ^ p)

第二部分的推理遵循相同的路线。绑定(n选择k)然后使用第一部分。

提示:正如卡萨布兰卡所说,你可以使用Stirling's approximation

答案 2 :(得分:2)

编辑(2011年3月) - 仅使用简单计算的简单方法

显示O(n!)不等于O(n ^ p)的一种方法是比较n的对数!记录n ^ p。

ln(n!)= sum(ln(i)){i:1到n}

ln(n ^ p)= p * ln(n)

这似乎没有帮助,因为我们不知道日志的总和是多少。诀窍是通过使用ln(i)di从1到n

的积分来计算下限

在下图中可以看到,黑色的ln(x)小于蓝色的和步功能。

enter image description here

鉴于ln(i)di的不定积分是i * ln(i) - i + C,我们可以从1到n积分得到:

n * ln(n) - n + 1作为下限。

因为没有选择的p大于所有可能的n:

O(p ln(n))< O(n ln(n)),O(n ^ p)<为O(n!)

注意:积分ln(n)得到ln(n!)的近似值是斯特林近似的基础。这是一个更粗略的近似,如果你继续采取反日志:n! > = e *(n / e)^ n,而斯特林有sqrt(2 * pi * n)而不是e。

从1到n + 1的积分会给你一个上界(sum步函数适合ln(n)的图形)