哈工大算法设计与分析-ch1ch2答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该命题是正确的。 证明:有符号的定义可知,对任意的 g(n) ∈ o(f (n)),总有办 法选取 h(n) ∈ Θ(f (n)) 使得等式成立。也可以看做,对任意的 g(n) ∈ o(f (n)) 都有,f (n) + g(n) 是 f (n) 的同阶函数。根据定义左 侧的函数集合应满足对任意 c0 > 0,总存在 n0 > 0,使得 n > n0 的时候,有如下关系
n3 = Ω(n0+0.1)
故原方程的解为 T (n) = Θ(n3)
12
解方程
T
(n)
=
2T
√ ( 4 n)
+
(log2
n)2
解:设 2t = n,则原方程可以写为
T (2t) = 2T (2t/4) + t2
4
令 S(t) = T (2t),则有 S(t/4) = T (2t/4),从而有 S(t) = 2S(t/4) + t2
k log log n
lim
(1)
n→∞ log cn
k
= lim
(2)
n→∞ ln n ln 2
=0
(3)
2
也就是说,对任意的常数 c,总存在 n0 使得当 n > n0 的时候, 有 logk n < cn,即 logk n = o(n)。
6 用迭代法解方程 T (n) = T (9n/10) + n
又由于 n = O(4log5 n),从而有
T (n) ≤ Θ(n)
5
0 ≤ O(f (x)) + O(g(x))
1
≤ c1f (x) + c2g(x) ≤ c3f (x) + c3g(x) ≤ 2c3max{f (x), g(x)} = c4max{f (x), g(x)} 因此,原命题成立。
4 证明或给出反例:Θ(f (n)) ∩ o(f (n)) = ∅
该命题是正确的。 证明:对于 f (n) 的同阶函数集合,存在 c0, c1, n0 > 0,使得在 n > n0 时恒有
证明:根据定义知,存在 c1 > 0, n1 > 0,使得当 n > n1 的时 候,恒有
0 ≤ O(f (x)) ≤ c1f (x) 存在 c2 > 0, n2 > 0,使得当 n > n2 的时候,恒有
0 ≤ 0(g(x)) ≤ c2g(x) 设 c3 = max{c1, c2}, n3 = max{n1, n2}, c4 = 2c3,则当 n > n3 时恒 有
10
10
令
(
9 10
)k
n
=
1,则有
k
=
log9/10
1 ,则有
n
T (n) = T (1) + 10(n − 1)
即方程的解为
T (n) = Θ(n)
7 解方程 T (n) = 6T (n/3) + log n
解:用 Master 定理求解,a = 6, b = 3, ϵ = 0.03,因为有 log n = O(nlog3 6−0.03)
5 证明:设 k 是任意常数正整数,则 logk n = o(n)
证明:要证明原命题,只需证对任意的常数 c > 0,存在 n0 > 0 使得当 n > n0 时恒有,
0 ≤ logk n < cn
比较 logk n 和 cn,显然两式均大于 0,对其同时取对数则有 k log log n 和 log cn,又由于
解: …
9
T (n) = T ( n) + n
( 10 )
9 T ( n) = T
( 9 )2n)
9 +n
10
10
10
(
)(
)
T ( 9 )k−1n = T ( 9 )kn + ( 9 )k−1n
10
10
10
从而有,
T (n)
=
T
( (
9
) )kn
+
∑ k−1 (
9
)i
10
10
(
)
i=0
T (n) = T ( 9 )kn + 10n(1 − ( 9 )k)
f (n) ≤ g(n) + f (n) < c0f (n) + f (n) 则当 c1 = 1, c2 = (1 + c0), n > n0 时,有
c1f (n) ≤ g(n) + f (n) ≤ c2f (n) 因此,f (n) + g(n) 确实是 f (n) 的同阶函数,原命题得证。
3 试证明:O(f (x)) + O(g(x)) = O(max(f (x), g(x)))
C2
+
n 4T ( )
52
…
T (n/5k−1)
≤
n 5k−1 C2
+
n 4T ( )
Hale Waihona Puke Baidu5k
从而有
T
(n)
≤
∑ k−1 (
(
4 5
)i)nC2
+
4T
n ( 5k
)
i=0
T
(n)
≤
5(1
−
(
4 5
)k)C2
n
+
4T
(1)
令
n 5k
= 1,则有
T (n) ≤ 5(n − 4log5 n)C2 + Θ(1)
c0f (n) ≤ g(n) ≤ c1f (n)
又由于 f (n) 的严格低阶函数需满足,对任意的 c2 > 0,存在 n1 > 0 使得当 n > n1 的时候有如下式子恒成立
0 ≤ g(n) < c2f (n)
对任何一个可行的
c0
可以取
c2
=
1 2
c0,从而有
1 g(n) < 2 c0
显然与 f (n) 的同阶函数集合的交集为空,因此原命题成立。
算法设计与分析:习题一 姓名:周雄 学号:13S003079
1 写出求整数最大公因子的欧几里得算法
Euclid(a, b) 1 if b = 0 2 then return a 3 else return Euclid(b, a mod b)
2 证明或否证:f (n) + o(f (n)) = Θ(f (n))
由 Master 定理知,T (n) = Θ(nlog3 6)
3
8 解方程 T (n) = 3T (n/3 + 5) + n/2
解:为当 n 足够大的时候,5 就相对很小,可以将其忽略。因 此本方程可以用 Master 定理求解,a = 3, b = 3,从而有
n/2 = Θ(nlog3 3)
故原方程的解为 T (n) = Θ(n log n)
9 解方程 T (n) = T (⌈n/2⌉) + 1
解:根据《算法导论》中的定理,⌈ ⌉ 不影响 Master 定理的使 用,因此可以用 Master 定理解该方程。a = 1, b = 2,从而有
1 = Θ(1) 故原方程的解为 T (n) = Θ(log n)
10 解方程 T (n) = 9T (n/3) + n
解:用 Master 定理求解,a = 9, b = 3, ϵ = 0.1,因为有 n = O(nlog3 9−0.1)
由 Master 定理知,T (n) = Θ(n2)
11 解方程 T (n) = T (⌊n/2⌋) + n3
解:根据《算法导论》中的定理,⌊ ⌋ 不影响 Master 定理的使 用,因此可以用 Master 定理解该方程。a = 1, b = 2, ϵ = 0.1,从而 有
由 Master 定理得,S(t) = Θ(t2),即原方程的解为 T (n) = S(log n) = Θ(log2 n)
13 解方程
{ T (n) ≤ C1
C2n + 4T (n/5)
解:可以用迭代法求解
n < 20 n ≥ 20
T (n) ≤ C2n + 4T (n/5)
T (n/5)
≤
C2 5
n3 = Ω(n0+0.1)
故原方程的解为 T (n) = Θ(n3)
12
解方程
T
(n)
=
2T
√ ( 4 n)
+
(log2
n)2
解:设 2t = n,则原方程可以写为
T (2t) = 2T (2t/4) + t2
4
令 S(t) = T (2t),则有 S(t/4) = T (2t/4),从而有 S(t) = 2S(t/4) + t2
k log log n
lim
(1)
n→∞ log cn
k
= lim
(2)
n→∞ ln n ln 2
=0
(3)
2
也就是说,对任意的常数 c,总存在 n0 使得当 n > n0 的时候, 有 logk n < cn,即 logk n = o(n)。
6 用迭代法解方程 T (n) = T (9n/10) + n
又由于 n = O(4log5 n),从而有
T (n) ≤ Θ(n)
5
0 ≤ O(f (x)) + O(g(x))
1
≤ c1f (x) + c2g(x) ≤ c3f (x) + c3g(x) ≤ 2c3max{f (x), g(x)} = c4max{f (x), g(x)} 因此,原命题成立。
4 证明或给出反例:Θ(f (n)) ∩ o(f (n)) = ∅
该命题是正确的。 证明:对于 f (n) 的同阶函数集合,存在 c0, c1, n0 > 0,使得在 n > n0 时恒有
证明:根据定义知,存在 c1 > 0, n1 > 0,使得当 n > n1 的时 候,恒有
0 ≤ O(f (x)) ≤ c1f (x) 存在 c2 > 0, n2 > 0,使得当 n > n2 的时候,恒有
0 ≤ 0(g(x)) ≤ c2g(x) 设 c3 = max{c1, c2}, n3 = max{n1, n2}, c4 = 2c3,则当 n > n3 时恒 有
10
10
令
(
9 10
)k
n
=
1,则有
k
=
log9/10
1 ,则有
n
T (n) = T (1) + 10(n − 1)
即方程的解为
T (n) = Θ(n)
7 解方程 T (n) = 6T (n/3) + log n
解:用 Master 定理求解,a = 6, b = 3, ϵ = 0.03,因为有 log n = O(nlog3 6−0.03)
5 证明:设 k 是任意常数正整数,则 logk n = o(n)
证明:要证明原命题,只需证对任意的常数 c > 0,存在 n0 > 0 使得当 n > n0 时恒有,
0 ≤ logk n < cn
比较 logk n 和 cn,显然两式均大于 0,对其同时取对数则有 k log log n 和 log cn,又由于
解: …
9
T (n) = T ( n) + n
( 10 )
9 T ( n) = T
( 9 )2n)
9 +n
10
10
10
(
)(
)
T ( 9 )k−1n = T ( 9 )kn + ( 9 )k−1n
10
10
10
从而有,
T (n)
=
T
( (
9
) )kn
+
∑ k−1 (
9
)i
10
10
(
)
i=0
T (n) = T ( 9 )kn + 10n(1 − ( 9 )k)
f (n) ≤ g(n) + f (n) < c0f (n) + f (n) 则当 c1 = 1, c2 = (1 + c0), n > n0 时,有
c1f (n) ≤ g(n) + f (n) ≤ c2f (n) 因此,f (n) + g(n) 确实是 f (n) 的同阶函数,原命题得证。
3 试证明:O(f (x)) + O(g(x)) = O(max(f (x), g(x)))
C2
+
n 4T ( )
52
…
T (n/5k−1)
≤
n 5k−1 C2
+
n 4T ( )
Hale Waihona Puke Baidu5k
从而有
T
(n)
≤
∑ k−1 (
(
4 5
)i)nC2
+
4T
n ( 5k
)
i=0
T
(n)
≤
5(1
−
(
4 5
)k)C2
n
+
4T
(1)
令
n 5k
= 1,则有
T (n) ≤ 5(n − 4log5 n)C2 + Θ(1)
c0f (n) ≤ g(n) ≤ c1f (n)
又由于 f (n) 的严格低阶函数需满足,对任意的 c2 > 0,存在 n1 > 0 使得当 n > n1 的时候有如下式子恒成立
0 ≤ g(n) < c2f (n)
对任何一个可行的
c0
可以取
c2
=
1 2
c0,从而有
1 g(n) < 2 c0
显然与 f (n) 的同阶函数集合的交集为空,因此原命题成立。
算法设计与分析:习题一 姓名:周雄 学号:13S003079
1 写出求整数最大公因子的欧几里得算法
Euclid(a, b) 1 if b = 0 2 then return a 3 else return Euclid(b, a mod b)
2 证明或否证:f (n) + o(f (n)) = Θ(f (n))
由 Master 定理知,T (n) = Θ(nlog3 6)
3
8 解方程 T (n) = 3T (n/3 + 5) + n/2
解:为当 n 足够大的时候,5 就相对很小,可以将其忽略。因 此本方程可以用 Master 定理求解,a = 3, b = 3,从而有
n/2 = Θ(nlog3 3)
故原方程的解为 T (n) = Θ(n log n)
9 解方程 T (n) = T (⌈n/2⌉) + 1
解:根据《算法导论》中的定理,⌈ ⌉ 不影响 Master 定理的使 用,因此可以用 Master 定理解该方程。a = 1, b = 2,从而有
1 = Θ(1) 故原方程的解为 T (n) = Θ(log n)
10 解方程 T (n) = 9T (n/3) + n
解:用 Master 定理求解,a = 9, b = 3, ϵ = 0.1,因为有 n = O(nlog3 9−0.1)
由 Master 定理知,T (n) = Θ(n2)
11 解方程 T (n) = T (⌊n/2⌋) + n3
解:根据《算法导论》中的定理,⌊ ⌋ 不影响 Master 定理的使 用,因此可以用 Master 定理解该方程。a = 1, b = 2, ϵ = 0.1,从而 有
由 Master 定理得,S(t) = Θ(t2),即原方程的解为 T (n) = S(log n) = Θ(log2 n)
13 解方程
{ T (n) ≤ C1
C2n + 4T (n/5)
解:可以用迭代法求解
n < 20 n ≥ 20
T (n) ≤ C2n + 4T (n/5)
T (n/5)
≤
C2 5