算法設計與分析課程複習筆記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 )≤cn/2lg(n/2)
T(n)= 2T(n/2 ) + n
≤2(cn/2lg(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)
參考:任課教師邱德紅教授的課件