动态规划思想

动态规划是解决多阶段决策最优化问题的一种思想方法。所谓“动态”,指的是在问题的多阶段决策中,按某一顺序,根据每一步所选决策的不同,将引起状态的转移,最终在变化的状态中产生一个决策序列。动态规划就是为了使产生的决策序列在符合某种条件下达到最优。【一种自底向上去思考问题的方式,从一个较小规模的问题开始,通过递推的方式,逐个推到得到最终的问题规模的结果。dp的重点在于定义状态和状态转移方程(定义不同规模的问题之间的关系)

1. 数学描述

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

如下图,各结点代表城市,两结点间连线代表道路,线上数字表示城市间的距离。试找出从结点1到结点10的最短路径。

    

此类问题的解决一般采用穷举法。即把从结点1到结点10的所有道路列举出来,计算其长度,再进行比较,

找出最小的一条。尽管这样可以解决问题,但随着结点数的增加,运算量将成指数级增长,故效率非常低。

        从图中可以看出,各结点的排列特征如下:

 (1)可将各节点分为5个阶段。

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

(3) 除了起点1和终点10外,其他各阶段的结点既是上一阶段的终点,又是下一阶段的起点。

由此,我们可以把原题所求分割成几个小问题,从阶段1开始,往后依次求出结点1到阶段2,3,4,5各结点的最短

距离,最终得出答案。在计算的过程中,到某阶段上一结点的决策只依赖于上一阶段的计算结果,与其他无关。

对于该图,从结点1到结点5的路径有两条1-2-5和1-3-5,费用较少的是后者6;从结点1到结点6的最优

路径是1-3-6,费用是5,在计算到下一阶段结点8的最少费用时,只需比较min{6+5, 5+5}即可。

2. 基本概念

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

(2)状态:把某一阶段的出发位置称为状态。通常一个阶段包含若干个状态。

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

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

(5)状态转移方程:前一个阶段的终点就是后一个阶段的起点,前一个阶段的决策选择导出了后一个阶段的

状态,这种关系描述了由k阶段到k+1阶段状态的演变规律,称为状态转移方程。

(6)目标函数与最优化概念:目标函数是衡量多阶段决策过程优劣的准则。最优化概念是在一定条件下找到

一个途径,经过按题目具体性质所确定的运算以后,使全过程的总效益达到最优。

3. 动态规划需要的条件

(1)最优化原理

一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的

诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。

(2)无后效性

“过去的步骤只能通过当前状态影响未来的发展,当前的状态是历史的总结。”这条特征说明动态规划只适应于

解决当前决策与过去状态无关的问题。状态,出现在策略的任何一个位置,它的地位相同,都可实施同样策略,

这就是无后效性的内涵。

4. 动态规划的计算方法

首先,应考查题目是否满足最优化原理与无后效性两个条件。接着,确定题目中的阶段、状态及约束条件,

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

(1)前向与后向动态规划法

前向与后向,指的是从起点出发,层层递推,直到终点,或从终点出发,逆向求解。这两种方法本质上

一样,具体解题时,可根据实际情况来选用。

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

    换角度思考,使用构造算法进行分析。

5. 动态规划算法的基本思想

将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题

的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来。以后再次遇到该

问题时,只需引用答案,不必重新求解。动态规划算法将问题的解决方案视为一系列的决策的结果,与贪婪

算法不同的是,在贪婪算法中,每采用一次贪婪准则,便做出一个不可撤回的决策;在动态规划算法中,还

要考察每个最优决策序列中是否包含一个最优决策子序列,即问题是否具有最优子结构性质。

        能采用动态规划求解的问题一般具有以下三个性质:

        (1) 最优化原理 (2)无后效性  (3)有重叠子问题

        动态规划算法适用于解最优化问题。通常按以下4个步骤设计:

(1) 找出最优解的性质,并刻画其结构特征。

(2) 递归地定义最优值。

(3) 以自底向上的方式计算出最优值

(4) 根据计算最优值使得到的信息,构造最优解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值