算法分析之动态规划

动态规划算法分析
2006年09月13日 星期三 23:03

动态规划

  动态规划问题的数学描述

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

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

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


                            1

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

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

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

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

(3) 除起点1和终点10外,其它各阶段的结点既是上一阶段的终点,又是下一阶段的起点。例如第三阶段的结点456,它即是上一阶段结点23中某结点的终点,又是下一阶段结点789中某结点的起点。

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

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

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

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

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

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

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

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

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

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

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

   1 最优化原理

    最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状


                              2

态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。

    如图2中,若路线IJAC的最优路径,则根据最优化原理,路线J必是从BC的最优路线。这可用反证法证明:假设有另一路径JBC的最优路径,则AC的路线取IJIJ更优,这与原名题矛盾。从而证明J必是BC的最优路径。

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

    2 无后效性

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

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

  动态规划的计算方法

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

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

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

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

    具体求解则有多种方法。

[4] 复制书稿(BOOKS

    问题描述:假设有M本书(编号为12M),想将每本复制一份,M本书的页数可能不同(分别是P1P2PM)。任务时将这M本书分给K个抄写员(K=M〉,每本书只能分配给一个抄写员进行复制,而每个抄写员所分配到的书必须是连续顺序的。

意思是说,存在一个连续升序数列0=bob1b2<bk-1 <bk=m,这样,第I号抄写员得到的书稿是从bi-1+1到第bi本书。复制工作是同时开始进行的,并且每个抄写员复制的速度都是一样的。所以,复制完所有书稿所需时间取决于分配得到最多工作的那个抄写员的复制时间。试找一个最优分配方案,使分配给每一个抄写员的页数的最大值尽可能小(如存在多个最优方案,只输出其中一种)。

解决问题:该题中M本书是顺序排列的,K个抄写员选择数也是顺序且连续的。不管以书的编号,还是以抄写员标号作为参变量划分阶段,都符合策略的最优化原理和无后效性。考虑到K=M,以抄写员编号来划分会方便些。

FIJ)为前I个抄写员复制前J本书的最小“页数最大数”。于是便有FIJ=MIN{ FI-1V),TV+1J} 1=I=KI=J=M-K+II-1=V=J-1〉。 其中TV+1J)表示从第V+1本书到第J本书的页数和。起步时F11=P1

观察函数递推式,发现FI)阶段只依赖于FI-1)阶段的状态值,编程时可令数组F的范围为(01,1M),便于缩小空间复杂度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值