Introduction to Algorithms 算法导论 第4章 递归式 学习笔记及习题解答
2012-02-09 22:41
896 查看
第4章 递归式
主方法:
n=1:
T(n) = Θ(1)
n>1:
T(n) = aT(n/b) + Θ(n) (a≥1, b>1)
4.1 代换法
1). 猜测解的形式
2). 用数学归纳法找出使解真正有效的常数
改变变量:
T(n) = 2T(⌊n^(1/2)⌋) + lgn
设m=lgn,则有n=2^m,可得:
T(2^m) = 2T(⌊2^(m/2)⌋) + m
令S(m) = T(2^m) = 2S(m/2) + m
上式解为O(mlgm) = O(lgn*lglgn)
练习
4.1-1 证明 T(n) = T(⌈n/2⌉) + 1的解为O(lgn)
证明:
假定T(n) ≤ clg(n-b), 则:
T(n) = T(⌈n/2⌉) + 1
≤ clg(⌈n/2 - b⌉) + 1
< clg(n/2 - b + 1) + 1
= clg((n-2b+2)/2) + 1
= clg(n-2b+2) - clg2 + 1
= clg(n-2b+2) - c + 1
≤ clg(n-b)
明显当c≥1, b≥2时成立。
4.1-2 证明T(n) = 2T(⌊n/2⌋)+n的解为O(nlgn)。证明这个递归的解也是Ω(nlgn)。得到解为Θ(nlgn)。
证明:
T(n) = 2T(⌊n/2⌋) + n
≤ 2T(c⌊n/2⌋lg⌊n/2⌋) + n
≤ cnlg(n/2) + n
= cnlgn - cnlg2 + n
= cnlgn -cn + n
≤ cnlgn
可知当c≥1时有T(n)=O(nlgn).
cnlgn ≤ T(n)
= 2T(c⌊n/2⌋lg⌊n/2⌋)+n
≤ cnlg(n/2) + n
=cnlgn -cn + n
当0<c≤1时有T(n)=Ω(nlgn)。
由定义知T(n) = Θ(nlgn).
4.1-3 证明: 通过作不同的假设,对递归式4.4我们可以克服在证明边界条件T(1)=1时的困难,同时无需调整归纳证明中的边界条件。
证明: 令递归式为c(n+b)lg(n+b), b≥1可克服边界条件。
主方法:
n=1:
T(n) = Θ(1)
n>1:
T(n) = aT(n/b) + Θ(n) (a≥1, b>1)
4.1 代换法
1). 猜测解的形式
2). 用数学归纳法找出使解真正有效的常数
改变变量:
T(n) = 2T(⌊n^(1/2)⌋) + lgn
设m=lgn,则有n=2^m,可得:
T(2^m) = 2T(⌊2^(m/2)⌋) + m
令S(m) = T(2^m) = 2S(m/2) + m
上式解为O(mlgm) = O(lgn*lglgn)
练习
4.1-1 证明 T(n) = T(⌈n/2⌉) + 1的解为O(lgn)
证明:
假定T(n) ≤ clg(n-b), 则:
T(n) = T(⌈n/2⌉) + 1
≤ clg(⌈n/2 - b⌉) + 1
< clg(n/2 - b + 1) + 1
= clg((n-2b+2)/2) + 1
= clg(n-2b+2) - clg2 + 1
= clg(n-2b+2) - c + 1
≤ clg(n-b)
明显当c≥1, b≥2时成立。
4.1-2 证明T(n) = 2T(⌊n/2⌋)+n的解为O(nlgn)。证明这个递归的解也是Ω(nlgn)。得到解为Θ(nlgn)。
证明:
T(n) = 2T(⌊n/2⌋) + n
≤ 2T(c⌊n/2⌋lg⌊n/2⌋) + n
≤ cnlg(n/2) + n
= cnlgn - cnlg2 + n
= cnlgn -cn + n
≤ cnlgn
可知当c≥1时有T(n)=O(nlgn).
cnlgn ≤ T(n)
= 2T(c⌊n/2⌋lg⌊n/2⌋)+n
≤ cnlg(n/2) + n
=cnlgn -cn + n
当0<c≤1时有T(n)=Ω(nlgn)。
由定义知T(n) = Θ(nlgn).
4.1-3 证明: 通过作不同的假设,对递归式4.4我们可以克服在证明边界条件T(1)=1时的困难,同时无需调整归纳证明中的边界条件。
证明: 令递归式为c(n+b)lg(n+b), b≥1可克服边界条件。
相关文章推荐
- Introduction to Algorithms 算法导论 第2章 算法入门 学习笔记及习题解答
- Introduction to Algorithms 算法导论 第1章 基础知识 学习笔记及习题解答
- Introduction to Algorithms 算法导论 第3章 函数的增长 学习笔记及习题解答
- Introduction to Algorithms (算法导论) 学习笔记 -- Chapter 9
- MIT Introduction to Algorithms 学习笔记(四)
- Udacity cs344-Introduction to Parallel Programming学习笔记-如何在VS环境下编译课程习题代码
- MIT Introduction to Algorithms 学习笔记(二)
- MIT Introduction to Algorithms 学习笔记(三)
- [Introduction to Algorithms 学习笔记] 单源最短路径
- MIT Introduction to Algorithms 学习笔记(一)
- MIT Introduction to Algorithms 学习笔记(七)
- MIT Introduction to Algorithms 学习笔记(十)
- 算法导论第六章习题答案(第三版) Introduction to Algorithm
- 第4章 算法导论之递归式笔记
- MIT 6.046J / 18.410J 2001秋季课程:算法导论(Introduction to Algorithms, Fall 2001)第一课
- MIT Introduction to Algorithms 学习笔记(五)
- MIT Introduction to Algorithms 学习笔记(八)
- MIT Introduction to Algorithms 学习笔记(九)
- MIT Introduction to Algorithms 学习笔记(六)
- Coursera deeplearning.ai 深度学习笔记1-1-Introduction to deep learning