算法导论第3章习题解析

来源:互联网 发布:泰国蛇毒洗面奶知乎 编辑:程序博客网 时间:2024/06/05 11:38

3.1-1:

证明:由题意可知 , f(n),g(n) 渐进非负 , 则存在 n>0 ,使得当 nn 时,f(n)0,g(n)0 同时成立.

h(n)=max(f(n),g(n)).那么 , h(n) 可以表示为:

h(n)=|f(n)g(n)|+g(n)+f(n)2
此题要求证明 , c1>0,c2>0 , 使得当 nn0 时,
0c1(f(n)+g(n))h(n)c2(f(n)+g(n))
成立.

注意到 :

12(f(n)+g(n))|f(n)g(n)|+g(n)+f(n)2f(n)+g(n)

所以取 c1=12,c2=1,n0=n , 可使得当 nn0 时 ,

0c1(f(n)+g(n))h(n)c2(f(n)+g(n))

即 : max(f(n),g(n))=Θ(f(n)+g(n)) 成立 , 从而得证.

3.1-2:

证明:取 n0=2|a|,则当 nn0 ,即 n2|a| 时,我们有:

n2an2,从而有 n2n+a3n2.

则,(12)bnb(n+a)b(32)bnb 对于任意 nn0 均成立.

所以,可取 c1=(12)bc2=(32)bn0=2|a|,当 nn0 时,

c1nb(n+a)bc2nb

成立,即 (n+a)b=Θ(nb),得证.

3.1-3:

因为 O(n2) 描述的是算法运行时间的上界,而“至少”描述的是算法的运行时间的下界,因此“算法 A 的运行时间至少是 O(n) ”这一表述是无意义的。

3.1-4:

2n+1=O(2n) 成立,而 22n=O(2n) 不成立

3.1-5:

证明:先证明充分性

f(n)=O(g(n)) 可知:

存在正常数 cn0,使得对所有 nn0,有 0f(n)cg(n).

又由 f(n)=Ω(g(n)) 可知:

存在正常数 cn0,使得对所有 nn0,有 0cg(n)f(n).

综上,存在正常数 c1=cc2=c,使得当 nmax(n0,n0)) 时,下式

cg(n)f(n)cg(n) 成立,即 f(n)=Θ(g(n)) 成立.

再证明必要性:

f(n)=Θ(g(n)) 可知,存在正常数 c1,c2,n0 使得当 nn0 时,下式

0c1g(n)f(n)c2g(n) 成立,即 f(n)=O(g(n))f(n)=Ω(g(n)).

综上,得证.

3.1-6:

证明:其最坏情况运行时间为 O(g(n)),则 f(n)O(g(n)),其最好情况的运行时间为 Ω(g(n)),则 f(n)=Ω(g(n)) 由 3.1-5 的证明方法可以证明本题.

3.1-7:

本题可用反证法来证明:

证明:假设集合 A=o(g(n))w(g(n)) 不为空,那么存在 f(n)A,满足:

对于任意正常量 c10,存在常量 n00,使得对所有 nn0,有 0f(n)cg(n);同时对于任意常量 c20,存在常量 n00,使得对所有 nn0,有 0cg(n)f(n).

那么当 nmax(n0,n0),有 c2g(n)<f(n)<c1g(n),因为 c1c2 可以是任意正常量,那么当 c1=c2=c(其中 c 为任意常量),满足条件的 f(n) 并不存在,所以集合 A 必为空.

3.1-8:
略.

3.2-1:

证明:由题意可知,f(n)g(n) 单调递增,则取 n1n2,当满足 n1n2 时,有

f(n1)f(n2)g(n1)g(n2),则 f(n1)+g(n1)f(n2)+g(n2)f(g(n1))f(g(n2)).

所以 f(n)+g(n)f(g(n)) 为单调增函数,如果 f(n)g(n) 都为非负函数,那么有:

0f(n1)f(n2)0g(n1)g(n2),从而有 0f(n1)g(n1)f(n2)g(n2).因此

f(n)g(n) 也是增函数.

3.2-2:

证明:令 n=logbcc=bn,则 clogba=bnlogba=an=alogbc,得证.

3.2-3:

