算法设计与分析课程复习笔记2——递归关系
递归关系
递归关系描述的是自然数上的函数关系
对于某个n>0的函数值,通过小于n的函数值表示出来
为什么要分析递归关系?
许多算法,特别是递归算法,时间开销函数都可以用递归关系来描述
求解方法
- 置换法(Substitution)
- 递归树(Recursion Tree)
- 迭代法(Iteration)
- 主方式(Master Theorem)
置换法
- 猜想(经验、更换变元、先松后紧)
- 验证猜想对于n= 的正确性
- 验证猜想对于n> 的正确性
example:T(n) = 2T(
n/2
) + n
猜想:T(n) = Θ(n lg n)
假设在n≥2时对于
n/2
成立,
即T(
n/2
)≤c
n/2
lg(
n/2
)
T(n)= 2T(
n/2
) + n
≤2(c
n/2
lg(
n/2
))+n
≤cnlg(n/2)+n
=cnlgn-cnlg2+n
=cnlgn-cn+n
≤cnlgn 对于c>1
examples:
T(n) = 2T(n/2) +Θ(n) → T(n) = Θ(n lg n)
T(n) = 2T(
n/2
) + n → T(n) = Θ(n lg n)
T(n) = 2T(
n/2
+ 17) + n → T(n) = Θ(n lg n)
递归树
迭代法
- 展开
- 代数运算
- 求和
example:
主方式
example:
a=9
b=3
f(n)=n
=
=Θ(n2)
f(n)=O(
)=n
ε=1,满足第一式
所以T(n)=Θ(
)
T(n)=Θ(
)
重点:
- 置换法(Substitution)
- 递归树(Recursion Tree)
- 迭代法(Iteration)
- 主方式(Master Theorem)
参考:任课教师邱德红教授的课件