演算法導論(第三版) 第三章練習題

2021-07-01 23:40:13 字數 4229 閱讀 7867

3.1-1

分情況討論當f

(n)≥

g(n)

時,ma

x(f(

n),g

(n))

=f(n

) ,存在c1

=12,

c2=1

,n0>

0 使得

0(f(n

)+g(

n))≤

f(n)

≤c2(

f(n)

+g(n

))對於

所有n≥

n0同理可證當g(

n)>f(

n)的情況

3.1-2(n

+a)b

=nb+

c1nb

−1+c

2nb−

2+⋯+

ab=θ

(nb)

3.1-3

大o表示法用來表示乙個演算法複雜度的上界,而「至少」一詞用來形容下界,所以這句話的意思是該演算法複雜度的上界只要不小於o(

n2) 即可,相當於沒有說明演算法的複雜度的界限,沒有意義。

3.1-42n

+1=o

(2n)

證明:存在c=

2,n0

>

0 使得0≤

2n+1

≤c2n

對於所有

n≥n0

22n≠

o(2n

) 證明:假設存在c,

n0使得 0

≤22n

≤c2n

對於所有

n≥n0

⇒2n∗

2n≤c

2n⇒2

n≤c由於不存在常數c使得等式成立,故產生矛盾,得證。

3.1-5

利用定義就可以直接證明

3.1-6

最壞情況下複雜度為o(

g(n)

) 說明所有情況時間複雜度為o(

g(n)

) ,最好情況下時間複雜度為θ(

g(n)

) 說明所有情況時間複雜度為ω(

g(n)

) ,根據定理3.1得演算法時間複雜度為θ(

g(n)

)

3.1-7f(

n)=o

(g(n

))說明對於任意正常數c,

n0,對於所有的n≥

n0都有0≤

f(n)

(n)對

於所有n

≥n0這時假設f(

n)=ω

(g(n

)),說明對於任意正常數c,

n0,對於所有的n≥

n0都有 0

≤cg(

n)n)

然而這樣的常數c是存在的,故產生矛盾,可得o(

g(n)

)∩ω(

g(n)

)=φ 。

3.1-8ω(

g(m,

n))=

θ(g(m,n

))=3.2-1

由於f(n)和g(n)單調遞增,所以對於任意x1

,都有f(

x1)x2)

g(x1

)x2)所以

f(x1)+g

(x1)

x2)+

g(x2

) f(

g(x1

))g(x2

))如果當f(x)和g(x)都非負時顯然有 f

(x1)

∗g(x

1)x2)∗

g(x2

)3.2-2lga

logbc=

logbclg

a=lga

lgclgb

lgclogba

=logba

lgc=lg

algclg

b ⇒a

logbc=

clogba

3.2-3

證明lg(n

!)=θ

(nlgn

) :lgn

!=∑i

=1nlg

i<∑i

=1nlg

n=nlg

n ∑i

=1nlg

i=∑i

=1n/

2[lgi

+lg(n

−i)]

=∑i=

1n/2

[lgi(

n−i)

]>∑i

=1n/

2lgn2

4=nlg

n−n=

12nlg

n ⇒lg

(n!)

=θ(n

lgn)證明

n!=ω

(2n)

: ∵當

n>4時

,i(n

−i)>22

∴n!=∏i=

1n/2

i(n−

i)>∏i

=1n/

222=

2n ∴

n!=ω

(2n)

證明n!=

o(nn

) : ∵

當n>1時

,n!=

∏i=1

ni<∏i

=1nn

=nn

∴n!=

o(nn

)3.2-4證明f

(n) 是否多項式有界等價於證明lgf

(n)=

o(lgn

) ,這是因為如果f(

n)多項式有界,則存在正常數c,

k,n0

使得對於所有的

n>n0

都有f(

n)k ,即lgf

(n)lgn

,所以lgf

(n)=

olgn ,反之亦然。對於⌈

lgn⌉!

我們有lg(

⌈lgn⌉

!)=θ

(⌈lgn

⌉lg⌈lg

n⌉)=

θ(lgn

lglgn)

=ω(lg

n)⌈lg

n⌉!  非多項式有界

對於 ⌈

lglgn⌉

!  我們有 lg

(⌈lglgn⌉

!)=θ

(⌈lglgn⌉

lg⌈lglgn⌉

)=θ(

lglgnlg

lglgn)

=o((

lglgn)

2)=o

(lgn)

⌈lglgn

⌉!多項式有界

3.2-5lg∗

lgn=lg

∗n−1

>

lglg∗n

,當lg∗

n>2時

3.2-6ϕ2

=(1+

5√2)

2=3+

5√2=

ϕ+1

ϕ^2=

(1−5

√2)2

=3−5

√2=ϕ

^+13.2-7

證明:當i = 0時,ϕ0

−ϕ^0

5√=0

=f0當i = 1時, ϕ

1−ϕ^

15√=

1=f1

假設當i = k-1和i = k時都滿足公式,則當i = k+1時 f

k+1=

fk+f

k−1=

(ϕk+

ϕk−1

)−(ϕ

^k+ϕ

^k−1

)5√=

ϕk−1

(ϕ+1

)−ϕ^

k−1(

ϕ^+1

)5√=

ϕk+1

−ϕ^k

+15√

3.2-8

這題要用到性質g(

n)=θ

(f(n

))⇔f

(n)=

θ(g(

n)) ,所以kln

k=θ(

n)⇔n

=θ(k

lnk) , 要證k=

θ(n/

lnn) 等價於證n/

lnn=θ

(k) ,代入條件得nln

n=θ(

klnkln

(klnk

))=θ

(klnk

lnk)=

θ(k)

《構建之法(第三版)》第三章

1.軟體開發流程不光指團隊的流程,還包括個人開發流程。把每個人的工作有序地組織起來,就是團隊的流程。有序 並不是 無爭論 每個人的工作質量直接影響最終軟體的質量。2.初級軟體工程師成長階段 3.軟體開發的工作量和質量的衡量標準 軟體領域可以分為兩個方面 一方面是技藝創新的大爆發 而另一方面是堅持不懈...

第三章練習題

3.1重量計算。月球上物體的體重是在地球上的16.5 假如你在地球上每年增長0.5kg,編寫程式輸出未來10年你在地球和月球上的體重狀況。weight eval input 請輸入您的體重 kg for i in range 1 11 weight earth weight 0.5 i weight...

演算法導論第三版習題5 2

正好僱傭一次說明第一次僱傭的就是所有應聘者中最好的,所以概率為1n 正好僱傭 n 次說明所有應聘者按優秀從低到高依次出現,第一位是最差的,概率為1n 第二位其次,概率為1n 1,所以整體概率為1n 正好僱傭兩次,說明第乙個應聘者不是最好的,概率為n 1n,第二個應聘者是最好的,概率為1n 1,所以概...