目录
1. 利用数列知识
- 累加法:递推关系式为
采用累加法。
- 累乘法:递推关系式为
采用累乘法。
- 构造法:递推关系式为(1)
,(2)
,都可以通过恒等变形,构造出等差或等比数列,利用等差或等比数列的定义进行解题,其中的构造方法可通过待定系数法来进行。
- 和化项法:递推公式为
或
一般利用

5. 用特征方程求解递推方程(感觉比较生僻,不做解释)
6. 迭代法:从原始递推方程开始,反复将对于递推方程左边的函数用右边的等式代入,直到得到初值,然后将所得的结果进行化简。
例如在调用归并排序mergeSort(a,0,n-1)对数组a[0...n−1]排序时,执行时间T(n)的递推关系式为:
![]()
其中,O(n)为merge()所需要的时间,设为cn(c为正常量)。因此:

忽略求解细节。在我们求解递归式时,因为最终是要求得一个时间上限,所以在求解时常常省略一些细节。比如mergeSort(a,0,n-1)运行时间的实际递归式应该是:

但我们忽略这些上取整、下取整以及边界条件,甚至假设问题规模,这都是为方便求解而忽略的细节。经验和一些定理告诉我们,这些细节不会影响算法时间复杂度的渐近界。
类似的,我们也可以用迭代法求解汉诺塔递归求解时的时间复杂度。但遗憾的是,迭代法一般适用于一阶的递推方程。对于二阶及以上(即T(n)依赖它前面更多个递归项)的递推方程,迭代法将导致迭代后的项太多,从而使得求和公式过于复杂,因此需要将递推方程化简,利用差消法等技巧将高阶递推方程化为一阶递推方程。如在求快速排序算法平均时间复杂度T(n)的递推方程,T(n)依赖T(n−1)、T(n−2)、...、T(1)等所有的项,这样的递推方程也称为全部历史递推方程。(这里省略快速排序算法平均复杂度T(n)的求解过程)
小结:上面6种递推关系是高中、本科知识,在此重点介绍了迭代法,其它几种方法虽未在本篇中使用,但可以加深对递推式求解的认识。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



