1.基本概念
再要两个月就要离开人生的象牙塔,走向工作单位。下面我简单介绍一下动态规划。
动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就成为动态规划。
2.基本思想与策略
基本思想与分治法类似,也是将带求解的问题分为若干子问题,按顺序求解子阶段,前一子问题的解,为后一个子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过策略保留那些有可能达到的最优的局部解,丢弃其他的局部解。依次解决各个子问题,最后一个子问题的解也就是最终的结果。
由于动态规划解决的问题多数有重叠子问题的特点,为了减少重复的计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。
与分治法最大的差别是:适合与动态规划求解的问题,经过分解后得到的子问题往往不是相互的,独立的。
3.适用的情况
适用的情况一般有下面三种特点:
(1)最优化原理:如果问题的最优解,所包含的子问题的解也是最优解。就称该问题具有最优子结构,即满足最优化原理。
(2)无后效性。即在某阶段中的状态一旦确定,就不受这种状态以后决策的影响,也就是说,某状态以后的过程不会影响以前的状态,只和当前的状态有关。
(3)有重叠的子问题。
4.求解的基本步骤
动态规划所处理的问题是一个多阶段决策问题,一般由初始化状态开始,通过对中间段决策的选择,达到结束状态。这些决策形成了一个决策序列,同时确定了完成整个过程的一条活动路线。
初始状态->决策1->决策2->....->决策n->最后结果
(1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段,阶段的划分,注意一定是有序的或者可排序的,否则问题无法求解。
(2)确定状态和状态的变量:将问题发展到各个阶段时所处于的各个客观情况用不同的状态表示出来。
(3)确定决策并写出状态转移方程:因为决策和状态有着天然的联系,状态转移就是根据上一阶段的状态来决定出来本阶段的状态。所以,如果确定了决策,状态转移方程也就可以写出。
(4)寻找边界条件:给出的状态转移方程是一个递推式,需要找到其终止条件。
实际中的应用步骤:
(1)分析最优解的性质,并得到其结果特征
(2)递归的定义最优解
(3)从底向上计算最优值。