动态规划是很重要的一部分内容,是方法很灵活的一种算法,所以掌握起来算是比较困难,做动态规划的题对思维的灵活性有很大要求,因为对于不同问题,其确定最优解的条件与方法都是不同的,解题模式不固定也就需要具体问题具体分析。动态规划是名气很大的一类算法,它与递推有很多相似之处,递推是从一中状态推出另一种状态,但动态规划是对每次的问题都有最优解的选择然后进行递推。动态规划是解决多阶段决策问题的一种方法。动态规划可以解决的问题也有一定的特点,比如这些问题的整个过程可以划分为若干个互相联系的阶段,并且在它的每一个阶段都需要做出决策,来得到一个最优解,也就是在所有决策中选取一个最优策略 使在预定的标准下达到最优效果。动态规划每一个阶段不同状态的选择,会影响以后的发展,而且如果他有任何一个子阶段不是最优的,那么它对应的最终结果必定不是最优的,就是子问题的最优解导致全局最优,也就是说,问题的子结构也都是最优的,而且一个问题的最优解只与它的子问题的最优解有关,非最优解对问题的求解没有影响。但是动态规划又要求问题是没有反馈的,也就是无后效性原则,即当某个阶段的状态一旦确定,则此后过程的演变不再受此前各种决策及状态的影响,也就是它只与前一个状态有关,与前面其它状态和未来状态都无关,
最优性原理:不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列。
最优决策序列的子序列,一定是局部最优决策子序列。
包含有非局部最优的决策子序列,一定不是最优决策序列。
动态规划的指导思想:在做每一步决策时,列出各种可能的局部解
依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。
以每一步都是最优的来保证全局是最优的。
每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。
每一阶段的最优解问题可以递归地归结为下一阶段各个可能状态的最优解问题,各子问题与原问题具有完全相同的结构。
决策:根据题意要求,对每个阶段所做出的某种选择性操作。
状态转移方程:用数学公式描述与阶段相关的状态间的演变规律。
3、建立状态转移方程(递推公式)。
4、找出边界条件。
5、将已知边界值带入方程。
6、递推求解。
在很多时候动态规划实际上是一种排除重复计算的算法,也就是动态规划是用空间换时间,类比于递推问题的预处理。
在用动态规划求解问题时,首先重要的就是找到问题的状态。然后在找状态转移方程。最优性原理:不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列。
最优决策序列的子序列,一定是局部最优决策子序列。
包含有非局部最优的决策子序列,一定不是最优决策序列。
动态规划的指导思想:在做每一步决策时,列出各种可能的局部解
依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。
以每一步都是最优的来保证全局是最优的。
动态规划问题具有以下基本特征:
问题具有多阶段决策的特征。
每一阶段都有相应的“状态”与之对应,描述状态的量称为“状态变量”。每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。
每一阶段的最优解问题可以递归地归结为下一阶段各个可能状态的最优解问题,各子问题与原问题具有完全相同的结构。
动态规划的几个概念:
阶段:据空间顺序或时间顺序对问题的求解划分阶段。
状态:描述事物的性质,不同事物有不同的性质,因而用不同的状态来刻画。对问题的求解状态的描述是分阶段的。决策:根据题意要求,对每个阶段所做出的某种选择性操作。
状态转移方程:用数学公式描述与阶段相关的状态间的演变规律。
动态规划的一般解题步骤:
1、判断问题是否具有最优子结构性质,若不具备则不能用动态规划。
2、把问题分成若干个子问题(分阶段)。3、建立状态转移方程(递推公式)。
4、找出边界条件。
5、将已知边界值带入方程。
6、递推求解。