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