首先要申明的是减治法思想并不等同于分治法思想,减治法技术利用一个问题给定实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,就可以从顶至下(递归),或者从底之上(迭代)地来运用该关系。减治法有3种主要的变种:
1 减去一个常量
2 减去一个常量因子,大多数问题中常量因子为2
3 减去的规模可变
对于第一种情况,举其例。
要求f(n)的解,只需求f(n-1)的解,且f(n)与f(n-1)规模相差常量1。当然并不是所以常量都等于1,也可以为2,这个取决于实际问题。
对于第二种情况,举其例。
对于第三种情况,一个很好的例子就是利用欧几里得算法计算最大公约数,欧几里得算法是基于以下公式:
每一次递归,m的减少的规模是可变的。
减治法算法思想的应用
1 插入排序,Shell排序
2 深度优先查找,广度优先查找
3 拓扑排序
4 生成组合对象算法
减治法算法设计
最新推荐文章于 2023-11-03 12:30:00 发布