第二章 算法入门
分治法——算法在结构上是递归的时候常用
第15章 动态规划
一。 一个问题的最优解包含其子问题的一个最优解,这个性质为最优子结构。一个问题具有最优子结构是,动态规划可能适用(贪心算法也有可能)。
可以用子问题的最优解构造问题的一个最优解。
子问题之间要是独立的,即一个子问题的解不会影响其他子问题的解,才能有最优子结构。
可遵循的共同模式:
1)问题的一个解可以是做一个选择。如选择一个装配站。
2)对一个给定的问题,已知的是一个可以导致最优解的选择(子问题的最优解),不必关心如何确定此选择。
3)已知此选择后,要确定哪些子问题会随之发生,以及如何描述所得到的子问题。
4)“剪贴”——用于证明在问题的一个最优解中,使用的子问题的解本身也是最优的。即反正。
二。子问题重叠这一性质是是否可以采用动态规划的第二个标志。自底向上的表格法来计算最优代价。
三。动态规划时间依赖于两个因素:子问题总个数、每个子问题中有多少选择
举例:LCS问题:描述最优解的结构——>递归的定义一个最优解的值——>计算最优解的值——>构造最优解
(LCS是一种因为问题的条件而排除子问题的动态规划算法,编辑距离也是。装配线调度和矩阵链乘均不是)
第22章 图基本算法
一。广度优先搜索(breadth-first search)
队列 最短路径 广度优先树
二。深度优先搜索(deepth-first search)