算法导论第三章练习

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

猜你喜欢

转载自blog.csdn.net/sscout/article/details/81461860