嘘~ 正在从服务器偷取页面 . . .

主定_


主定理

证明先不写

将一个规模为 nn 的问题,通过分治得到 aa 个规模为 n/bn/b 的子问题,每个递归带来的额外计算为 f(n)f(n) ,则有

T(n)=aT(n/b)+f(n)T(n)=aT(n/b)+f(n)

其中 a,ba,b 为常数, nN,a1,b>1,n/b 解释为 nbnb

  1. ϵ>0 使得 f(n)=O(nlogbaϵ),则 T(n)=Θ(nlogba)
  2. ϵ0 使得 f(n)=Θ(nlogbalogϵn),则 T(n)=Θ(nlogbalogϵ+1n)
  3. ϵ>0 使得 f(n)=Ω(nlogba+ϵ) ,且 c<1,n1 使得 af(n/b)cf(n) ,则 T(n)=Θ(f(n))

其中 ϵ,c 均为常数。


常用结论

T(n)=2T(n2)+Θ(n)=Θ(nlogn)

T(n)=T(n2)+Θ(n)=Θ(n)

T(n)=T(n2)+Θ(1)=Θ(logn)

T(n)=2T(n2)+Θ(nn)=Θ(nn)


例题


例1

T(n)=6T(n/3)+O(n32)

解:

根据公式 a=6,b=3

logba=log36=1+ln2ln31.63

注:不要问我为什么可以手算出来,因为我背了自然对数表

并且

f(n)=O(n32)=O(nlog36ϵ)

T(n)=Θ(n1+log32)

例2

T(n)=4T(n/2)+Θ(n2)

解:

根据公式 a=4,b=2

logba=2

并且

f(n)=Θ(n2)=Θ(n2log0n)

T(n)=Θ(n2logn)

例3

T(n)=T(n/2)+Θ(n)

解:

根据公式 a=1,b=2

logba=0

并且

f(n)=Θ(n)=Ω(n0+12)

同时

c<1s.t.f(n/2)=22f(n)cf(n)

此时 22<c<1 ,故

T(n)=Θ(n)

例4

T(n)=4T(n/3)+Θ(n2)

解:

根据公式 a=4,b=3

logba=2log321.26

并且

f(n)=Θ(n2)=Ω(n1.26+ϵ)

同时

c<1s.t.4f(n/3)=49f(n)cf(n)

此时 49<c<1

T(n)=Θ(n2)

文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3
  目录