主定理(Master Theorem)與時間複雜度

2021-08-07 15:36:43 字數 633 閱讀 1145

主定理最早出現在《演算法導論》中,提供了分治方法帶來的遞迴表示式的漸近複雜度分析。

規模為n的問題通過分治,得到a個規模為n/b的問題,每次遞迴帶來的額外計算為c(n^d)

t(n) <= at(n/b)+c(n^d)

那麼就可以得到問題的複雜度為:

本來使用主定理是可以免去畫遞迴樹的,但為了證明主定理,還是需要畫樹。

可見,每次遞迴把問題分為a個規模為n/b的子問題。從根節點開始,共有logb(n)+1層,葉子節點數為a^(logb(n))。那麼,第j層共有a^j個子問題,每個問題規模為n/b^j,每個子問題運算量為c*(n/b^j)^d需要完成的計算量為:

求和得到整個問題的運算量:

那麼,根據a與b^d的關係,很容易得到主定理。

inside_zhang

主定理(主方法)求解遞迴式

用主方法求解遞迴式有條件,必須要求遞迴式為以下形式 其中a 1,b 1,f n 漸進趨正,意為對足夠大的n,f n 是正的,即n n 0n 0 n0 時,f n 0。其中 n為問題規模,a為遞推的子問題數量,n b 為每個子問題的規模 假設每個子問題的規模基本一樣 f 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,且...

主定理的數學證明

分治演算法中有一些演算法,僅僅用分支遞推公式無法計算出其時間複雜性,因為它的遞推方程帶有乙個冪項,雖然依靠迭代我們仍然可以求出其遞推公式,但是這麼做未免太複雜浪費時間。這時候我們有乙個通法,那就是主定理 master theorem 根據情況直接套公式就能求出時間複雜性。主定理形式如下 設f是滿足遞...