主定理(Master theorem)與Akra–Bazzi定理

1、主定理(Master theorem)算法

 

主定理是算法分析中的一個重要結論,它主要用於求解基於分治思想設計的遞歸算法的漸進複雜度。該結論最初由Jon Bentley, Dorothea Haken, 和James B. Saxe三位計算機科學家在1980年給出,其中Jon Bentley是計算機領域暢銷書《編程珠璣》的做者,同時他還提出了K-D-Tree這個用於多維數據管理的數據結構。經典教材《算法導論》將該結論命名爲主定理,並使其聲名遠播。編程

 

先來看簡化版本的主定理:數據結構

考慮形如T(n)=aT(n/b)+\Theta(n^d)的遞歸式,設計

  • 若是a>b^d,那麼T(n)=\Theta(n^{\log_ba})
  • 若是a=b^d,那麼T(n)=\Theta(n^d\log n)
  • 若是a<b^d,那麼T(n)=\Theta(n^d)

注意在這個簡化的版本中,加法右側的部分必須是polynomial的。code

如何應用主定理呢?來看幾道例題。遞歸

例1:T(n)=T(2n/3)+1rem

套用上面的公式,其中a=1,b=3/2,而且d=0,即a=b^d。所以,可得T(n)=\Theta(\log n)數學

 

下面給出真正版本的主定理:ast

考慮形如T(n)=aT(n/b)+f(n)的遞歸式,class

  • 若是存在\epsilon>0,使得f(n)=O(n^{\log_b a -\epsilon}),那麼T(n)=\Theta(n^{\log_ba})
  • 若是f(n)=\Theta(n^{\log_b a}),那麼T(n)=\Theta(n^{\log_ba}\log n)
  • 若是存在\epsilon>0,使得f(n)=\Omega(n^{\log_ba+\epsilon}),而且af(n/b)\leq cf(n)成立,其中c是一個常數,n是一個足夠大的數,那麼T(n)=\Theta (f(n))

一樣來看一道例題。

例2:T(n)=3T(n/4)+n\log n

相似地,其中a=3,b=4,而且f(n)=n\log n。比較n^{\log_4 3}n\log n,易見只要\log_43+\epsilon\leq 1,就有n\log n=\Omega(n^{\log_43+\epsilon})。屬於第三種狀況,所以T(n)=\Theta(n\log n)

 

2、Akra–Bazzi定理

 

儘管主定理十分強大,並且應用起來也很方便,但並不是全部的遞歸關係均可以用它來求得最終的漸進表示的複雜度。一個更加泛化的結論是由兩位黎巴嫩數學家Mohamad Akra 和 Louay Bazzi(二人也都是MIT的校友)在1998年給出的後來以他們名字命名的定理——Akra-Bazzi定理。該定理的形式化表述以下:

考慮形如T(x)=g(x)+\sum ^k_{i=1}a_iT(b_ix+h_i(x)), for\ x\geq x_0的遞歸式,

若是:

  • 對於全部的ia_ib_i是常數,其中a_i>00<b_i<1
  • |g(x)|\in O(x^c),其中c是一個常數;
  • 對於全部的i|h_i(x)|\in O(\frac{x}{(\log x)^2})
  • x_0是一個常數;

則有

T(x)\in \Theta(x^p(1+\int_{1}^{x}\frac{g(u)}{u^{p+1}}du))

其中,p知足 \sum_{i=1}^{k}a_ib_i^p=1

 

如何應用Akra-Bazzi定理呢?來看幾道例題。

例3:T(n)=\frac{7}{4}T(\frac{1}{2}n)+T(\frac{3}{4}n)+n^2, for\ n\geq3

首先來找到知足條件的p,顯然當使得\frac{7}{4}(\frac{1}{2})^p+(\frac{3}{4})^p=1成立的p值爲2。那麼套用上述公式可得:

T(x)\in \Theta(x^2(1+\int_{1}^{x}\frac{u^2}{u^3}du))=\Theta(x^2\log x)

 

例4:T(n)=\frac{1}{4}T(\frac{3}{4}n)+\frac{3}{4}T(\frac{1}{4}n)+1,其中n是一個很大的數

顯然,知足條件的p值等於0,因而有

T(x)\in \Theta(x^0(1+\int_{1}^{x}\frac{1}{u}du))=\Theta(\log x)

 

例5:T(n)=T(\frac{2}{7}n)+T(\frac{3}{7}n)+T(\frac{6}{7}n)+n^2,其中n是一個很大的數

能夠算得,知足條件的p值等於2,因而有

T(x)\in \Theta(x^2(1+\int_{1}^{x}\frac{u^2}{u^3}du))=\Theta(x^2\log x)

注意,p值未必必定須要是一個整數,例如\log 3也是徹底能夠的。



【本文完】

相關文章
相關標籤/搜索