算法思想系列--分治策略(Divide-Conquer-Combine)(待补充)
来源:互联网 发布:001a航母 知乎 编辑:程序博客网 时间:2024/06/04 17:52
算法思想系列--分治策略(Divide-Conquer-Combine)
分治策略(Divide-Conquer-Combine), 随机算法(Randomized Algorithms) 动态规划(Dynamic Programming), 贪心算法(Greedy Algorithms),摊还分析(Amortized Analysis),NP完全性(NP-Completeness),近似算法(Approximation Algorithms), , 回溯算法(back-track algorithm)
分治策略递归地求解一个问题,在每层递归中应用如下三个步骤:
(1) 分解(Divide)步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规划更小
(2) 解决(Conquer)步骤递归地求解出子问题,如果子问题的规划足够小,则停止递归,直接求解
(3) 合并(Combine)步骤将子问题的解组合成原问题的解。
7.1 理解递归
阶乘问题--> 尾递归(Tail Recursion)实现
迭代解决方案通常比递归解决方案更有效率(性能开销方面)
递归是程序设计中一个强有力的工具。
其一,有很多数学函数是递归定义的,如阶乘, 2阶Fibonacci数列,Ackerman函数等
其二,有很多数据结构本身固有的递归特性,他们的操作可递归地描述 如二叉树,广义表等
分治策略(Divide-Conquer-Combine), 随机算法(Randomized Algorithms) 动态规划(Dynamic Programming), 贪心算法(Greedy Algorithms),摊还分析(Amortized Analysis),NP完全性(NP-Completeness),近似算法(Approximation Algorithms), , 回溯算法(back-track algorithm)
分治策略递归地求解一个问题,在每层递归中应用如下三个步骤:
(1) 分解(Divide)步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规划更小
(2) 解决(Conquer)步骤递归地求解出子问题,如果子问题的规划足够小,则停止递归,直接求解
(3) 合并(Combine)步骤将子问题的解组合成原问题的解。
7.1 理解递归
阶乘问题--> 尾递归(Tail Recursion)实现
迭代解决方案通常比递归解决方案更有效率(性能开销方面)
递归是程序设计中一个强有力的工具。
其一,有很多数学函数是递归定义的,如阶乘, 2阶Fibonacci数列,Ackerman函数等
其二,有很多数据结构本身固有的递归特性,他们的操作可递归地描述 如二叉树,广义表等
第三,还有一类问题,虽然问题本身没有明显的递归结构,但用递归求解比迭代求解更简单,如:八皇后问题,Hanoi塔问题,字符串全排列,二分搜索
参考:
Recursion: https://en.wikipedia.org/wiki/Recursion
Recursion (computer science) https://en.wikipedia.org/wiki/Recursion_%28computer_science%29#Types_of_recursion
递归的种类: http://blog.chinaunix.net/uid-20341252-id-1702159.html
0 0
- 算法思想系列--分治策略(Divide-Conquer-Combine)(待补充)
- Divide & Conquer 分治策略
- 分治策略Divide and Conquer
- 分治算法(divide and conquer)
- 分治算法Divide-and-Conquer概述
- 分治算法(Divide ans conquer ,D&C)
- 分治算法 Divide and Conquer Algorithm
- 分治 Divide and Conquer
- 漫谈算法(四)分治算法 Divide and Conquer Algorithm
- 漫谈算法(四)分治算法 Divide and Conquer Algorithm
- 算法第二周: Divide and Conquer-分治算法
- 分治算法(Divide-and-Conquer Algorithm)一
- 分治算法(Divide-and-Conquer Algorithm)二
- 分治法(divide-and-conquer)
- 分治法(divide & conquer)应用举例
- 算法入门(1)——分治算法(Divide and Conquer)
- 【Python排序搜索基本算法】之归并排序&分治法(Merge Sort and Divide & Conquer)
- 基础算法1——分治(divide and conquer)【未完待续】
- myeclipse安装和基本配置
- iOS 网络篇4—GET请求和POST请求
- 《剑指offer》——二维数组中的查找
- SODBASE CEP学习进阶篇(二)续:日志采集-Flume Syslog采集
- ReactiveCocoa操作方法(过滤,秩序,时间,重复)
- 算法思想系列--分治策略(Divide-Conquer-Combine)(待补充)
- LeetCode-78.Subsets
- POJ1287 Networking
- SonarQube
- mybatis 中resultType与resultMap区别
- ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing
- next-permutation
- linux的源
- 非root用户安装python第三方模块