动态规划原理总结

                          动态规划

 

关健字:阶段  状态  决策  函数递推式

摘要:

   动态规划是解决多阶段决策最优化问题的一种思想方法。所谓“动态”,指的是在问题的多阶段决策中,按某一顺序,根据每一步所选决策的不同,将随即引起状态的转移,最终在变化的状态中产生一个决策序列动态规划就是为了使产生的决策序列在符合某种条件下达到最优。动态规划思想近来在各类型信息学竞赛中频繁出现,它的应用也越来越受人重视。本文就是讨论如何运用动态规划的思想设计出有效的数学模型来解决问题。

 

一  动态规划问题的数学描述

 

    我们先来看一个简单的多阶段决策问题。

    [例1]现有一张地图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。如图1所示,试找出从结点1到结点10的最短路径。

   
 第一阶段 第二阶段 第三阶段   第四阶段   第五阶段

                            图1

本问题的解决可采用一般的穷举法,即把从结点1至结点10的所有道路列举出来,计算其长度,再进行比较,找出最小的一条。虽然问题能解决,但采用这种方法,当结点数增加,其运算量将成指数级增长,故而效率是很低的。

分析图1可知,各结点的排列特征:

(1) 可将各结点分为5个阶段;

(2) 每个阶段上的结点只跟相邻阶段的结点相连,不会出现跨阶段或同阶段结点相连的情况,如不会出现结点1与结点      4连、结点4与结点5连的情况。

(3) 除起点1和终点10外,其它各阶段的结点既是上一阶段的终点,又是下一阶段的起点。例如第三阶段的结点4、5、       6,它即是上一阶段结点2、3中某结点的终点,又是下一阶段结点7、8、9中某结点的起点。

根据如上特征,若对于第三阶段的结点5,选择1-2-5和1-3-5这两条路径,后者的费用要小于前者。那么考虑一下,假设在所求的结点1到结点10最短路径中要经过结点5,那我们在结点1到结点5之间会取那条路径呢?显然,无论从结点5出发以后的走法如何,前面选择1-3-5这条路都总是会优于1-2-5的。也就是说,当某阶段结点一定时,后面各阶段路线的发展不受这点以前各阶段的影响。反之,到该点的最优决策也不受该点以后的发展影响。

由此,我们可以把原题所求分割成几个小问题,从阶段1开始,往后依次求出结点1到阶段2、3、4、5各结点的最短距离,最终得出答案。在计算过程中,到某阶段上一结点的决策,只依赖于上一阶段的计算结果,与其它无关。例如,已求得从结点1到结点5的最优值是6,到结点6的最优值是5,那么要求到下一阶段的结点8的最优值,只须比较min{6+5,5+5}即可。这样,运用动态规划思想大大节省了计算量。可以看出,动态规划是解决此类多阶段决策问题的一种有效方法。

 

二  动态规划中的主要概念,名词术语

 

    1阶段:把问题分成几个相互联系的有顺序的几个环节,这些环节即称为阶段。

    2 状态:某一阶段的出发位置称为状态。通常一个阶段包含若干状态。如图1中,阶段3就有三个状态结点4、5、6。

    3 决策:从某阶段的一个状态演变到下一个阶段某状态的选择

4策略:由开始到终点的全过程中,由每段决策组成的决策序列称为全过程策略,简称策略。

    5 状态转移方程:前一阶段的终点就是后一阶段的起点,前一阶段的决策选择导出了后一阶段的状态,这种关系描述了由k阶段到k+1阶段状态的演变规律,称为状态转移方程

    6 目标函数与最优化概念:目标函数是衡量多阶段决策过程优劣的准则。最优化概念是在一定条件下找到一个途径,经过按题目具体性质所确定的运算以后,使全过程的总效益达到最优。

 

三 运用动态规划需符合的条件

 

   任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同理,动态规划也并不是万能的。那么使用动态规划必须符合什么条件呢?必须满足最优化原理和无后效性。

 

   1 最优化原理

    最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。

    最优化原理是动态规划的基础,任何问题,如果失去了最优化原理的支持,就不可能用动态规划方法计算。

    2 无后效性

   “过去的步骤只能通过当前状态影响未来的发展,当前的状态是历史的总结”。这条特征说明动态规划只适用于解决当前决策与过去状态无关的问题。状态,出现在策略任何一个位置,它的地位相同,都可实施同样策略,这就是无后效性的内涵。

    由上可知,最优化原理,无后效性,是动态规划必须符合的两个条件

