试证明,对于任何 ε>0 ,都有 logn = O(n^ε)

试证明,对于任何 ϵ > 0 \epsilon > 0 ϵ>0 ,都有 l o g n = O ( n ϵ ) logn = O(n^\epsilon) logn=O(nϵ)


(题源:数据结构习题详解-邓俊辉第3版。原版的解答并未从理论上严格证明,直接套用了“对数函数增长很慢,在n足够大时有lnn < εn”结论,然后进一步证明。此处给出严格证明,若有谬误敬请指出)


要证明 l o g n = O ( n ϵ ) logn = O(n^\epsilon) logn=O(nϵ) ,即证明:存在常数 c c c 以及 M > 0 M > 0 M>0 ,使得当 n > M n > M n>M 时,有 l o g a n < c ∗ n ϵ log_a n < c*n^\epsilon logan<cnϵ

f ( x ) = c x ϵ − l o g a x , ( x > 0 ) f(x) = cx^\epsilon - log_ax, (x > 0) f(x)=cxϵlogax,(x>0) ,则 f ′ ( x ) = c ϵ x ϵ − 1 − 1 l n a x − 1 = ( c ϵ x ϵ − 1 l n a ) x − 1 f'(x) = c\epsilon x^{\epsilon-1} - \frac{1}{lna}x^{-1} = (c\epsilon x^\epsilon-\frac{1}{lna})x^{-1} f(x)=cϵxϵ1lna1x1=(cϵxϵlna1)x1

由于 ϵ > 0 \epsilon > 0 ϵ>0 f ′ ( x ) f'(x) f(x) 有唯一的零点,且在零点左侧函数值为负,在零点右侧函数值为正

f ′ ( x 0 ) = 0 , x 0 ϵ = 1 c ϵ l n a f'(x_0) = 0,x_0^\epsilon = \frac{1}{c\epsilon lna} f(x0)=0x0ϵ=cϵlna1 f ( x ) f(x) f(x) 在定义域内先减后增,在 x 0 x_0 x0 处取最小值 f ( x 0 ) = c x 0 ϵ − ( 1 / ϵ ) l n x 0 ϵ l n a = 1 / ( ϵ l n a ) − ( l n 1 c ϵ l n a ) / ( ϵ l n a ) = ( 1 − l n 1 c ϵ l n a ) / ( ϵ l n a ) f(x_0) = cx_0^\epsilon - \frac{(1/\epsilon) lnx_0^\epsilon}{lna} = 1/(\epsilon lna)-(ln\frac{1}{c\epsilon lna})/(\epsilon lna) = (1-ln\frac{1}{c\epsilon lna})/(\epsilon lna) f(x0)=cx0ϵlna(1/ϵ)lnx0ϵ=1/(ϵlna)(lncϵlna1)/(ϵlna)=(1lncϵlna1)/(ϵlna)

f ′ ( x 0 ) > 0 f'(x_0) > 0 f(x0)>0 ,即 1 − l n 1 c ϵ l n a > 0 , c > 1 ϵ l n a 1-ln\frac{1}{c\epsilon lna} > 0, c > \frac{1}{\epsilon lna} 1lncϵlna1>0,c>ϵlna1 时, f ( x ) f(x) f(x) 在其定义域内恒为正。

c = 1 ϵ l n a + 1 c = \frac{1}{\epsilon lna} + 1 c=ϵlna1+1 ,对于 ∀ x > 0 \forall x > 0 x>0 l o g a x < c ∗ x ϵ log_a x < c*x^\epsilon logax<cxϵ ,即对于任意正整数 n n n l o g a n < c ∗ n ϵ log_a n < c*n^\epsilon logan<cnϵ ,证毕。

本题的意义在于,证明了对数复杂度对于任意幂函数复杂度都是更低阶的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值