所謂主定理,就是用來解遞迴方程的一種方法,此方法可以用來求解大多數遞迴方程。
設遞迴方程為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 不是個合法多項式
主定理與時間複雜度
只好在網上找了一篇看起來不怎麼嚴謹的部落格,不過算出來的是對的?那就預設是對的吧qwq 如果我們要解決規模為 n 的問題,通過分治,得到 a 個規模為 frac 的問題,每次的額外複雜度為 o n d t n at frac c n d begin t left n right begino lef...
主定理與時間複雜度
只好在網上找了一篇看起來不怎麼嚴謹的部落格,不過算出來的是對的?那就預設是對的吧qwq 如果我們要解決規模為 n 的問題,通過分治,得到 a 個規模為 frac 的問題,每次的額外複雜度為 o n d t n at frac c n d begin t left n right begino lef...
初賽 主定理(時間複雜度)
主定理 對於 t n at dfrac f n t 1 o 1 有 f n o n epsilon 0 時,t n theta n f n theta n log b l n 時,t n theta n log b n f n omega n epsilon 0 且有一實數 c 滿足 0時,t n ...