天津科技大学算法设计与分析 第6章 动态规划法.ppt

天津科技大学算法设计与分析 第6章 动态规划法.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第6章动态规划法;6.1概述;最优化问题:有n个输入,它的解由这n个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为约束条件,满足约束条件的解称为问题的可行解。;例:付款问题:

超市的自动柜员机〔POS机〕要找给顾客数量最少的现金。

假定POS机中有n张面值为pi(1≤i≤n)的货币,用集合P={p1,p2,…,pn}表示,如果POS机需支付的现金为A,那么,它必须从P中选取一个最小子集S,使得

〔式6.1〕;那么,POS机支付的现金必须满足

〔式6.3〕;6.1.2最优性原理;Sn-1;在每一阶段的决策中有一个赖以决策的策略或目标,这种策略或目标是由问题的性质和特点所确定,通常以函数的形式表示并具有递推关系,称为动态规划函数。;6.1.3动态规划法的设计思想;原问题的解;n=5时分治法计算斐波那契数的过程。;0

;用动态规划法求解的问题具有特征:

能够分解为相互重叠的假设干子问题;

满足最优性原理〔也称最优子结构性质〕:该问题的最优解中也包含着其子问题的最优解。;动态规划法设计算法一般分成三个阶段:

〔1〕分段:将原问题分解为假设干个相互重叠的子问题;

〔2〕分析:分析问题是否满足最优性原理,找出动态规划函数的递推式;

〔3〕求解:利用递推式自底向上计算,实现动态规划过程。;6.2图问题中的动态规划法;6.2.1TSP问题;

;假设从顶点i出发,令d(i,V‘)表示从顶点i出发经过V’中各个顶点一次且仅一次,最后回到出发点i的最短路径长度。;这是最后一个阶段的决策,而:

d(1,{2,3})=min{c12+d(2,{3}),c13+d(3,{2})}

d(2,{1,3})=min{c21+d(1,{3}),c23+d(3,{1})}

d(3,{1,2})=min{c31+d(1,{2}),c32+d(2,{1})};再向前倒推,有:

d(1,{2})=c12+d(2,{})=2+6=8(1→2)d(1,{3})=c13+d(3,{})=3+3=6(1→3)

d(2,{3})=c23+d(3,{})=2+3=5(2→3)d(2,{1})=c21+d(1,{})=4+5=9(2→1)

d(3,{1})=c31+d(1,{})=7+5=12(3→1)d(3,{2})=c32+d(2,{})=5+6=11(3→2);假设n个顶点用0~n-1的数字编号,首先生成1~n-1个元素的子集存放在数组V[2n-1]中,设数组d[n][2n-1]存放迭代结果,其中d[i][j]表示从顶点i经过子集V[j]中的顶点一次且仅一次,最后回到出发点0的最短路径长度。;算法6.1——TSP问题

1.for(i=1;in;i++)//初始化第0列

d[i][0]=c[i][0];

2.for(j=1;j2n-1-1;j++)

for(i=1;in;i++)//依次进行第i次迭代

if(子集V[j]中不包含i)

对V[j]中的每个元素k,计算d[i][j]=min(c[i][k]+d[k][j-1]);

3.对V[2n-1-1]中的每一个元素k,计算d[0][2n-1-1]=min(c[0][k]+d[k][2n-1-2]);

4.输出最短路径长度d[0][2n-1-1];;6.2.2多段图的最短路径问题;2;设s,s1,s2,…,sp,t是从s到t的一条最短路径,从源点s开始,设从s到下一段的顶点s1已经求出,那么问题转化为求从s1到t的最短路径,显然s1,s2,…,sp,t一定构成一条从s1到t的最短路径。;对多段图的边(u,v),用cuv表示边上的权值,将从源点s到终点t的最短路径记为d(s,t),那么从源点0到终点9的最短路径d(0,9)由下式确定:

d(0,9)=min{c01+d(1,9),c02+d(2,9),c03+d(3,9)}

文档评论(0)

mend45 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档