动态规划算法

基本思想

动态规划算法通常用于求解具有某种最优性质的问题,在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填人表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。

基本概念

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

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

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

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

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

基本原理

1.最优化原理

最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。
最优化原理是动态规划的基础,任何问题,如果失去了最优化原理的支持,就不可能用动态规划方法计算。
2.无后效性
过去的步骤只能通过当前状态影响未来的发展,当前的状态是历史的总结”。这条特征说明动态规划只适用于解决当前决策与过去状态无关的问题。状态,出现在策略任何个位置,它的地位相同,都可实施同样策略,这就是无后效性的内涵。
由上可知,最优化原理,无后效性,是动态规划必须符合的两个条件。

基本步骤

设计一个标准的动态规划算法,通常可按以下几个步骤进行

(1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。注意这若干个阶段一定要是有序的或者是可排序的(即无后向性),否则问题就无法用动态规划求解。

(2)选择状态:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。当然,状态的选择要满足无后效性。

(3)确定决策并写出状态转移方程:之所以把这两步放在一起,是因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。所以,如果我们确定了决策,状态转移方程也就写出来了。但事实上,我们常常是反过来做的,根据相邻两段的各状态之间的关系来确定决策。

(4)写出规划方程(包括边界条件):动态规划的基本方程是规划方程的通用形式化表达式般说来,只要阶段、状态、决策和状态转移确定了,这一步还是比较简单的。

当然,在此之前需要先进行判断题目是否可以使用动态规划解决,也就是说是否满足两个基本定理。

码字不易,留个赞吧~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值