四  动态规划的计算方法

    对于一道题,怎样具体运用动态规划方法呢?

(1)首先,分析题意,考察此题是否满足最优化原理无后效性两个条件。

(2)接着,确定题中的阶段状态,及约束条件

(3)推导出各阶段状态间的函数基本方程,进行计算。

    具体求解则有多种方法。

 

   1 前向与后向动态规划法

 

    所谓前向与后向,指的是从起点出发,层层递推,直到终点,或从终点出发,逆向求解。这两种方法本质上是一样的,具体解题时,可根据实际情况来选用。

   [例2] 排队买票

问题描述:一场演唱会即将举行。现有N(O〈N〈=200)个歌迷排队买票,一个人买一张,而售票处规定,一个人每次最多只能买两张票。假设第I位歌迷买一张票需要时间Ti(1〈=I〈=n),队伍中相邻的两位歌迷(第j个人和第j+1个人)也可以由其中一个人买两张票,而另一位就可以不用排队了,则这两位歌迷买两张票的时间变为Rj,假如Rj〈Tj+Tj+1,则这样做就可以缩短后面歌迷等待的时间,加快整个售票的进程。现给出N,Tj和Rj,求使每个人都买到票的最短时间和方法。

解决问题:本题的阶段十分明显,只要按排队的先后顺序划分即可。而买票的方式只有两种,要么一人买一张,要么一人买两张,整个过程呈线性排列。要使前I个人买票时间最短,只需考虑前I个人的买票方式,与队列以后的人无关。而且显而易见,在最优策略中,任意m个连续的决策也肯定是最优的。这样,问题就符合了最优化原理及无后效性,能运用动态规划。那如何构造函数递推式呢?可以以到每个人为止所需的最短时间为状态值,设为f(i),于是有f(i)=min{f(i-1)+Ti,f(i-2)+Ri-1},起步时f(0)=0,f(1)=T1 。如此从前往后,只需遍历一次即可。

上面的分析是从前往后进行的。其实倒过来逆推也一样。设f(I)表示当票卖到第I个人时,最少还需多少时间才能卖完。则函数递推式为f(I)=min{f(I+1)+Ti,f(I+2)+Ri},从后往前逆推,起步时f(n)=Tn,f(n+1)=0 。

采用前向还是后向动态规划,要看实际情况而定,哪一种直观、简便,就运用哪一种。

    2 具有隐含阶段的问题(即阶段不明显)

动态规划的一个重要环节是阶段划分,可有些题目无明显阶段,但也符合最优化原理,怎么解决呢?下面来看一道例题。

   [例3] 最小费用问题


问题描述:已知从A到J的路线及费用如图3,求从A到J的最小费用路线。

                           图3

    解决问题:本问题没有明显的阶段划分,各点间没有一定的先后次序,不能按照最少步数来决定顺序,如从A到D走捷径需4,但A-C-D只需3,更优。看来图中出现回路,不能实施动态规划。其实不然。细想一下,从A到J的最优策略,它每一部分也是最优的(可以用前述的反证法来证明),换言之,本题也具有最优化性质,只是阶段不明显而已。

对于这类问题,我们可以换个角度分析,构造算法。比较一下前面所讲的前向与后向动态规划法,都是以某个状态为终点,寻找到达次点的路径,然后比较优劣,确定此状态最优值。可是,本题阶段不明显,各状态之间的道路会出现嵌套,故此法不能使用。变一下角度,每次都以某个状态为起点,遍历由它引申出去的路径,等所有已知状态都扩展完了,再来比较所有新状态,把值最小的那个状态确定下来,其它的不动。如图3,先从A出发,找到3个结点B,D,C,费用为F(B)=3,F(D)=4,F(C)=2。因为F(B),F(D)都大于F(C),那么可以确定:不可能再有路线从B或D出发到C,比A-C更优。这样F(C)的最优值便确定了。可是,有没有路线从C出发到B或D,比A-B或A-D更优呢?还不清楚。继续下去,因为A扩展完了,只有从C开始,得到A-C-D=3,A-C-F=3,于是F(D)的值被刷新了,等于3。现在,有F(B)=F(D)=F(F)=3,于是,三点的最优值都确定下来了。然后以分别以三个点为起点,继续找。以次类推,直到J点的最优值确定为止。

细心观察,其实本题的隐含阶段就是以各结点的最优值的大小来划分的,上述过程就是按最优值从小到大前向动态规划。人们习惯上把此题归入到图论范畴中,并将上述方法称为标号法

 


 

 

                    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值