动态规划和分治法一样,通过组合子问题的解,而解决整个问题的解。。
动态规划重复求解公共的子问题。
动态规划对每个子问题之求解一次,将其结果保存在一张表中,从而避免每次遇到各个问题时
重新计算答案。
动该规划的算法:
1,描述最优解结构
2,递归定义最优解的值
3,按自底向上的方式计算最优解的值
4,由构造出的结果构造一个最优解
步骤一,最优子结构:
一个问题的最优解包含子问题的最优解,我们称这个性质为最优子结构。这个是是否可以用
动态规划问题的标志之一
可以用最优子结构来构造原问题的一个最优解。。
对于装配线调度问题,通过建立子问题的最优解的问题,建立原问题的最优解。(递归的调
用)
步骤二,一个递归的解
利用子问题的最优解来递归定义一个最优解的值
分析定义子问题的最优解的值,用一个数组来存储
步骤三,计算,用一个数组存储
步骤四,既求得最优解的过程
动态规划之---最优子结构
利用子问题的最优解来构造问题的最优解
寻找最优子结构时遵循的模式:
1,问题的一个解可以是做出一个选择
2,假设对一个给定的问题,已知的是一个可以导致最优解的选择。不必关心如何确定这个选择
,尽管假定它是已知的。
3,在已知这个选择后,要确定哪些子问题会随之发生,以及如何最好的描述所得到的子问题的
空间。
4,利用剪贴技术,剪除肥最优解,贴上最优解
最优子结构在问题域中以两种方式变化:
1,有多少个子问题被使用在原问题的一个最优解中,以及
2,再决定一个最优解中使用哪些子问题时有多少个选择
动态规划算法的运行时间:依赖两个因素的乘积,子问题的总个数以及每个子问题有多少个选择
动态规划以自底向上的方式来利用最优子结构。找到子问题的最优解,解决子问题,然后找到问题
的一个最优解。。