3.1-1:
证明:由题意可知 , f(n),g(n) 渐进非负 , 则存在 n′>0 ,使得当 n≥n′ 时, f(n)≥0,g(n)≥0 同时成立.
令 h(n)=max(f(n),g(n)) .那么 , h(n) 可以表示为:
注意到 :
所以取 c1=12,c2=1,n0=n′ , 可使得当 n≥n0 时 ,
即 : max(f(n),g(n))=Θ(f(n)+g(n)) 成立 , 从而得证.
3.1-2:
证明:取 n0=2|a| ,则当 n≥n0 ,即 n≥2|a| 时,我们有:
−n2≤a≤n2 ,从而有 n2≤n+a≤3n2 .
则, (12)bnb≤(n+a)b≤(32)bnb 对于任意 n≥n0 均成立.
所以,可取 c1=(12)b , c2=(32)b , n0=2|a| ,当 n≥n0 时,
成立,即 (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)) 可知:
存在正常数
c
和
又由 f(n)=Ω(g(n)) 可知:
存在正常数 c′ 和 n′0 ,使得对所有 n≥n′0 ,有 0≤c′g(n)≤f(n) .
综上,存在正常数 c1=c′ , c2=c ,使得当 n≥max(n0,n′0)) 时,下式
c′g(n)≤f(n)≤cg(n) 成立,即 f(n)=Θ(g(n)) 成立.
再证明必要性:
由 f(n)=Θ(g(n)) 可知,存在正常数 c1,c2,n0 使得当 n≥n0 时,下式
0≤c1g(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 ,满足:
对于任意正常量 c1≥0 ,存在常量 n0≥0 ,使得对所有 n≥n0 ,有 0≤f(n)≤cg(n) ;同时对于任意常量 c2≥0 ,存在常量 n′0≥0 ,使得对所有 n≥n′0 ,有 0≤cg(n)≤f(n) .
那么当
n≥max(n0,n′0)
,有
c2g(n)<f(n)<c1g(n)
,因为
c1,c2
可以是任意正常量,那么当
c1=c2=c
(其中
c
为任意常量),满足条件的
3.1-8:
略.
3.2-1:
证明:由题意可知,
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) 都为非负函数,那么有:
0≤f(n1)≤f(n2) , 0≤g(n1)≤g(n2) ,从而有 0≤f(n1)g(n1)≤f(n2)g(n2) .因此
f(n)g(n) 也是增函数.
3.2-2:
证明:令 n=logbc⇒c=bn ,则 clogba=bn⋅logba=an=alogbc ,得证.
3.2-3:
证明:(1) 先证明 lg(n!)=Θ(nlgn) .
由斯特林渐进公式,我们有:
对于上式左边的乘数因子 eαn ,当 n→∞ 时, eαn→1 ,从而 n!≈2πn−−−√⋅(ne)n ,此时,我们有:
得证.
(2) 证明 n!=o(nn) .
显然,当 n>1 时, n⋅(n−1)⋯2⋅1<n⋅n⋅n⋯nn个n 成立,所以 n!=o(nn) .
(3) 证明 n!=w(2n) .
与证明 (2) 类似,显然当 n≥4 时, n!>2⋅2⋯2n个2=2n ,所以 n!=w(2n)
3.2-4:
(1). 先来考察 ⌈lgn⌉!
如果 f(n) 是多项式有界的,那么存在 c≥0,k≥0,n0≥0 ,对所有的 n≥n0 ,有 f(n)≤cnk ,此时,我
们有:
反之亦然.
由 3.2-3, lg(n!)=Θ(nlg(n)) ,又 n≤⌈n⌉≤n+1≤2n ,所以 ⌈n⌉=Θ(n)
对于 ⌈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)
表示作用到
n
的
令 lg∗n=x ,则 lg(lg∗n)=lg(x) , lg∗(lg(n))=x−1 .
在渐进意义下, x−1≥lg(x) ,所以 lg∗(lg(n)) 的渐进大于 lg(lg∗(n)) .
3.2-6:
略
3.2-7:
根据定义:
而斐波那契数定义如下:
(1)基本情况:
满足
(2)归纳:
假设
k≥2
,当
i=k,i=k−1
时,
Fi=ϕi−ϕi^5√
成立,那么当
i=k+1
时,根据斐波那契数定义,有:
即: Fk+1=ϕk+1−ϕk+1^5√ ,从而得证.
3.2-8:
由
klnk=Θ(n)
可知,存在常量
c1
,
c2
,
n0>0
,当
n≥n0
时,有:
思考题:
3-1:
(a): k≥d
根据
O
记号定义,取
所以 p(n)≤O(nk) 成立.
(b): k≤d
如果有
cnd≤∑di=0(aini)
,那么也就有
cnk≤∑di=0(aini)
,从而可根据
O
记号的定义来证明
在 (1) 中,令 c=ad2 ,并代入 (1) 式,则有:
由于:
所以,只要有
成立,那么 (2) 式也就成立,由 (3) 式
所以,当 c=ad2和 n≥max{∑d−1i=0|ai|ad2,1} 有 cnk≤∑di=0aini=p(n) ,进一步有 p(n)=Ω(nk)
(c). k=d
由 (a) 部分可知,取 n0=1,c1=∑di=0|ai|, 则当 n≥n0 ,有 0≤p(n)≤c1nk .
由 (b) 部分可知,取 n0=max{1,∑d−1|ai|i=0ad2},c2=ad2 则当 n≥n0 ,有 c2nk≤p(n)≤c2nk.
综上, p(n)=Θ(nk)
(d). k>d .
即是要证明,对任意的 c>0,总能找到 n0(其值依赖于c),使得:
(e). k<d .
即是要证明,对于任意的 c>0 存在 n0>0(其值依赖于 c),使得:
选择: