博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论(第三版) 第三章练习题
阅读量:2457 次
发布时间:2019-05-11

本文共 2128 字,大约阅读时间需要 7 分钟。

http://www.cnblogs.com/Jiajun/archive/2013/05/06/3063574.html

3.1-1
分情况讨论
f(n)g(n) 时, max(f(n),g(n))=f(n) ,存在 c1=12,c2=1,n0>0 使得

0<c1(f(n)+g(n))f(n)c2(f(n)+g(n))nn0
同理可证当 g(n)>f(n) 的情况


3.1-2
(n+a)b=nb+c1nb1+c2nb2++ab=θ(nb)


3.1-3
大O表示法用来表示一个算法复杂度的上界,而“至少”一词用来形容下界,所以这句话的意思是该算法复杂度的上界只要不小于 O(n2) 即可,相当于没有说明算法的复杂度的界限,没有意义。


3.1-4
2n+1=O(2n)
证明:存在 c=2,n0>0 使得

02n+1c2nnn0
22nO(2n)
证明:假设存在 c,n0 使得
022nc2nnn02n2nc2n2nc
由于不存在常数c使得等式成立,故产生矛盾,得证。


3.1-5
利用定义就可以直接证明


3.1-6
最坏情况下复杂度为 O(g(n)) 说明所有情况时间复杂度为 O(g(n)) ,最好情况下时间复杂度为 Θ(g(n)) 说明所有情况时间复杂度为 Ω(g(n)) ,根据定理3.1得算法时间复杂度为 Θ(g(n))


3.1-7
f(n)=o(g(n)) 说明对于任意正常数 c,n0 ,对于所有的 nn0 都有

0f(n)<cg(n)nn0
这时假设 f(n)=ω(g(n)) ,说明对于任意正常数 c,n0 ,对于所有的 nn0 都有
0cg(n)<f(n)
然而这样的常数c是存在的,故产生矛盾,可得 o(g(n))ω(g(n))=Φ


3.1-8

Ω(g(m,n))={
f(m,n):
c,n0,m0使0cg(n,m)f(n,m)nn0mm0}
Θ(g(m,n))={
f(m,n):
c1,c2,n0,m0使0c1g(n,m)f(n,m)c2g(n,m)nn0mm0}


3.2-1
由于f(n)和g(n)单调递增,所以对于任意 x1<x2 ,都有

f(x1)<f(x2)
g(x1)<g(x2)
所以
f(x1)+g(x1)<f(x2)+g(x2)
f(g(x1))<f(g(x2))
如果当f(x)和g(x)都非负时显然有
f(x1)g(x1)<f(x2)g(x2)


3.2-2

lgalogbc=logbclga=lgalgclgb
lgclogba=logbalgc=lgalgclgb
alogbc=clogba


3.2-3
证明 lg(n!)=Θ(nlgn)

lgn!=i=1nlgi<i=1nlgn=nlgn
i=1nlgi=i=1n/2[lgi+lg(ni)]=i=1n/2[lgi(ni)]>i=1n/2lgn24=nlgnn=12nlgn
lg(n!)=Θ(nlgn)
证明 n!=ω(2n)
n>4i(ni)>22
n!=i=1n/2i(ni)>i=1n/222=2n
n!=ω(2n)
证明 n!=o(nn)
n>1n!=i=1ni<i=1nn=nn
n!=o(nn)


3.2-4
证明 f(n) 是否多项式有界等价于证明 lgf(n)=O(lgn) ,这是因为如果 f(n) 多项式有界,则存在正常数 c,k,n0 使得对于所有的 n>n0 都有 f(n)<cnk ,即 lgf(n)<kclgn ,所以 lgf(n)=Olgn ,反之亦然。
对于 lgn! 我们有

lg(lgn!)=Θ(lgnlglgn)=Θ(lgnlglgn)=ω(lgn)
lgn!  非多项式有界

对于  lglgn!  我们有
lg(lglgn!)=Θ(lglgnlglglgn)=Θ(lglgnlglglgn)=o((lglgn)2)=o(lgn)
lglgn!  多项式有界


3.2-5

lglgn=lgn1>lglgn,lgn>2


3.2-6

ϕ2=(1+52)2=3+52=ϕ+1
ϕ^2=(152)2=352=ϕ^+1


3.2-7
证明:
当i = 0时,

ϕ0ϕ^05=0=F0
当i = 1时,
ϕ1ϕ^15=1=F1
假设当i = k-1和i = k时都满足公式,则当i = k+1时
Fk+1=Fk+Fk1=(ϕk+ϕk1)(ϕ^k+ϕ^k1)5=ϕk1(ϕ+1)ϕ^k1(ϕ^+1)5=ϕk+1ϕ^k+15


3.2-8
这题要用到性质 g(n)=Θ(f(n))f(n)=Θ(g(n)) ,所以 klnk=Θ(n)n=Θ(klnk) , 要证 k=Θ(n/lnn) 等价于证 n/lnn=Θ(k) ,代入条件得

nlnn=Θ(klnkln(klnk))=Θ(klnklnk)=Θ(k)

你可能感兴趣的文章
庆祝一下_加入我们,庆祝开放组织的一年
查看>>
dropbox为什么被屏蔽_Python社区和Dropbox为增加多样性而采取的步骤
查看>>
路由器搭建个人网站_PittMesh路由器归个人所有
查看>>
raspberry pi_Picademy:Raspberry Pi基金会的老师的免费专业发展
查看>>
retropie游戏版权_RetroPie的新网站和发行版,针对Linux的三款新游戏以及更多游戏新闻...
查看>>
开源项目贡献者_在现代开源中发展贡献者基础
查看>>
在新手友好的Linux发行版Korora上大吃一惊
查看>>
Raspberry Pi 3推出了更快的CPU,板载Wi-Fi和蓝牙
查看>>
不同管理岗层级的团队影响力_高影响力团队的最高要求
查看>>
j pocket_Wallabag:Pocket的开源替代品
查看>>
cms系统和管理员系统区别_如何成为懒惰的系统管理员
查看>>
linux dd格式化磁盘_如何在Linux中使用dd而不破坏磁盘
查看>>
dropbox内容更改_Dropbox替代品,Git技巧,Linux技巧,DevOps必须阅读的内容等等
查看>>
pandoc epub_使用Pandoc将您的书变成网站和ePub
查看>>
开源 计划管理_公司开源计划的三大好处
查看>>
devops java使用_谁会在使用DevOps时最大程度地退缩?
查看>>
java 补丁差异_差异和补丁简介
查看>>
python django_8个Python软件包将简化Django的生活
查看>>
shell 点文件_Shell点文件可以为您做什么
查看>>
zsh 简单高效使用技巧_使用zsh提高生产力的5个技巧
查看>>