算法设计与分析课程复习笔记2——递归关系

算法设计与分析课程复习笔记2——递归关系

递归关系

递归关系描述的是自然数上的函数关系
对于某个n>0的函数值,通过小于n的函数值表示出来

为什么要分析递归关系?
许多算法,特别是递归算法,时间开销函数都可以用递归关系来描述

求解方法

  • 置换法(Substitution)
  • 递归树(Recursion Tree)
  • 迭代法(Iteration)
  • 主方式(Master Theorem)

置换法

  1. 猜想(经验、更换变元、先松后紧)
  2. 验证猜想对于n= n 0 n_0 n0的正确性
  3. 验证猜想对于n> n 0 n_0 n0的正确性

example:T(n) = 2T( ⌊ \lfloor n/2 ⌋ \rfloor ) + n
猜想:T(n) = Θ(n lg n)
假设在n≥2时对于 ⌊ \lfloor n/2 ⌋ \rfloor 成立,
即T( ⌊ \lfloor n/2 ⌋ \rfloor )≤c ⌊ \lfloor n/2 ⌋ \rfloor lg( ⌊ \lfloor n/2 ⌋ \rfloor )

T(n)= 2T( ⌊ \lfloor n/2 ⌋ \rfloor ) + n
≤2(c ⌊ \lfloor n/2 ⌋ \rfloor lg( ⌊ \lfloor n/2 ⌋ \rfloor ))+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( ⌊ \lfloor n/2 ⌋ \rfloor ) + n → T(n) = Θ(n lg n)
T(n) = 2T( ⌊ \lfloor n/2 ⌋ \rfloor + 17) + n → T(n) = Θ(n lg n)

递归树

递归树

迭代法

  1. 展开
  2. 代数运算
  3. 求和

example:
T ( n ) = { c   n = 1 a T ( n b ) + c n   n > 1 T(n)=\left\{ \begin{aligned} c n=1\\ aT(\frac nb)+cn n>1 \end{aligned} \right. T(n)=c aT(bn)+cn 

T ( n ) = { Θ ( n )   a < b Θ ( n l o g b n )   a = b Θ ( n l o g b a )   a > b T(n)=\left\{ \begin{aligned} Θ(n) a<b\\ Θ(nlog_bn)  a=b\\ Θ(n^{log_ba}) a>b\\ \end{aligned} \right. T(n)=Θ(n) Θ(nlogbn) Θ(nlogba) 

主方式

主方式
example:
T ( n ) = 9 T ( n / 3 ) + n T(n)=9T(n/3)+n T(n)=9T(n/3)+n
a=9
b=3
f(n)=n

n l o g b a n^{log_ba} nlogba= n l o g 3 9 n^{log_39} nlog39=Θ(n2
f(n)=O( n l o g 3 9 − ε n^{log_39-ε} nlog39ε)=n
ε=1,满足第一式

所以T(n)=Θ( n l o g b a n^{log_ba} nlogba)
T(n)=Θ( n 2 n^2 n2)

重点:

  • 置换法(Substitution)
  • 递归树(Recursion Tree)
  • 迭代法(Iteration)
  • 主方式(Master Theorem)

参考:任课教师邱德红教授的课件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值