动态规划(算法导论学习笔记)
2013-04-22 21:40
525 查看
动态规划是通过组合子问题的解而解决整个问题的。和分治法的区别在于:分治法算法是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。与此不同,动态规划适用于子问题不是独立的情况,也就是各子问题包含公共的子子问题,动态规划算法是对每个子子问题只求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算答案。
动态规划常用于最优化问题。此类问题可能有很多种可行解。每个解有一个值,而我们希望找出一个具有最优(最大或最小)值的解。
动态规划算法的设计可以分为如下4个步骤:
1、描述最优解的结构。
2、递归定义最优解的值。
3、按自底向上的方式计算最优解的值。
4、由计算出的结果构造一个最优解。
动态规划的最优子结构:一个问题的最优解包含了子问题的一个最优解。
是否可以采用动态规划的两个标志:1、最优子结构 2、子问题重叠
在找寻最优子结构时,可以遵循一种共同的模式:
1、问题的一个解可以是做一个选择。例如,选择一个前一个装配线装配站;或者选择一个下标以在该位置分裂矩阵链。做这种选择会得到一个或多个有待解决的子问题。
2、假设对一个给定的问题,已知的是一个可以导致最优解的选择。
3、在已知这个选择后,要确定哪些子问题会随之发生,以及如何最好地描述所得到的的子问题空间。
4、利用一种“剪贴”技术,来证明在问题的一个最优解中,使用的子问题的解本身也必须是最优的。通过假设每一个子问题的解都不是最优解,然后导出矛盾。
未完待续。。。
动态规划常用于最优化问题。此类问题可能有很多种可行解。每个解有一个值,而我们希望找出一个具有最优(最大或最小)值的解。
动态规划算法的设计可以分为如下4个步骤:
1、描述最优解的结构。
2、递归定义最优解的值。
3、按自底向上的方式计算最优解的值。
4、由计算出的结果构造一个最优解。
动态规划的最优子结构:一个问题的最优解包含了子问题的一个最优解。
是否可以采用动态规划的两个标志:1、最优子结构 2、子问题重叠
在找寻最优子结构时,可以遵循一种共同的模式:
1、问题的一个解可以是做一个选择。例如,选择一个前一个装配线装配站;或者选择一个下标以在该位置分裂矩阵链。做这种选择会得到一个或多个有待解决的子问题。
2、假设对一个给定的问题,已知的是一个可以导致最优解的选择。
3、在已知这个选择后,要确定哪些子问题会随之发生,以及如何最好地描述所得到的的子问题空间。
4、利用一种“剪贴”技术,来证明在问题的一个最优解中,使用的子问题的解本身也必须是最优的。通过假设每一个子问题的解都不是最优解,然后导出矛盾。
未完待续。。。
相关文章推荐
- 算法导论学习笔记(十三):动态规划(三):01背包问题
- 【算法学习笔记】71.动态规划 双重条件 SJTU OJ 1124 我把助教团的平均智商拉低了
- 【算法学习笔记】60.经典动态规划 SJTU OJ 1370 赫萝的桃子
- 【算法学习笔记】之动态规划
- 【算法学习笔记】80.二维动态规划 SJTU OJ 3022 二哥要翘课
- 【算法学习笔记】81.动态规划 分类讨论 SJTU OJ 1075 括号匹配升级
- 【算法学习笔记】43.动态规划 逆向思维 SJTU OJ 1012 增长率问题
- 【算法学习笔记】27.动态规划 解题报告 SJTU OJ 1254 传手绢
- 【算法学习笔记】23.动态规划 解题报告 SJTU OJ 1280 整装待发
- 【算法学习笔记】23.动态规划 解题报告 SJTU_OJ 1280 整装待发
- 【算法学习笔记】30.动态规划 01背包和完全背包的关系
- 算法笔记:动态规划背包问题(未完待续)
- 算法导论学习笔记-第2章 算法入门
- 算法导论学习笔记-第十八章-B树
- 算法学习之动态规划(leetcode 174. Dungeon Game)
- 【算法导论】学习笔记——第8章 线性时间排序
- 【算法之动态规划(五)】DP规划思想学习:从《算法导论》到《算法设计》
- Introduction to Algorithms 算法导论 第3章 函数的增长 学习笔记及习题解答
- 【算法导论】学习笔记——第12章 二叉搜索树
- 算法导论-学习笔记(1)