在演算法分析 中,主定理 (英語:Master theorem )提供了用渐近符号(大O符号 )表示许多由分治法 得到的递推关系式 的方法。这种方法最初由喬恩·本特利 、多蘿西·布洛斯坦 和詹姆斯·B·薩克斯 在1980年提出,在那里被描述为解决这种递推的“天下無敵法”(Master method)。此方法经由经典演算法教科书托馬斯·H·科爾曼 、查爾斯·E·雷瑟爾森 、羅納德·李維斯特 和克利福德·史坦 的《算法导论 》推广而为人熟知。
不过,并非所有递推关系式都可应用支配理论。该定理的推广形式包括阿克拉-巴茲方法 。
支配理论
假设有递归关系式
T
(
n
)
=
a
T
(
n
b
)
+
f
(
n
)
{\displaystyle T(n)=a\;T\!\left({\frac {n}{b}}\right)+f(n)}
,其中
a
≥
1
,
b
>
1
{\displaystyle a\geq 1{\mbox{, }}b>1}
其中,
n
{\displaystyle n}
为问题规模,
a
{\displaystyle a}
为递归的子问题数量,
n
b
{\displaystyle {\frac {n}{b}}}
为每个子问题的规模(假设每个子问题的规模基本一样),
f
(
n
)
{\displaystyle f(n)}
为递归以外进行的计算工作。
情形一
如果存在常数
ϵ
>
0
{\displaystyle \epsilon >0}
,有
f
(
n
)
=
O
(
n
log
b
(
a
)
−
ϵ
)
{\displaystyle f(n)=O\left(n^{\log _{b}(a)-\epsilon }\right)}
(可不嚴謹的視作多项式地小于)
则
T
(
n
)
=
Θ
(
n
log
b
a
)
{\displaystyle T(n)=\Theta \left(n^{\log _{b}a}\right)}
情形二
如果存在常数
ϵ
≥
0
{\displaystyle \epsilon \geq 0}
,有
f
(
n
)
=
Θ
(
n
log
b
a
log
ϵ
n
)
{\displaystyle f(n)=\Theta \left(n^{\log _{b}a}\log ^{\epsilon }n\right)}
则
T
(
n
)
=
Θ
(
n
log
b
a
log
ϵ
+
1
n
)
{\displaystyle T(n)=\Theta \left(n^{\log _{b}a}\log ^{\epsilon +1}n\right)}
情形三
如果存在常数
ϵ
>
0
{\displaystyle \epsilon >0}
,有
f
(
n
)
=
Ω
(
n
log
b
(
a
)
+
ϵ
)
{\displaystyle f(n)=\Omega \left(n^{\log _{b}(a)+\epsilon }\right)}
(多项式地大于)
同时存在常数
c
<
1
{\displaystyle c<1}
以及充分大的
n
{\displaystyle n}
,满足
a
f
(
n
b
)
≤
c
f
(
n
)
{\displaystyle af\left({\frac {n}{b}}\right)\leq cf(n)}
则
T
(
n
)
=
Θ
(
f
(
n
)
)
{\displaystyle T\left(n\right)=\Theta \left(f\left(n\right)\right)}
常用演算法中的应用
演算法
递回关系式
运算时间
备注
二分搜尋演算法
T
(
n
)
=
T
(
n
2
)
+
Θ
(
1
)
{\displaystyle T(n)=T\left({\frac {n}{2}}\right)+\Theta (1)}
Θ
(
log
n
)
{\displaystyle \Theta (\log n)}
情形二(
ϵ
=
0
{\displaystyle \epsilon =0}
)
二叉树 遍历
T
(
n
)
=
2
T
(
n
2
)
+
Θ
(
1
)
{\displaystyle T(n)=2T\left({\frac {n}{2}}\right)+\Theta (1)}
Θ
(
n
)
{\displaystyle \Theta (n)}
情形一
最佳排序矩阵搜索(已排好序的二维矩阵)
T
(
n
)
=
2
T
(
n
2
)
+
O
(
log
n
)
{\displaystyle T(n)=2T\left({\frac {n}{2}}\right)+O(\log n)}
Θ
(
n
)
{\displaystyle \Theta (n)}
合併排序
T
(
n
)
=
2
T
(
n
2
)
+
Θ
(
n
)
{\displaystyle T(n)=2T\left({\frac {n}{2}}\right)+\Theta (n)}
Θ
(
n
log
n
)
{\displaystyle \Theta (n\log n)}
情形二(
ϵ
=
0
{\displaystyle \epsilon =0}
)
参考文献
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms , Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7 . Sections 4.3 (The master method) and 4.4 (Proof of the master theorem), pp. 73–90.
Michael T. Goodrich and Roberto Tamassia. Algorithm Design: Foundation, Analysis, and Internet Examples . Wiley, 2002. ISBN 0-471-38365-1 . The master theorem (including the version of Case 2 included here, which is stronger than the one from CLRS) is on pp. 268–270.