m a s t e r \mathrm{master} master定理求解范围
对于一些递归性时间复杂度,由于难以计算,我们需要使用 M a s t e r \mathrm{Master} Master定理来进行求解。
例如,我们熟悉的分治算法,其递归式为: T ( n ) = 2 T ( n 2 ) + n T(n)=2T(\frac{n}{2})+n T(n)=2T(2n)+n时间复杂度就是 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n).因此,我们普遍的将时间复杂度问题形式化为: T ( n ) = a T ( n b ) + f ( n ) T(n)=aT(\frac{n}{b})+f(n) T(n)=aT(bn)+f(n)
对于对于此类我们,我们便可以使用 m a s t e r \mathrm{master} master定理来进行求解了。
m a s t e r \mathrm{master} master定理的内容
对于递归的时间复杂度问题 T ( n ) = a T ( n b ) + f ( n ) T(n)=aT(\frac{n}{b})+f(n) T(n)=aT(bn)+f(n)
我们令 c = l o g b a c=log_ba c=logba,再和 f ( n ) f(n) f(n)的时间复杂度进行比较,可以分为三类情况。
我们可以令 f ( n ) = O ( n k ) f(n)=O(n^k) f(n)=O(nk)或者 O ( n k l o g ) O(n^klog) O(nklog)之类的。那么我们将 c c c和这里的 k k k进行比较。这样就可十分方便的去分类,还比较好记。
- 1.当 c > k c>k c>k时,且 T ( n ) = a T ( n b ) + f ( n k ) T(n)=aT(\frac{n}{b})+f(n^k)