主定理

(摘自《算法导论》)

主定理:

    若T(n)由递归式T(n)=aT(n/b)+f(n)对非负整数定义,其中a≥1,b>1为常数,f(n)为一函数,则:

\[T(n) = \left\{ \begin{array}{l}
\Theta ({n^{{{\log }_b}a}}),\exists \varepsilon > 0,f(n) = O({n^{{{\log }_b}a - \varepsilon }})\\
\Theta ({n^{{{\log }_b}a}}\lg n),f(n) = \Theta ({n^{{{\log }_b}a}})\\
\Theta (f(n)),\exists \varepsilon > 0,f(n) = \Omega {\kern 1pt} ({n^{{{\log }_b}a + \varepsilon }}){\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} and{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \exists c < 1,{n_0} > 0,for{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} n > {n_0},af(n/b) \le cf(n)
\end{array} \right.\]

注意: \[主定理并不能解决所有形如T(n)=aT(n/b)+f(n)的问题,在第1,3种情况,f(n)必须多项式地小于(大于){n^{{{\log }_b}a}},即f(n)和{n^{{{\log }_b}a}}之间差{n^\varepsilon }以上\]

    例如:T(n)=2T(n/2)+nlogn,虽然nlogn=Ω(n),但找不到一个ε满足:

\[f(n) = n\log n = \Omega ({n^{{{\log }_b}a - \varepsilon }}) = \Omega ({n^{1 - \varepsilon }})\]

    也就是说,

\[f(n)/{n^{{{\log }_b}a}}{\rm{渐进小于}}{n^\varepsilon }\]

    处于第2和第3种情况之间,此时不能使用主定理.

posted @ 2015-10-28 13:06  Reasno  阅读(2030)  评论(0编辑  收藏  举报