演算法設計與分析基礎第二章部分課後題答案

2021-10-22 07:45:24 字數 2869 閱讀 3766

exercise 2.1

1.question i ii iii

a n 相加 不會

b 二進位製表中的數 相乘 不會

c n 兩個數字不斷比較 不會

d 兩個輸入數中較大的數的大小,或兩個輸入數中較小的數的大小,或兩個輸入數的大小之和。 模除運算 會

e 二進位製表中的位數 從剩餘的主要候選名單中剔出若干 不會

f n 兩位數字乘法 不會

4.a:最好的情況下是2只,最差的情況下是12只

b:都在襪子丟失中,丟失的總情況數為c_102=45,假設丟失的恰好是同一雙的概率是:(c_51)/(c_10^2 )=1/9,而丟失的是不同的兩雙的概率是:(c_5^2 c_2^1 c_21)/(c_102 )=8/9,通過求期望值是4×1/9+3×8/9=28/9。

9.a.n(n+1)=2000n^2

b.100n2<0.01n3

c.log_2⁡n=ln⁡n

d.log⁡(_22)n>log_2⁡〖n2 〗

e.2(n-1)=2n

f.(n-1)!exercise 2.2

3. a.〖(n2+1)〗10≥(〖n2)〗10=n20∈θ(n20)

lim┬(n→∞)⁡〖〖(n2+1)〗10/n^20 〗=lim┬(n→∞)⁡〖(〖(n2+1)/n2 )〗^10=〗 lim┬(n→∞)⁡〖(1+〖1/n^2 )〗^10=〗 1

b.√(〖10n〗2+7n+3)≥√(〖10n〗2 )=√10 n∈θ(n)

lim┬(n→∞)⁡〖√(〖10n〗2+7n+3)/n=lim┬(n→∞)⁡√(10+7/n+3/n2 ) 〗=10

c.2nlg(n+2)2+(n+2)2 lg n/2=4nlg(n+2)+(〖(n+2)/√2)〗^2 lg⁡(〖n/2)〗^2

=4nlg(n+2)+(n+2)^2/2 lg n^2/4

=4nlg(n+2)+1/2 (n2+4n+4)(lgn2-lg4)

≥4nlg(n+2)+n^2/2 lgn2+2nlgn2

≥8nlgn+n^2/2 lgn2∈θ(nlgn)+θ(n2 lgn^2)

=θ(n^2 lgn^2)

d.2(n+1)+3(n-1)=2n×2+1/3×3n=θ(2^n )+θ(3^n )=θ(3^n )

lim┬(n→∞)⁡〖(2(n+1)+3(n-1))/3^n 〗=1/3<1

e.log_2⁡n-1≤[log_2⁡n ]≤log_2⁡n

log_2⁡n-1≥log_2⁡n-1/2 log_2⁡〖n=1/2〗 log_2⁡n

∴[log_2⁡n ]∈θ(log_2⁡n )=θ(log⁡n)

4.a.隨著n的增大這些函式都會趨於正無窮,沒有乙個確定的函式值能證明他們的順序。

b.(1)lim┬(n→∞)⁡〖log⁡n/n〗=lim┬(n→∞)⁡〖〖(log〗⁡〖n)』〗/n』〗=lim┬(n→∞)⁡〖1/n=0〗

∴log⁡〖n∈ο(n)〗

(2) lim┬(n→∞)⁡〖n/(n log_2⁡n )〗=lim┬(n→∞)⁡〖1/log_2⁡n =0〗

∴n∈ο(n log_2⁡n)

(3)由(1)式易得θ(log⁡n)∈θ(n^2)

(4)lim┬(n→∞)⁡〖n2/n3 〗=lim┬(n→∞)⁡〖1/n〗=0

∴n2∈ο(n3)

(5) lim┬(n→∞)⁡〖n3/2n 〗=lim┬(n→∞)⁡〖(〖(n〗3)』)/(〖(2〗n)』)=lim┬(n→∞)⁡〖(3n2)/(2n ln2)=2/1n2〗 〗 lim┬(n→∞)⁡〖n2/2n =6/(〖1n〗^2 2)〗 lim┬(n→∞)⁡〖1/2^n 〗=0

∴n3∈ο(2n)

(6)利用史特林公式易得2^n∈ο(n!)

5. 由前至後分別屬於的型別為:階乘,對數,指數,冪函式,對數的平方,冪函式,指數函式,具體的優先順序為:

〖5lg⁡(n+100)〗10,〖ln〗2 n,∛n,0.001n4+3n3+1,3n,22n,(n-2)!

exercise 2.3

4.演算法求得的是n項的平方和,基本操作是乘法,這個操作執行了n次,效率型別為θ(n),假如我們使用二進位制標的位數作為度量標準那麼效率型別為θ∈(2^b),其中b=[log_2⁡n+1],通過:

〖(n+1)〗3=n3+3n^2+3n+1

〖(n+1)〗3-n3=3n^2+3n+1

〖n3-(n-1)〗3=3(〖n-1)〗^2+3(n-1)+1

⋯⋯33-23=3×2^2+3×2+1

23-13=3×1^2+3×1+1

求和得:

〖(n+1)〗3-1=3(12+22+32+⋯+n^2 )+3(1+2+3+⋯+n)+n

由於1+2+3+⋯+n=(n(n+1))/2

因此:n3+3n2+3n=3(12+22+32+⋯+n2 )+3 (n(n+1))/2+n

即:12+22+32+⋯+n2=(n(n+1)(2n+1))/6

10.10×10×10=1000

exercise 2.4

4.a.q(n)=q(n-1)+2×n-1

q(n-1)=q(n-2)+2×(n-1)-1

⋯⋯即:q(n)=1+3+5+⋯+2×n-1=n(1+2×n-1)/2=n^2

**:#include

using namespace std;

int qu(int n)

int main()

else

int main()

cout<<「最小的數為:」

}執行結果:

該程式可以求列表最小值

通過temp值和陣列末尾的元素的比較,因此設次數為c(n),則c(n)=n-1。

第二章 遞迴演算法設計與分析

1.1.2遞迴應滿足的條件 1.1.3何時使用遞迴 直接遞迴 自己呼叫自己的遞迴 間接遞迴 a呼叫b,b呼叫a 如果乙個遞迴過程或遞迴函式中遞迴呼叫語句是最後一條執行語句,則稱這種遞迴呼叫為尾遞迴。例1.1 設計求n!n為正整數 的遞迴演算法int fun int n 這是乙個直接遞迴,又由於遞迴呼...

演算法設計與分析 第二章 遞推演算法

遞推法是一種重要的數學方法,在數學的各個領域中都有廣泛的運用,也是計算機用於數值計算的乙個重要演算法。這種演算法特點是 乙個問題的求解需一系列的計算,在已知條件和所求問題之間總存在著某種相互聯絡的關係,在計算時,如果可以找到前後過程之間的數量關係 即遞推式 那麼,從問題出發逐步推到已知條件,此種方法...

第二章 演算法基礎

引言 演算法導論 在本章將向我們介紹乙個演算法設計和分析框架,在後續的章節也將在這個框架的基礎上來分許演算法。名詞解釋 1 偽 偽 就是以最清晰 最簡潔的表示方法來說明演算法,而忽略資料抽象 模組性和錯誤處理的問題 2 迴圈不變式 每次迴圈從陣列a中取出第j個元素插入有序數列a 1 j 1 然後遞增...