【2】渐进符号、递归及解

渐进符号

渐进符号介绍

  • O()O()f(n)=O(g(n))f(n)=O(g(n))表示存在适当的常数c>0,n0>0c>0,n_0>0,使得f(n)cg(n)f(n)\le cg(n),比如n2=O(n3)n^2=O(n^3)
  • Ω()\Omega()Ω(g(n))=f(n)\Omega(g(n))=f(n)表示存在适当的常数c>0,n0>0c>0,n_0>0,使得0cg(n)f(n)0 \le cg(n) \le f(n),比如n=Ω(lgn)\sqrt{n}=\Omega(lgn)
  • Θ()=O(g(n))Ω(g(n))\Theta()=O(g(n)) \cap \Omega(g(n)),忽略常数项的相等,比如n2+O(n)=Θ(n2)n^2+O(n) =\Theta(n^2)
  • o()o()f(n)=o(g(n))f(n)=o(g(n))表示对于任意cc存在适当的常数n0>0n_0>0,使得f(n)<(n)f(n)<(n),比如2n2=o(n3)2n^2=o(n^3)n22=Θ(n2)\frac{n^2}{2}=\Theta(n^2)不是oωo、\omega关系,因为它是严格的n2n^2
  • ω()\omega()ω(g(n))=f(n)\omega(g(n))=f(n)表示对于任意cc存在适当的常数n0>0n_0>0,使得0<cg(n)<f(n)0 < cg(n) < f(n),比如n=ω(lgn)\sqrt{n}=\omega(lgn)

解递归

代换法(Substitution method)

介绍

  • 猜解的形式
  • 按照数学归纳法验证是否正确
  • 设法找出解

举例

比如,T(n)=4T(n/2)+nT(n) = 4T(n/2) + n,猜想T(n)=O(n3)T(n)=O(n^3),则在k<nk<nT(k)ck3T(k) \le ck^3,利用数据归纳证明T(n)cn3T(n) \le cn^3
【2】渐进符号、递归及解
下面尝试证明更紧的上界O(n2)O(n^2)
【2】渐进符号、递归及解
所以不能小于等于n2n^2,但从直观上看n2n^2的形式应该成立,所以考虑
【2】渐进符号、递归及解

递归树(Recursion-tree method)

介绍

  • 执行成本高
  • 可以辅助代换法第一步猜想解
  • 有点不可靠,中间过程迭代容易有点问题

举例

T(n)=T(n/4)+T(n/2)+n2T(n) = T(n/4) + T(n/2) + n^2
用树的形式展开递归

【2】渐进符号、递归及解
【2】渐进符号、递归及解

【2】渐进符号、递归及解
【2】渐进符号、递归及解

主方法(master method)

介绍

只能用于特定的递归式T(n)=aT(n/b)+f(n),a1,b>1,fT(n) = aT(n/b) + f(n),a\ge 1,b>1,f函数渐进趋正(对足够大的n,f(n)f(n)是正的)。
三种常见的情况:
【2】渐进符号、递归及解
【2】渐进符号、递归及解

举例

【2】渐进符号、递归及解
【2】渐进符号、递归及解

推导

【2】渐进符号、递归及解
【2】渐进符号、递归及解
【2】渐进符号、递归及解