Master定理

277 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

新学的Master定理

Master定理目的:

求解T(n)=aT(n/b)+f(n)型方程,a>=1,b>0是常数,f(n)是正函数。

Master定理:

设a>=1,和b>1是常数,f(n)是一个函数,T(n)是定义在非负整数集上的函数T(n)=aT(n/b)+f(n).T(n)可以如下求解:

  • 若f(n)=O(n^logba-ε),ε>0是常数,则T(n)=θ(n^logba);
  • 若f(n)=θ(nlogba),则T(n)=θ(n^logba * lgn);
  • 若f(n)=Ω(n^logba+ε),ε>0是常数,且对于所有充分大的naf(n/b)<=cf(n),c>1是常数,则T(n)=θ(f(n)).

直观地:我们用f(n)与n^logba比较:

  • 若nlogba大,则T(n)=θ(n^logba);
  • 若f(n)大,则T(n)=θ(f(n));
  • 若f(n)与n^logba同阶,则T(n)=θ(n^logba * lgn) = θ(f(n)*lgn);

image.png

用数轴方便记忆:

image.png

在中间红色部分,Master定理无能为力。就是说要在n^ε或n^-ε的多项式倍数内有效哦

Master定理的使用(f(n)和n^logba谁大T(n)就取谁的表达式)

例一:求解T(n) = 9T(n/3) + n.

解:a=9,b=3,f(n)=n,n^logba = θ(n^2)

因为f(n)等于n,但n^logba=θ(n^2),f(n)<n^logba所以T(n)=θ(nlogba)=θ(n^2).

image.png

例二:求解T(n)=T(2n/3)+1.

解:a=1,b=3/2,f(n)=1,n^logba=θ(1)

因为f(n)等于1,且等于n^logba,所以同阶T(n)=θ(lgn);

image.png

例三:求解T(n)=3T(n/4)+nlgn

解:a=3,b=4,f(n)=nlgn,n^logba=θ(n^0.79)

因为f(n)>n^logba,所以T(n)=θ(f(n))=θ(nlgn)

image.png

例四:求解T(n)=2T(n/2)+nlgn

解:a=2,b=2,f(n)=nlgn,n^logba=n

f(n)>n^logba,但不是大于n^ε倍,所以处于红色区域,该题目不适合用Master定理。无法求解T(n).

看不懂没关系,去看视频,指路->借鉴video:👉 中国大学MOOC算法设计与分析入门2.3递归方程