算法設計與分析課程複習筆記2——遞歸關係

算法設計與分析課程複習筆記2——遞歸關係

遞歸關係

遞歸關係描述的是自然數上的函數關係
對於某個n>0的函數值,通過小於n的函數值表示出來

爲什麼要分析遞歸關係?
許多算法,特別是遞歸算法,時間開銷函數都可以用遞歸關係來描述

求解方法

  • 置換法(Substitution)
  • 遞歸樹(Recursion Tree)
  • 迭代法(Iteration)
  • 主方式(Master Theorem)

置換法

  1. 猜想(經驗、更換變元、先松後緊)
  2. 驗證猜想對於n=n0n_0的正確性
  3. 驗證猜想對於n>n0n_0的正確性

example:T(n) = 2T(\lfloorn/2\rfloor) + n
猜想:T(n) = Θ(n lg n)
假設在n≥2時對於\lfloorn/2\rfloor成立,
即T(\lfloorn/2\rfloor )≤c\lfloorn/2\rfloorlg(\lfloorn/2\rfloor)

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

遞歸樹

遞歸樹

迭代法

  1. 展開
  2. 代數運算
  3. 求和

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

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

主方式

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

nlogban^{log_ba}=nlog39n^{log_39}=Θ(n2
f(n)=O(nlog39εn^{log_39-ε})=n
ε=1,滿足第一式

所以T(n)=Θ(nlogban^{log_ba})
T(n)=Θ(n2n^2)

重點:

  • 置換法(Substitution)
  • 遞歸樹(Recursion Tree)
  • 迭代法(Iteration)
  • 主方式(Master Theorem)

參考:任課教師邱德紅教授的課件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章