携手创作,共同成长!这是我参与「掘金日新计划 · 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);
用数轴方便记忆:
在中间红色部分,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).
例二:求解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);
例三:求解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)
例四:求解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递归方程