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

Math 证明这一点!对于任何常数自然数p,不在O(n^p)中,math,proof,proofs,Math,Proof,Proofs,我怎样才能证明这一点呢!对于任何常数的自然数p,是否不在O(n^p)中? (nk)(n选择k)在O(n^p)中吗?对于所有k?你可以证明n!对于任何常数自然数p,都不在O(n^p)中,这表明您始终可以选择n(对于固定常数p),因此n!>n^p (为了得到一个想法,选择一些较低的p值,并绘制n!与n^p的对比图) 第二部分的推理遵循同样的思路。绑定(n选择k),然后使用第一部分 提示:正如卡萨布兰卡所说,你可以使用 log (n!) = n log n - n + O(log n) = O(n l

我怎样才能证明这一点呢!对于任何常数的自然数p,是否不在O(n^p)中?
(nk)(n选择k)在O(n^p)中吗?对于所有k?

你可以证明n!对于任何常数自然数p,都不在O(n^p)中,这表明您始终可以选择n(对于固定常数p),因此
n!>n^p

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

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

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

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

对于常数
p
。显然
n的增长速度比
n^p
快,因此它不是
O(n^p)

编辑(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)小于蓝色的和阶跃函数

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

n*ln(n)-n+1作为下界

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

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


从1积分到n+1会得到一个上界(求和步长函数将适合ln(n)的图形)

@Mitch:如果你给出了一个答案,我会向上投票。@Tony:准确地说,对于所有n>n0,其中n0是一个正整数。不能选择单个值n。反例:p=10,n=2。2^10 > 2!.对不起,我应该修改那条评论。反驳O(n^p):给定p,则对于任何n0>0,存在一个(单个)值n>n0,使得n!>不用斯特林近似,你也可以注意到log(n!)=log(n)+log(n-1)+…+log(2)+log(1)。log(1)=0,因此每隔一项必须至少为log(2)或更大。这就给出了log(n!)>nlog(2),这当然意味着它是O(n)。正如你所注意到的,它实际上是O(nlogn),但是O(logn)的增长速度也比O(logn)快得多。我试图不为他们做家庭作业;)。但我可能应该暗示一下斯特林的阶乘近似。
log (n^p) = p log n = O(log n)