再读算法导论--零散的笔记

来源:互联网 发布:js cookie 时间 编辑:程序博客网 时间:2024/06/11 19:36

第二章 算法入门

分治法——算法在结构上是递归的时候常用


第15章 动态规划

一。 一个问题的最优解包含其子问题的一个最优解,这个性质为最优子结构。一个问题具有最优子结构是,动态规划可能适用(贪心算法也有可能)。

可以用子问题的最优解构造问题的一个最优解。


子问题之间要是独立的,即一个子问题的解不会影响其他子问题的解,才能有最优子结构。


可遵循的共同模式:

1)问题的一个解可以是做一个选择。如选择一个装配站。

2)对一个给定的问题,已知的是一个可以导致最优解的选择(子问题的最优解),不必关心如何确定此选择。

3)已知此选择后,要确定哪些子问题会随之发生,以及如何描述所得到的子问题。

4)“剪贴”——用于证明在问题的一个最优解中,使用的子问题的解本身也是最优的。即反正。


二。子问题重叠这一性质是是否可以采用动态规划的第二个标志。自底向上的表格法来计算最优代价。


三。动态规划时间依赖于两个因素:子问题总个数、每个子问题中有多少选择


举例:LCS问题:描述最优解的结构——>递归的定义一个最优解的值——>计算最优解的值——>构造最优解

(LCS是一种因为问题的条件而排除子问题的动态规划算法,编辑距离也是。装配线调度和矩阵链乘均不是)


第22章 图基本算法

一。广度优先搜索(breadth-first search)

队列 最短路径 广度优先树

二。深度优先搜索(deepth-first search)