您的位置:首页 > 其它

主项定理Master Method 计算时间复杂度

2015-09-09 20:49 609 查看
在面试题目中有一部分是让大家求时间复杂度的问题,例如给出我们: T(n) = a * T(n/b) + f(n) (a ³ 1,b > 1,f(n)一般是个简单函数)这样的递归方程,计算其时间复杂度。

这时可以有2种方法,来计算时间复杂度。

一是用递归树,逐层代入原式,最终形成一个级数,然后用一个函数来表达,得到T(n)。

(我们这里主要讨论第二种方法,递归树详见 http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html )。

二是应用主项定理Master Method 。其实,主项定理也就是对递归树方法的一种归纳,形成了固定的计算方式,并分三种情形来计算。这三种情形主要是比较
nlogba 与 f(n),为什么要比较这两个函数?

观察原式,可以看出,nlogba其实相当于用递归树方法解出的递归方程的右侧的第一项,而f(n)则是递归方程的右侧的第二项,这样,主项定理实际上是在比较组成结果的两个函数项,而且这种比较是按照数量级(或者说是变化幅度)来比较的,也就是说,如2n
与 28n是数量级(变化幅度)相当的。可以简单地说,递归方程的右侧的两项,哪项变化的块,T(n)就属于哪项的数量级。



接下来我们做几道题目来巩固一下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: