CLRS第三章思考题

来源:互联网 发布:linux修改系统时间指令 编辑:程序博客网 时间:2024/06/06 02:28

本章思考题证明太繁琐,因此只证明某一些,其余的可类似证明。

思考题3-1

本题只证明前两个,后面可类似得到。
首先,很容易想到 p(n)=Θ(nd),若 kd,则 Θ(nd)=O(nk),若 kd,则 Θ(nd)=Ω(nk)

现在来证明 p(n)=O(nd)。设c=ad+b 使得

i=0d=adnd+ad1nd1++a1n+a0cnd

两边同时除以 nd 有:
c=ad+bad+ad1n+ad2n2++a0ndbad1n+ad2n2++a0nd

b=1n0=max(dad1,dad2,,da0d)

我们有 n0c 使得 p(n)cndfor nn0
我们得到了 O(nd) 的定义,若选 b=1 可类似得到 Ω(nd) ,因此得到 Θ(nd)

前三问得证。后面两问可类似证明。

思考题3-2

基本上都可以用洛必达法,下面只给出结果。

A B O o Ω ω Θ lgkn nε 是 是 否 否 否 nk cn 是 是 否 否 否 n nsinn 否 否 否 否 否 2n 2n/2 否 否 是 是 否 nlgc clgn 是 否 是 否 是 lg(n!) lg(nn) 是 否 是 否 是

思考题3-3

a) 首先化简其中几个式子。

(2)lgn=2lgn=nlg2n=2lglg2n=o(22lgn)lg(n!)=Θ(nlgn)n1lgn=nlg2lgn=nlogn2=2nlglgn=(2lgn)lglgn=(2lglgn)lgn=(lgn)lgn2lgn=n4lgn=(22)lgn=2lgn2=n2

在此省略公式编辑,故从左到右,从上到下依次编号为1,2,,30。复杂度从低到高依次为:
{12,18},1,{14,25},2,13,24,17,9,26,3,{19,27},{10,29},{4,22},8,6,{16,20},7,28,15,21,5,23,11,30

说明:大括号内部表示复杂度一样。

b) f(n)=22(n+1)sinx

思考题3-4

a) 错误,n=O(n2),反过来就不是。
b) 错误,反例:n,n2
c) 正确, 由题得 :
c,n0:nn0:0f(n)cg(n) 0lgf(n)lg(cg(n))=lgc+lgg(n)

现在需要证明 lgf(n)dlgg(n),由于 lgg(n)1,只需证明 dlgf(n)lgg(n),很容易得到 d :

d=lgc+lgg(n)lgg(n)=lgclgg+1lgc+1

d) 错误,反例 f(n)=2n,g(n)=n
e) 错误,当 f(n)<1 时即错。
f) 正确,由题得 0f(n)cg(n),要证明 0df(n)g(n),取 d=1/c 即可。
g) 错误,反例 f(n)=2n
h) 正确,f(n)+o(f(n))=Θ(max(f(n),o(f(n))))=Θ(f(n))

思考题3-5

a) 比较 cg(n)f(n),要么对无穷多个整数成立,要么对有限个成立,若前者成立,则有 Ω。若后者成立,则有 n0 使得 n>n0:f(n)<cg(n)。若 f(n)=g(n) 则两者都成立。
换成 Ω 则不成立,如 n=Ω(nsinn),但 nΩ(nsinn)

b) 优点:可以刻画所有函数之间的关系;
缺点:刻画不精确。

c) 对于任意两个函数 f(n)g(n),若有 f(n)=Θ(g(n)) 则有 f(n)=Ω(g(n))f(n)=O(g(n))

d) Ω(g(n))={f(n):c,k,n0使nn00cg(n)lgk(n)f(n)}

Θ~={f(n):c1,c2,k1,k2,n使nn00c1g(n)lgk1(n)f(n)c2g(n)lgk2(n)}

对于任意两个函数 f(n)g(n),我们有 f(n)=Θ~(g(n)),当且仅当 f(n)=O~(g(n))f(n)=Ω~(g(n))

思考题3-6

f(n) c fc(n) n1 0 n lgn 1 lgn n/2 1 lgn n/2 2 lgn1 n 2 lglgn n 1 不收敛 n1/3 2 log3lgn n/lgn 2 ω(lglgn),o(lgn)
0 0