算法思想系列--分治策略(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函数等
    其二,有很多数据结构本身固有的递归特性,他们的操作可递归地描述 如二叉树,广义表等

    第三,还有一类问题,虽然问题本身没有明显的递归结构,但用递归求解比迭代求解更简单,如:八皇后问题,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
原创粉丝点击