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

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

递归关系

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

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

求解方法

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

置换法

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

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   a T ( n b ) + c n   T(n)=\left\{ \begin{aligned} c n=1\\ aT(\frac nb)+cn n>1 \end{aligned} \right.

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

主方式

主方式
example:
T ( n ) = 9 T ( 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} = n l o g 3 9 n^{log_39} =Θ(n2
f(n)=O( n l o g 3 9 ε n^{log_39-ε} )=n
ε=1,满足第一式

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

重点:

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

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

发布了25 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42605042/article/details/89603933