证明:(1) 先证明 lg(n!)=Θ(nlgn).

由斯特林渐进公式,我们有:

n!=2πn(ne)neαn,(112n+1<αn<112n)

对于上式左边的乘数因子 eαn,当 n 时,eαn1,从而 n!2πn(ne)n,此时,我们有:

lg(n!)lg(2πn(ne)n)
=lg(2πn)+lg(ne)n
=12lg(2π)+12lg(n)+nlg(n)nlg(e)
=Θ(1)+Θ(lg(n))+Θ(nlg(n))Θ(n)
=Θ(nlg(n))

得证.

(2) 证明 n!=o(nn).

显然,当n>1 时,n(n1)21<nnnnnn 成立,所以 n!=o(nn).

(3) 证明n!=w(2n).

与证明 (2) 类似,显然当 n4 时,n!>222n2=2n,所以 n!=w(2n)

3.2-4:

(1). 先来考察 lgn!

如果 f(n) 是多项式有界的,那么存在 c0,k0,n00 ,对所有的 nn0 ,有 f(n)cnk,此时,我

们有:

lg(f(n))lg(cnk)=O(lgn)

反之亦然.

由 3.2-3,lg(n!)=Θ(nlg(n)),又 nnn+12n,所以 n=Θ(n)

对于 lgn!,我们有:

lg(lgn!)=Θ(lgnlg(lg(n)))=Θ(lgnlg(lgn))=w(lgn)

从而,lg(lgn)O(lgn),所以,lgn! 不是多项式有界的.

(2) 再来考察 lg(lgn)!,在渐进意义下,lg(lg(lgn)!)lg(n),即lg(lg(lgn)!)=O(lg(n)),所以 lg(lgn)! 是多项式有界的.

3.2-5:

lg(n)表示作用到 nlg 函数的次数,从而使得其结果小于等于0.

lgn=x,则 lg(lgn)=lg(x)lg(lg(n))=x1.

在渐进意义下,x1lg(x),所以 lg(lg(n))的渐进大于lg(lg(n)).

3.2-6:

3.2-7:

根据定义:

ϕ=1+52,ϕ^=152

而斐波那契数定义如下:
Fi=01Fi1+Fi2i=0i=1i2

(1)基本情况:

F0=ϕ0ϕ0^5=0
F1=ϕ1ϕ1^5=1

满足
Fi=ϕiϕi^5

(2)归纳:

假设 k2,当 i=k,i=k1时,Fi=ϕiϕi^5 成立,那么当i=k+1 时,根据斐波那契数定义,有:

Fk+1=Fk+Fk1=ϕkϕk^5+ϕk1ϕk1^5=(ϕk+ϕk)(ϕk^+ϕk1^)5=ϕk1(ϕ+1)ϕk1^(ϕ^+1)5=ϕk+1ϕ2ϕk1^ϕ2^5=ϕk+1ϕk+1^5

即:Fk+1=ϕk+1ϕk+1^5,从而得证.

3.2-8:

klnk=Θ(n) 可知,存在常量 c1c2n0>0,当 nn0 时,有:

0c1nklnkc2n
这里假设 n0e,从而 lnn>1,进一步有:
c1nlnnklnklnnc2nlnn(1).
如果对不等式 c1nklnkc2 的各项同时取对数,则有:
ln(c1n)ln(klnk)ln(c2n)
进一步有:
lnc1+lnnlnk+lnlnklnc2+lnn
如果 k 足够大,lnk+lnlnk<2lnk,从而有:
lnc1+lnn<2lnk
lnc12lnn+12<lnklnn
12k<klnklnn(2).
同时,因为 lnk+lnlnk>lnk,从而又有:
lnk<lnc2+lnn
lnklnn<lnc2lnn+1
lnklnn<2
klnklnn<2k
(1),(2) 有:
12k<klnklnnc2nlnnk<2c2nlnn(4)
(1),(3) 有:
c1nlnnklnklnn<2kk>c1n2lnn(5)
(4),(5)有:
c22nlnn<k<2c2nlnn
根据 Θ 记号的定义,
k=Θ(nlnn).

思考题:

3-1:

(a):kd

p(n)=i=0dainii=0d|ai|ni(n0)i=0d|ai|nk(n1)

