主定理求解演算法時間複雜度
阿新 • • 發佈:2018-12-19
主定理
所謂主定理,就是用來解遞迴方程的一種方法,此方法可以用來求解大多數遞迴方程。
設遞迴方程為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);
3. 若對某個常數ε>0有f(n)=Ω(n^(logb^a)+ε),且對某個常數c<1和所有足夠大的n有af(n/b)≤cf(n),則T(n)=Θ(f(n))。
歪曲記憶法:誰大聽誰的,相等就乘個對數係數
多項式大於(小於)
在看演算法導論時候,看到講主定理節時,有“在第一種情況中,不僅要有f(n)小於n^log(b)(a),還必須是多項式地小於……”,之前先入為主的以為多項式地小於就是兩者之差為一個多項式(事實上這麼想也沒大錯,只是形式不對),但注意到是在演算法的世界裡,所以不需要精確到一個多項式(形如n^3+n^2+n+3之類的),只要兩者之比(即f(n)/log(a)(b))漸近小於n^e(e > 0)即可。
歸納起來,就是:(e > 0的任意實數)
f(x) > g(x) * n^e ==> f(x)多項式地大於g(x);
f(x) < g(x) * n^e ==> f(x)多項式地小於g(x)。
歪曲記憶法:就是得差個多項式啊,多項式是n、n^2、n^3……這種樣子的,lgn 不是個合法多項式