演算法導論第三章練習

sscout發表於2018-08-06

3-1練習

3.1-1

存在c₁=1/2時,max(f(n),g(n))≥ 1/2(f(n)+ g(n))

存在c₂ = 1時,max(f(n),g(n))≤ (f(n)+ g(n))

所以 max(f(n),g(n))= Θ(f(n)+ g(n))

3.1-2

∵ b > 0, c₁為正常量

∴ c₁n^b ≥ 0

運用反證法

∵ c₁n^b ≤ (n+a)^b ≤ c₂(n^b)

∴ c₁ ≤ (1+a/n)^b  ≤ c₂

∵ lim(n->∞)(1+a/n)= 1

∴ c₂可以取1及大於1的數,c₁可以取1及小於1的數

∵ c₁,c₂存在

∴ 反證成立

∴ 對任意實常量a和b,b>0,有(n+a)^b = Θ(n^b)

3.1-3

因為我們這裡的O(n²)是對任意的輸入有效,而插入排序在輸入為增序排列的陣列下執行時間為O(n),所以無意義

3.1-4

2^(n+1) = O(2ⁿ)成立

∵ 2^(n+1) > 0 

又 ∵ 當c ≥ 2時,2^(n+1) ≤ c2ⁿ

∴ 2^(n+1) = O(n²)

2²ⁿ = O(2ⁿ)不成立

假設成立

那麼 2²ⁿ ≤ c2ⁿ

∴ 2ⁿ ≤ c

∵ c為正常數,2ⁿ在n趨於無限大時無限大,不存在這樣的c

∴ 不成立

3.1-5

∵ f(n) = O(g(n))

∴ 0 ≤ f(n) ≤ cg(n)

∵ f (n) = Ω(g(n))

∴ 0 ≤ cg(n) ≤ f(n)

∴ 0 ≤ c₁g(n) ≤ f(n) ≤ c₂g(n)

∴ f(n) = Θ(g(n))

3.1-6

同 3.1-5證明

3.1-7

證明:

∵ f(n) = o(g(n)) 

∴ 0 ≤ f(n) < cg(n)

∵ f(n) = w(g(n))

∴ 0 ≤ cg(n) < f(n)

∴ (cg(n),∞) ∩ [0,cg(n)) = ∅

∴ o(g(n)) ∩ w(g(n)) = ∅

3.1-8

Ω(g(n,m))= {f(n,m):存在正常量c,n0和m0,使得對所有n≥n0或m≥m0,有0 ≤ cg(n,m) < f(n,m)}

Θ(g(n,m))= {f(n,m):存在正常量c,n0和m0,使得對所有n≥n0或m≥m0,有0 ≤ c₁g(n,m) ≤ f(n,m) ≤ c₂g(n,m)}

3.2練習

3.2-1

∵ f(n)和g(n)單調遞增

∴ 對於n+1 > n,有f(n+1) > f(n) , g(n+1) > g(n)

∴ 對於n+1 > n,有f(n+1)+g(n+1) > f(n)+g(n)

∴ f(n)+g(n)是單調遞增的

同理,

∵  g(n+1) > g(n)

∴ f(g(n+1)) > f((g(n))

即f(g(n))是單調遞增的

又 ∵ f(n+1) > f(n) , g(n+1) > g(n),f(n),g(n)非負

∴ f(n+1)g(n+1) > f(n)g(n)

∴ f(n)g(n)是單調遞增的

3.2-2

反證法

∵ a^(logb(c)) = c^(logb(a))

∴ a^(loga(c)/loga(b)) = c^(loga(a)/loga(b))

∴  a^(loga(c)) = c 

即 c = c

所有等式成立

3.2-3

(1)

(2)要證明 n! = w(2ⁿ)

∴ 要證明 lim(n趨於∞)n!/2ⁿ = ∞

根據斯特林近似公式 n! ≥ (n/e)ⁿ

∴ 只要證明 lim(n趨於∞)(n/e)ⁿ/2ⁿ = ∞

∴ lim(n趨於∞)((n/2e)ⁿ * 2ⁿ) /2ⁿ = ∞

即證明 (n/2e)ⁿ = ∞

∴ 當 n ≥ 2e時,n! = w(2ⁿ)

(3)要證明 n! = o(nⁿ)

∴  要證明 lim(n趨於∞)nⁿ/n! = ∞

根據斯特林近似公式

∵ Θ(1/n) ≤ 1

∴ n! ≤ 2√2∏n * (n/e)ⁿ

∴  要證明 lim(n趨於∞)nⁿ/(2√2∏n * (n/e)ⁿ) = ∞

∴ lim(n趨於∞)eⁿ/2√2∏n = ∞

∴  n! = o(nⁿ)

3.2-4

3.2-5

3.2-6

3.2-7

3.2-8

相關文章