MIT算法导论公开课之第2课 渐进符号、递归及解法

O符号(上界)

f(n)=O(g(n)) (<=)
存在c>0 n0>0 当n>=n0时 使得0<=f(n)<=cg(n)。
O(g(n))表示符合上述条件的函数集,公式中的等号的作用类似于属于,所以等号不可逆。
  • Ex
    • f(n)=n^3+O(n^2)
      存在h(n)属于O(n^2)使得f(n)=n^3+h(n)。
    • n^2+O(n)=O(n^2)
      对任意的f(n)属于O(n)总存在h(n)属于O(n^2)使得n^2+ f(n)= h(n)。

Ω符号(下界)

f(n)= Ω(g(n)) (>=)
存在c>0 n0>0 当n>=n0时 使得0<=cg(n)<=f(n)。
  • Ex
    • sqrt(n)= Ω(lgn)

Θ符号

Θ(g(n))= O(g(n))∩Ω(g(n))(=)

o符号

f(n)=o(g(n))(<)
对任意的c存在n0>0 当n>=n0时 使得0<=f(n)<=cg(n)。

ω符号

f(n)=ω(g(n))(>)
对任意的c存在n0>0 当n>=n0时 使得0<=cg(n)<=f(n)。

求解递归式的方法

代换法

1.猜测结果。
2.验证递归式是否按照数学归纳法满足条件。
3.求出系数使问题成立。
  • Ex
    T(n)=4T(n/2)+n(T(1)=Θ(1))
    • 思路1
      1.假设T(n)=O(n^3)。
      2.则有T(k)<=ck^3(k小于n)
      T(n)=4T(n/2)+n<=4c(n/2)^3+n=(cn^3)/2+n=cn^3-((cn^3)/2-n)。
      3.若假设成立则需(cn^3)/2-n>=0 因为c的取值任意 例如当c的值为2时 不等式成立。
      验证基本情况T(1)=Θ(1)<=c1^3 当c取一个足够大的数时,不等式成立。
    • 思路2
      1.假设T(n)=O(n^2)。
      2.则有T(k)<=ck^2(k小于n)。
      T(n)=4T(n/2)+n<=4c(n/2)^2+n=cn^2+n=cn^2-(-n)。
      3.若假设成立则需-n>=0(进入死路)。
    • 思路3
      改进归纳假设:
      1.假设T(n)=O(n^2)。
      2.则有T(k)<=c1·k^2-c2·k(k小于n)。
      T(n)=4T(n/2)+n<=4(c1·(n/2)^2-c2·(n/2))+n=c1·n^2-c2·n-(-1+c2)·n。
      3.若假设成立则需(-1+c2)·n>=0当c2>=1时 不等式成立。
      4.验证基本情况T(1)=Θ(1)<=c1·1^2-c2·1 当c1取一个足够大的数时,不等式成立。

递归树法

这个方法不够严谨,比较好的解题过程应该是用递归树法求出结果后再用代换法验证。
  • Ex:
    T(n)=T(n/4)+T(n/2)+n^2
    MIT算法导论公开课之第2课 渐进符号、递归及解法_第1张图片

主方法

T(n)=aT(n/b)+f(n)(a>=1 b>1 f(n)渐进趋正)

注:log(b)a表示以b为底a的对数,lg表示以2为底。

  • case 1
    f(n)=O(n^(log(b)a-ε)) (ε>0)
    =>T(n)=Θ(n^log(b)a)
  • case 2
    f(n)=Θ (n^log(b)a·(lgn)^k)(k>=0)
    =>T(n)=Θ(n^log(b)a·(lgn)^(k+1))
  • case 3
    f(n)=Ω(n^(log(b)a+ε))(ε>0)&& 存在0<ε‘<1,使得af(n/b)<=(1-ε’)·f(n)
    =>T(n)=Θ(f(n))
  • Ex
    • T(n)=4T(n/2)+n
      n^log(b)a=n^2
      n小于n^2
      为case 1=> T(n)=Θ(n^2)
    • T(n)=4T(n/2)+n^2
      n^log(b)a=n^2
      n^2等于n^2
      为case 2=> T(n)=Θ(n^2·lgn)
    • T(n)=4T(n/2)+n^3
      n^log(b)a=n^2
      n^3大于n^2
      为case 3=> T(n)=Θ(n^3)
    • T(n)=4T(n/2)+n^2/lgn
      注意第2种情况要求k>=0,所以主方法不适用,可尝试用递归树法。

课外补充

MIT算法导论公开课之第2课 渐进符号、递归及解法_第2张图片

你可能感兴趣的:(算法导论公开课笔记)