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,所以概...