用主方法求解遞迴式有條件,必須要求遞迴式為以下形式:
其中a>=1,b>1,f(n)漸進趨正,意為對足夠大的n,f(n)是正的,即n>=n
0n_0
n0時,f(n)>0。
其中 n為問題規模, a為遞推的子問題數量, n/b 為每個子問題的規模(假設每個子問題的規模基本一樣), f(n)為遞推以外進行的計算工作。
**核心是比較f(n)與n^(logba)的大小。**根據大小關係可以分為三種情況:
這裡f(n)=n,n(l
ogba
)=n2
n^(logba)=n^2
n(logb
a)=n
2,f(n)小於n^(logba),所以為第一種情況,t(n)=θ(n
2n^2
n2).ex2:t(n)=4t(n/2)+n
2n^2
n2這裡f(n)=n
2n^2
n2,n (l
ogba
)=n2
n^(logba)=n^2
n(logb
a)=n
2,f(n)等於n^(logba),所以為第二種情況,t(n)=θ(n2l
gnn^2lgn
n2lgn)
ex3:t(n)=4t(n/2)+n
3n^3
n3這裡f(n)=n
3n^3
n3,n (l
ogba
)=n2
n^(logba)=n^2
n(logb
a)=n
2,f(n)大於n^(logba),所以為第三種情況,t(n)=θ(n
3n^3n3)
主方法求解遞迴式
求解遞迴式的方法有akra bazzi方法和strassen方法等等,但是akra bazzi方法有點難用,但它可以求解那些子問題劃分不均衡的演算法的遞迴式。主方法很容易使用,但只能用於子問題規模相等的情況。這幾天看了點對遞迴式進行求解,稍微了解到可以通過主方法很快的把使用分治策略解決的問題的時間複...
主定理求解演算法時間複雜度
所謂主定理,就是用來解遞迴方程的一種方法,此方法可以用來求解大多數遞迴方程。設遞迴方程為t n at n b f n 其中a 1,b 1 主定理 1.如果存在常數 0有f n o n logb a 則t n n logb a 2.若f n n logb a 則t n n logb a logn2 n...
主定理學習筆記
主定理用於求遞推方程的階。設a 1,b 1為常數,f n 為函式,t n 為非負整數,且 t n at n b f n 注意a b取值範圍 有以下三種結果 若f n o nlogba 0,則t n nlogba 若f n nlogba 則t n nlogba logn 若f n nlogba 0,且...