主定理复习

主定理复习

符号

\(\Theta\),读西塔,严格等于
\(O\),读殴,上界,贴紧为未知
\(o\),读殴,小于,不贴紧
\(\Omega\),下界,大于等于,贴近未知
\(w\),读同上,下界,大于,不贴紧

假设有递推公式
\(T(n)=aT(\frac{n}{b})+f(n)\)

三种情况:

  • 对某个数\(\varepsilon>0\),有\(f(n)=O(n^{(log_ba)-\varepsilon})\),则\(T(n)=\Theta(n^{log_ba})\)
  • 若存在常数\(k\ge0\),有\(f(n)=\Theta(n^{log_ba}log_2^kn)\),则\(T(n)=\Theta(n^{log_ba}log_2^{k+1}\,n)\)
  • 若存在常数\(\varepsilon>0\),有\(f(n)=\Omega(n^{log_ba+\varepsilon})\),且对于某个常数\(c<1\)和所有足够大的\(n\)\(af(\frac{n}{b})\le cf(n)\),则\(T(n)=\Theta(f(n))\)

例子

\(T(n)=9T(\frac{n}{3})+n\)
\(a=9,b=3,f(n)=n\),因为有\(\varepsilon =1, f(n)=n=O(n^{log_39-1})\),满足情况1,所以\(T(n)=\Theta(n^2)\)

[NOIP2017初赛] \(T(n)=2T(n/2)+nlogn,T(1)=1\)
\(a=2,b=2,k=1,f(n)=\Theta(nlogn)\),所以\(T(n)=\Theta(nlog_2^2n)\)

[NOIP2016初赛] \(T(n)=2T(n/4)+\sqrt{n},T(1)=1\)
\(a=2,b=4,k=0,f(n)=\sqrt{n}=\Theta(n^{log_42}log_2^0n)\),所以\(T(n)=\Theta(\sqrt{n}log_2n)\)

posted @ 2019-10-06 19:02  Santiego  阅读(338)  评论(0编辑  收藏  举报