#分治法 #回溯法 #贪心法 #动态规划法
1. 分治法
要求:
- 该问题的规模缩小到一定的程度就可以容易地解决。
- 可以分解为若干个规模较小的相同问题。
- 利用该问题分解出的子问题的解可以合并成该问题的解。
- 该问题分解出的子问题相互之间是独立的。
步骤:
- 分解
- 求解
- 合并
分治法——递归
- 递归:运行的过程中调用自己。
- 空间复杂度 = 递归调用的深度
2. 动态规划法
基本思想:将求解问题分解成若干个子问题,但是区别于分治法,这些子问题之间是不独立的
用途:经常用于求解具有某种最有性质的问题。
问题适用的性质:1. 最优子结构(问题的最优解中包含子问题的最优解) 2. 重叠子问题(使用的递归算法可以用来反复地解同样的子问题)
3. 贪心算法(局部最优)
问题:1. 最优子结构 2. 贪心选择性质: 问题的整体最优解可以通过一系列局部最优的选择得到。(区别于动态规划法)
4. 回溯法(深度优先搜索)
思想:按选优条件向前搜索,若某一步达不到目标,就退一步重新选择。