根据 O 记号定义,取 n0=1,c=di=0|ai|,则当 nn0,有 0p(n)cnk

所以 p(n)O(nk) 成立.

(b):kd

cnkcnd,n1

如果有 cnddi=0(aini),那么也就有 cnkdi=0(aini),从而可根据 O 记号的定义来证明 p(n)=Ω(nk).

cndi=0d(aind)=i=0d1(aini)+adnd
cndi=0d1(aini)+adnd(1)

(1) 中,令 c=ad2,并代入(1) 式,则有:

adnd2i=0d1(aini)+adnd
0i=0d1(aini)+adnd2
i=0d1(aini)adnd2(2)

由于:

i=0d1(aini)=i=0d1(aini)i=0d1(|ai|ni)(i=0d1|ai|)nd1

所以,只要有

(i=0d1|ai|)nd1adnd2(3)

成立,那么 (2) 式也就成立,由 (3)

nd1i=0|ai|ad2

所以,当c=ad2 nmax{d1i=0|ai|ad2,1}cnkdi=0aini=p(n),进一步有 p(n)=Ω(nk)

(c).k=d

(a) 部分可知,取 n0=1,c1=di=0|ai|,则当 nn0,有 0p(n)c1nk.

(b) 部分可知,取 n0=max{1,d1|ai|i=0ad2},c2=ad2 则当 nn0,有 c2nkp(n)c2nk.

综上,p(n)=Θ(nk)

(d).k>d.

, c>0, n0(c),使:

p(n)=i=0daini<cnk,nn0. (1)
成立。由于:
p(n)=i=0daini(i=0d|ai|)nd, (n1)
所以只要
(i=0d|ai|)nd<cnk. (2)
成立,那么 (1) 式就成立. 由 (2) 式,有:
ndi=0|ai|ckd
 c>0,
n>n0=max{1,(di=0|ai|c)1kd}
时,就有p(n)<cnk,, p(n)=o(nk).

(e).k<d.

 c>0  n0>0( c)使

cnk<p(n)=i=0daini
(b)
i=0d(aini)>(ad2nd),n>max{1,d1i=0|ai|ad/2}>cnkadndk2c>cnk,n>(2cad)kd

n0=max{1,d1i=0|ai|ad/2,(2cad)kd}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信的聊天记录被限制了怎么办 门面租金交了一年对方不租了怎么办 离职后社保怎么办 无忧保专业可靠 淘宝店铺被投诉到监管局怎么办 淘宝买家每天都来店铺骚扰怎么办 电脑安装软件时解压出现问题怎么办 公婆不尊重你的父母做媳妇的怎么办 手机扣扣接收不上文件怎么办 买了商铺付了首付商铺倒闭了怎么办 宝宝刚满月不喜欢在床上睡怎么办 别人给我打了收货款不发货怎么办 业务员私收货款公司不发货怎么办 付款后商家没发货也不退钱怎么办 苹果7P修过主板耗电严重怎么办 oppo手机进水了开不了机怎么办 手机弯了变形但不影响使用怎么办 拼多多留错电话怎么办如果已经发货 苹果6手机后壳变形了怎么办 京东退货保修卡丢了怎么办 如果京东买的显示器屏碎了怎么办 在微信上买东西退货不退钱怎么办 手机分期付款不还款被起诉了怎么办 朋友用我的花呗分期不还钱怎么办 朋友用我身份证办分期不还钱怎么办 我手机号被别人绑定信用卡了怎么办 5s用不了4g网络怎么办 红米手机返回键没了怎么办 小米手机进水了开不了机怎么办 手机返回键和菜单键失灵怎么办 苹果5s指纹按键坏了怎么办 小米手机安卓系统耗电量大怎么办? 苹果5s充不进去电怎么办 苹果手机6s返回键失灵怎么办 本人被骗同时被利用骗了别人怎么办 京东取消订单后货到了该怎么办 京东电信日租卡流量顶置了怎么办 苹果6s进水后闪光灯不亮怎么办 华为手机情景义停车事项过期怎么办 拼多多付款后商品下架了怎么办 淘宝上买化妆品买到假货了怎么办 找苹果官网解id发票丢了怎么办