- 算法
-
分治法递归法贪心算法动态规划法回溯法
- 目的
- . 分析某个算法的设计、时间复杂度、空间复杂度
分治法
- 特点
- . 问题可以划分为n个小问题
- . 小问题彼此独立
- . 与原问题形式相同
- . 采用递归分而治之:解决子问题从而解决主问题
- 步骤
- . 分解→解决→合并
- 常见算法
-
快速排序二分查找合并排序
递归法
- 特点
- . 深度优先查找
- . 走不通|找不到就回退;逐步试探
- . 二叉树的遍历
贪心算法
- 特点
- . always makes the choice that seems to be the best at that moment.
- . not an algorithm, it is a technique
- . Minimum Spanning Tree、Huffman codes ( data-compression codes )
- . 局部最优
- . 如果贪心不成立,则使用动态规划
回溯法
- 特点
- . 递归的特例
- . 选优搜索
- . 要求设计者找出所有可能的搜索方法。是一种穷举搜索法
- . 走不通|找不到就回退;逐步试探
- . 试探的过程中,产生解空间 - 已经获取了部分答案
- 经典算法
-
迷宫N皇后图的深度遍历DFS正则表达式匹配
- 特点
- . 将问题划分为诺干子问题;但每个子问题不是彼此独立
- . 保存每个子问题的结果;通过查表的方法确定最优解;最优解不唯一
- . 从递归相反的思路去思考
- . 背包问题
动态规划法