递归方程的Master定理
来源:互联网 发布:遗传算法与svm 编辑:程序博客网 时间:2024/05/20 06:08
什么是Master定理
简介
Master定理也叫主定理。它提供了一种通过渐近符号表示递推关系式的方法。应用Master定理可以很简便的求解递归方程。然而,Master定理也有其不适用的地方,下面会讲到。
定义
假设有如下递归方程:
其中
设
则
一句话概括就是谁大取谁,相等就乘
不适用范围
如上定义所述,当
怎么使用
在应用Master定理时只需自己在心中默默的问上自己几个问题,就可以计算出递归方程的渐进复杂度。下面咱们走上一遍:
a 是谁,b 是谁,g(n) 是多少,f(n) 又是多少?g(n) 大还是f(n) 大还是一样大?- 如果
g(n) 大,那么g(n)f(n)>lgn ? - 如果
f(n) 大,那么f(n)g(n)>lgn ?
既然知道了怎么用,那下面就来几个例题再近距离感受下Master定理的强大。
举几个栗子
二分搜索
二分搜索的递归方程如下:
按照上面的步骤,走上一遍试一下:
在这里,
1.
2.
3. 因此
怎么样,是不是很简单。再举几个不同的栗子接着感受下
二叉树遍历
二叉树遍历的递归方程如下:
继续按照上面的步骤走:
a=2 ,b=2 ,f(n)=1 ,因此,g(n)=n g(n) 大g(n)f(n)=n>lgn - 因此
T(n)=Θ(g(n))=Θ(n)
依然不费力气,下面再来一个
随便想的栗子一
递归方程如下所示:
按照上面的步骤走:
a=2 ,b=4 ,f(n)=nlgn ,则g(n)=nlog42<n f(n) 大f(n)g(n)=nlgnnlog42>lgn - 因此
T(n)=Θ(f(n))=Θ(nlgn)
随便想的栗子二
递归方程如下:
这次再按照上面的步骤走:
a=2 ,b=2 ,f(n)=nlgn , 则g(n)=n f(n) 更大f(n)g(n)=lgn≯lgn - 因此,这个递归方程不能够使用Master定理解决
通过上面的几个栗子应该能对Master定理感觉的差不多了吧?但其实,还是有点小小的问题的。
一点问题
我这篇博客里写的Master定理实际上并不是很严谨,为了更加简便理解与使用对原来的Master定理添加了些自己的理解在里面,完整的Master定理的定义可以参考下面维基百科的描述或者直接到《算法导论》中查看。
当然,我理解的版本的Master定理或许有误,欢迎批评指正。
- 递归方程的Master定理
- 应用Master定理求解递归方程
- 递归方程的特征方程
- 递归方程的求解
- Master定理
- 算法的复杂度与Master定理
- 算法的复杂度与Master定理
- 算法的复杂度与Master定理
- 递归算法的复杂度计算(常用的递归方程求解)
- 递归算法时间复杂度的计算方程式一个递归方程:
- 主定理 Master Theorem
- 主项定理Master Method
- 主项定理Master Method
- 解线性同余方程 中国剩余定理 和 非互质的中国剩余定理
- 0007主项定理Master Method
- 递归算法的时间复杂度终结篇与Master method
- 用初等解法解特定差分方程(韦达定理的应用)
- 欧几里得+扩展的欧几里得算法+线性同余方程+中国剩余定理
- Codeforces
- 服务器架构设计,常见问题分析
- 三次样条插值 C#代码实现
- <HDU>开始刷HDU啦!!!
- 策略类服务的设计实践
- 递归方程的Master定理
- Java复习之StringBuffer类
- SpringBoot 异常处理
- ubuntu14.04安装NVIDIA显卡驱动+CUDA8.0+CuDNN5.1
- LoadRunner11 HTTP 万能录制法
- 面试资料待整理
- mybatis3入门总结
- SSM框架打造完整电商平台(三)
- QQ游戏百万人同时在线服务器架构实现