遞迴方程的Master定理

2021-07-27 09:51:17 字數 2464 閱讀 2402

master定理也叫主定理。它提供了一種通過漸近符號表示遞推關係式的方法。應用master定理可以很簡便的求解遞迴方程。然而,master定理也有其不適用的地方,下面會講到。

假設有如下遞迴方程: t

(n)=

at(n

b)+f

(n)

其中n 為問題規模,

a 為遞推的子問題數量且a≥

1 ,nb

為每個子問題的規模(假設每個子問題的規模基本一樣)且

b>

1 ,f(

n)為遞推以外進行的計算工作。設

g(n)

=nlogba

則t(n)=⎧

⎩⎨⎪⎪

⎪⎪⎪⎪

θ(g(

n)),

θ(f(

n)),

θ(g(

n)lgn

),g(

n)f(

n)>lgn

f(n)

g(n)

>lgn

f(n)

=g(n

) 一句話概括就是誰大取誰,相等就乘lgn

。如上定義所述,當g(

n)f(

n)<=lgn

或f(n

)g(n

)<=lgn

時,master定理是無能為力的。因此,當遇到上面的情況時是不能使用master定理的。

在應用master定理時只需自己在心中默默的問上自己幾個問題,就可以計算出遞迴方程的漸進複雜度。下面咱們走上一遍:

a 是誰,

b 是誰,g(

n)是多少,f(

n)又是多少?g(

n)大還是f(

n)大還是一樣大?如果g

(n) 大,那麼g(

n)f(

n)>lgn

?如果f

(n) 大,那麼f(

n)g(

n)>lgn

?既然知道了怎麼用,那下面就來幾個例題再近距離感受下master定理的強大。

二分搜尋的遞迴方程如下: t

(n)=

t(n2

)+θ(

1)

按照上面的步驟,走上一遍試一下:

在這裡, 

1. a=1

,b=2

,f(n

)=1 ,那麼g(

n)=n

logba=

nlog21

=12. f(

n)=g

(n)

3. 因此t(

n)=θ

(g(n

)lgn)

=θ(lg

n)

怎麼樣,是不是很簡單。再舉幾個不同的栗子接著感受下

二叉樹遍歷的遞迴方程如下: t

(n)=

2t(n

2)+θ

(1)

繼續按照上面的步驟走:a=

2 ,b=

2 ,f(

n)=1

,因此,g(

n)=n

g(n) 大g(

n)f(

n)=n

>lgn

因此t(

n)=θ

(g(n

))=θ

(n)

依然不費力氣,下面再來乙個

遞迴方程如下所示: t

(n)=

2t(n

4)+θ

(nlgn

) 按照上面的步驟走:a=

2 ,b=

4 ,f(

n)=n

lgn,則g(

n)=n

log4

2<

n f(

n)大f(

n)g(

n)=n

lgnnlog42

>lgn

因此t(

n)=θ

(f(n

))=θ

(nlgn

)

遞迴方程如下: t

(n)=

2t(n

2)+θ

(nlgn

) 這次再按照上面的步驟走:a=

2 , b=

2 , f(

n)=n

lgn, 則g(

n)=n

f(n) 更大f(

n)g(

n)=lg

n≯lgn

因此,這個遞迴方程不能夠使用master定理解決

通過上面的幾個栗子應該能對master定理感覺的差不多了吧?但其實,還是有點小小的問題的。

我這篇部落格裡寫的master定理實際上並不是很嚴謹,為了更加簡便理解與使用對原來的master定理新增了些自己的理解在裡面,完整的master定理的定義可以參考下面維基百科的描述或者直接到《演算法導論》中檢視。

當然,我理解的版本的master定理或許有誤,歡迎批評指正。

應用Master定理求解遞迴方程

master定理也叫主定理。它提供了一種通過漸近符號表示遞推關係式的方法。應用master定理可以很簡便的求解遞迴方程。然而,master定理也有其不適用的地方,下面會講到。假設有如下遞迴方程 t n a t nb f n 其中 n 為問題規模,a為遞推的子問題數量且a 1 nb 為每個子問題的規模...

演算法的複雜度與Master定理

平時設計或者閱讀乙個演算法的時候,必然會提到演算法的複雜度 包括時間複雜度和空間複雜度 比如我們說乙個二分查詢演算法的平均時間複雜度為o log n 快速排序可能是o n log n 那這裡的o是什麼意思?這樣的表達是否準確呢?先插一句,在演算法複雜度分析中,log通常表示以2為底的對數。演算法複雜...

遞迴方法巧解不定方程

多元一次方程往往採用迴圈求解。筆者在與們討論乙個問題 過程中,琢磨出一種演算法,採用遞迴進行多元一次方程的求解。並將解分為整數解和 非負整數解兩種情況,請大家指教。private sub command1 click 演示求x1 x2 x3 x4 x5 10整數解 text1.text dim an...