什么是 Master Theorem?
Master Theorem 提供了用渐近符号(大O符号)表示许多由分治法得到的递推关系式的方法。这种方法最初由Jon Bentlery,Dorothea Haken和James B. Saxe在1980年提出,在那里被描述为解决这种递推的“天下无敌法”(master method)。此方法经由经典算法教科书Cormen,Leiserson,Rivest和Stein的《算法导论》 (introduction to algorithm) 推广而为人熟知。
Master 公式
假设有递推关系式 T ( n ) = a T ( n b ) + O ( n d ) T(n)=aT(\frac{n}{b}) + O(n^d) T(n)=aT(bn)+O(nd),其中 n n n为问题规模, a a a为递推的子问题数量, n b \frac{n}{b} bn为每个子问题的规模(假设每个子问题的规模基本一样),O(n^d)为递推以外的计算复杂度。
- 当 d < l o g b a d<log_ba d<logba时,总的时间复杂度为: O ( n l o g b a ) O(n^{log_ba}) O(nlogba);
- 当 d = l o g b a d=log_ba d=logba时,总的时间复杂度为: O ( n d ∗ l o g n ) O(n^d*{logn}) O(nd∗logn);
- 当 d > l o g b a d>log_ba d>logba时,总的时间复杂度为: O ( n d ) O(n^d) O(nd);