算法---->动态规划(一)
动态规划
多阶段决策问题
问题的活动过程分为若干相互联系的阶段,任一阶段i以后的行为仅依赖于i阶段的过程状态,而与i阶段之前的过程如何达到这种状态的方式无关。在每一个阶段都要做出决策,这一系列的决策称为多阶段决策过程(multistep decision process) 。
根据这类问题多阶段决策的特性, 提出了解决这类问题的“最优性原理”,把多阶段过程转化为一系列单阶段问题,从而创建了一种新的算法设计方法—动态规划。
最优性原理(Principleof Optimality)
过程的最优决策序列具有如下性质:无论过程的初始状态和初始决策是什么, 其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列
在多阶段决策过程的每一个阶段, 都有多种决策可供选择,但必须从中选取一种。一旦各种阶段的决策选定之后,就构成了一个决策序列。决策序列不同会导致问题结果也不同。
动态规划的目标: 在所有允许选择的决策序列中选取一个会获得问题最优解的决策序列,即最优决策序列。
利用动态规划求解问题的前提
1) 证明问题满足最优性原理
如果对所求解问题证明满足最优性原理,则说明用动态规划方法有可能解决该问题
2) 获得问题状态的递推关系式
得各阶段间的递推关系式是解决问题的关键。
动态规划模型的基本要素
阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间特征来划分阶段,以便按阶段的次序解优化问题。阶段变量一般用k=1,2,..,n表示
状态(state)表示每个阶段开始时过程所处的自然状况。它应该能够描述过程的特征并且具有无后向性,即当某阶段的状态给定时,这个阶段以后过程的演变与该阶段以前各阶段的状态无关,即每个状态都是过去历史的一个完整总结。通常还要求状态是直接或间接可以观测的。
描述状态的变量称状态变量(state variable)。变量允许取值的范围称允许状态集合(set ofadmissible states)
决策:当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这种选择手段称为决策(decision) 。
决策组成的序列称为策略(policy)。由初始状态x1开始的全过程的策略记作p1,n(x1),即p1,n(x1)={u1(x1),u2(x2),...,un(xn)}。
状态转移方程
在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用状态转移方程(equation ofstate)表示这种演变规律
指标函数(objective function)是衡量过程优劣的数量指标,它是关于策略的数量函数,从阶段k到阶段n的指标函数用Vk,n(xk,pk,n(xk))表示,k=1,2,...,n。
使指标函数Vk,n达到最优值的策略是从k开始的后部子过程的最优策略,
动态规划的基本思想:
(1)动态规划方法的关键在于正确写出基本的递推关系式和恰当的边界条件。要做到这一点,必须将问题的过程分成几个相互联系的阶段,恰当选择状态变量,决策变量和定义最优值函数,从而把一个大问题化成一族同类型的子问题,然后逐个求解。即从边界条件开始,逐段递推寻优,在每一个子问题的求解中,均利用了它前面的子问题的最优化结果,依次进行,最后一个子问题的最优解,就是整个问题的最优解。
(2)在多阶段决策过程中,动态规划方法是既把当前一段和未来各段分开,又把当前的效益和未来效益综合起来考虑的一种最优化方法。因此,每段决策的选取是从全局来考虑的,与该段的最优选择答案一般是不同的。
(3)在求整个问题的最优策略时,由于初始状态是已知的,而每段的决策都是该段状态的函数,故最优策略所经的各段状态便可逐次变换得到,从而确定最优路线。
最优化决策序列的表示
向前处理法(forwardapproach)
最优决策序列的表示法启发我们从最后阶段开始,以逐步向前递推的方式, 列出求解前一阶段决策值的递推关系式, 即根据xi+1, … xn的那些最优决策序列来列出求取xi决策值的关系式
向后处理法(backwardapproach)
从初始阶段开始, 以逐步向后递推的方式, 列出求解后一阶段决策值的递推关系式, 即根据x1, … xi-1的那些最优决策序列来列出求取xi决策值的关系式
动态规划应用举例
多段图
0/1背包问题
每对定点之间的最短路径
可靠性设计
流水线调度问题
货郎担问题
最优二分检索树