动态规划基础 .pdfVIP

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

动态规划

(一)、动态规划的基本思想:

动态规划算法通常用于求解具有某种最优性质的问题。在

这类问题中,可能会有许多可行解。每一个解都对应于一个值,我

们希望找到具有最优值的解。动态规划算法与分治法类似,其基本

思想也是将待求解问题分解成若干个子问题,先求解子问题,然后

从这些子问题的解得到原问题的解。与分治法不同的是,适合于用

动态规划求解的问题,经分解得到子问题往往不是互相独立的。若

用分治法来解这类问题,则分解得到的子问题数目太多,有些子问

题被重复计算了很多次。如果我们能够保存已解决的子问题的答

案,而在需要时再找出已求得的答案,这样就可以避免大量的重复

计算,节省时间。我们可以用一个表来记录所有已解的子问题的答

案。不管该子问题以后是否被用到,只要它被计算过,就将其结果

填入表中。这就是动态规划法的基本思路。具体的动态规划算法多

种多样,但它们具有相同的填表格式。

二、设计动态规划法的步骤:

1、找出最优解的性质,并刻画其结构特征;

2、递归地定义最优值(写出动态规划方程);

3、以自底向上的方式计算出最优值;

4、根据计算最优值时得到的信息,构造一个最优解。

步骤1-3是动态规划算法的基本步骤。在只需要求出最优值的情

形,步骤4可以省略,步骤3中记录的信息也较少;若需要求出问

题的一个最优解,则必须执行步骤4,步骤3中记录的信息必须足

够多以便构造最优解。

三、动态规划问题的特征:

动态规划算法的有效性依赖于问题本身所具有的两个重要性质:最

优子结构性质和子问题重叠性质。

1、最优子结构:当问题的最优解包含了其子问题的最优解时,称该

问题具有最优子结构性质。

2、重叠子问题:在用递归算法自顶向下解问题时,每次产生的子问

题并不总是新问题,有些子问题被反复计算多次。动态规划算法正

是利用了这种子问题的重叠性质,对每一个子问题只解一次,而后

将其解保存在一个表格中,在以后尽可能多地利用这些子问题的

解。

(二)、动态规划算法的基本步骤

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

1.划分阶段:按照问题的时间或空间特征,把问题分为若干个阶

段。注意这若干个阶段一定要是有序的或者是可排序的(即无

后向性),否则问题就无法用动态规划求解。

2.选择状态:将问题发展到各个阶段时所处于的各种客观情况用

不同的状态表示出来。当然,状态的选择要满足无后效性。

3.确定决策并写出状态转移方程:之所以把这两步放在一起,是

因为决策和状态转移有着天然的联系,状态转移就是根据上一

阶段的状态和决策来导出本阶段的状态。所以,如果我们确定

了决策,状态转移方程也就写出来了。但事实上,我们常常是

反过来做,根据相邻两段的各状态之间的关系来确定决策。

4.写出规划方程(包括边界条件):动态规划的基本方程是规划

方程的通用形式化表达式。一般说来,只要阶段、状态、决策

和状态转移确定了,这一步还是比较简单的。

动态规划的主要难点在于理论上的设计,一旦设计完成,实现部分

就会非常简单。根据动态规划的基本方程可以直接递归计算最优

值,但是一般将其改为递推计算,实现的大体上的框架如下:

标准动态规划的基本框架frame

1.对f(x)初始化;{边界条件}

n+1n+1

2.fork:=ndownto1do

3.for每一个x∈Xdo

kk

4.for每一个u∈U(x)do

kkk

begin

5.f(x):=一个极值;{∞或-∞}

kk

6.x:=T(x,u);{状态转移方程}

k+1kkk

7.t:=φ(f(x),v(x,u));

文档评论(0)

186****3046 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档