上一篇介绍了分治思想与求解递归表达式初步,但是像递归树方法和替换法都有自己明显的缺点,那有没有什么更好的方法呢?
这一篇我就主方法(master method)给出介绍和证明,相信之前不了解该方法的同学通过本篇博客的介绍之后,能有一种醍醐灌顶的感觉,能对递归表达式的求解方法有一个形象的认识和理解。
1、主定理
主方法给出求解形如T(n) = aT(n/b) + f(n)的递归表达式的定理性方法,这里常数a>=1,b>1,f(n)是一个渐进趋正的函数(存在n0,当n>n0,有f(n)>0)。
递归式T(n) = aT(n/b) + f(n)描述了将规模为n的问题划分为a个子问题的算法的运行时间,每个子问题规模为n/b,a和b是正整数。a个子问题被分别递归地求解,时间各为T(n/b)。划分原问题和合并答案的代价由函数f(n)描述。
*主定理:设a>=1,b>1为常数,f(n)是一个函数,T(n)由递归式T(n) = aT(n/b) + f(n)对非负整数定义。那么T(n)可能有如下的渐进界,<