递归分析
递归分析一般利用的方法是主定理,辅助的方法有替换法(也就是数学归纳法),递归树法~
主定理:
递归树:
注意:主定理的证明也是通过递归树的方法进行的。
分治方法算是算法设计中一种很常见的设计方式,一般能够大大提高算法的时间复杂度的~分治的思想很简单,就是将一个问题切分为两个或者多个独立的子问题,子问题的解决方案同,子问题解决之后通过合并算法组合成更大问题的结果,所以分治算法主要有三个步骤,Divide(切分子问题的方案)、Conquer(一般子问题独立相同的,所以这里一般是递归的解决子问题)、Combine(子问题提升至更大问题的时候需要对子问题的解决方案进行合并)。分治算法还是对待不同的问题需要不同的分治方案,所以掌握缩小问题的规模的思想还是比较重要的,比较高级的动态规划和贪心也都是通过缩小问题规模提升时间复杂度的。所以感觉还是多掌握一些具体实例的分治方案,这样碰到陌生问题的时候可以像熟悉的问题靠拢,所以接下来具体分析一下算法导论中一些分治的实例。
分治算法
1. 斐波那契数列
2. 矩阵乘法
下面是斯特拉森算法(目前可行的最优算法):
3. 树的面积
参考:http://www.cnblogs.com/weixliu/archive/2012/12/21/2827685.html