Math 证明这一点!对于任何常数自然数p,不在O(n^p)中
我怎样才能证明这一点呢!对于任何常数的自然数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
(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)