您的位置:首页 > 其它

动态规划(算法导论学习笔记)

2013-04-22 21:40 525 查看
动态规划是通过组合子问题的解而解决整个问题的。和分治法的区别在于:分治法算法是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是独立的情况,也就是各子问题包含公共的子子问题,动态规划算法是对每个子子问题只求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算答案。

动态规划常用于最优化问题。此类问题可能有很多种可行解。每个解有一个值,而我们希望找出一个具有最优(最大或最小)值的解。

动态规划算法的设计可以分为如下4个步骤:

1、描述最优解的结构。

2、递归定义最优解的值。

3、按自底向上的方式计算最优解的值。

4、由计算出的结果构造一个最优解。

动态规划的最优子结构:一个问题的最优解包含了子问题的一个最优解。

是否可以采用动态规划的两个标志:1、最优子结构   2、子问题重叠

在找寻最优子结构时,可以遵循一种共同的模式:

1、问题的一个解可以是做一个选择。例如,选择一个前一个装配线装配站;或者选择一个下标以在该位置分裂矩阵链。做这种选择会得到一个或多个有待解决的子问题。

2、假设对一个给定的问题,已知的是一个可以导致最优解的选择。

3、在已知这个选择后,要确定哪些子问题会随之发生,以及如何最好地描述所得到的的子问题空间。

4、利用一种“剪贴”技术,来证明在问题的一个最优解中,使用的子问题的解本身也必须是最优的。通过假设每一个子问题的解都不是最优解,然后导出矛盾。

未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: