收藏 分享(赏)

动态规划算法(一).ppt

上传人:fcgy86390 文档编号:4996606 上传时间:2019-01-28 格式:PPT 页数:45 大小:562KB
下载 相关 举报
动态规划算法(一).ppt_第1页
第1页 / 共45页
动态规划算法(一).ppt_第2页
第2页 / 共45页
动态规划算法(一).ppt_第3页
第3页 / 共45页
动态规划算法(一).ppt_第4页
第4页 / 共45页
动态规划算法(一).ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、动态规划算法(一),重庆教育学院 杨华千,多段决策过程:问题描述,如果一个活动过程可以分为若干个阶段,而且在任一阶段后的行为都仅依赖于i阶段的过程状态,而与i阶段之前的过程如何达到这种状态的方式无关,这样的过程就形成了一个“多阶段决策过程”,最优性原理:,无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。,动态规划特点:,把原始问题分为一系列子问题 求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时直接存取,不重复结算,节约计算时间 自底向上的计算,使用动态规划的条件:,优化子结构(1) 当一个问题的优化解包含了子问题的优化解时,我们说

2、这个问题具有优化子结构(2) 缩小子问题的集合,只要哪些优化问题包含了优化子问题,降低实现复杂性 重叠子问题(1) 在问题的求解过程中,很多子问题的解被多次重复使用,动态规划基本步骤:,找出最优解的性质,并刻划其结构特征 递归地定义最优值 以自底向上的方式计算出最优值 根据计算最优值时得到的信息,构造最优解,动态规划:目标,就是要在所有允许选择的决策序列中选择一个会获得问题最优解的决策序列,即最优决策序列。,多段图问题:找最小成本路径,特点: (1) 图中的节点被划分成k2个不相交的集合Vi (1ik) (2) V1和Vk分别只有一个节点s和t.,0/1背包问题:KNAP(1,j,x),极大化

3、约束条件,动态规划:向前处理,从最后阶段开始,以逐步向前推进的方式列出求前一阶段决策值的递推关系式,即根据xi+1,xn的那些决策序列来求出xi决策值的关系式。,动态规划:向前处理(K段图),动态规划:向前处理算法,void function FGRAPH(E, int k, int n, int P)int COSTn;int Dn-1;int r, j;COSTn=0;for(j=n-1; jE且使c(j,r)+COSTr最小COSTj=c(j,r)+COSTr;Dj=r;P1=1;Pk=n;for(j=2;j=k-1;j+)Pj=DP(j-1); ,动态规划:向后处理(K段图),动态规划

4、:0/1背包问题,对于0/1背包问题,可以通过作出变量x1,x2,xi的一个决策序列来得到它的解。而对变量x的决策就是决定它们是取0还是取1值。,动态规划:0/1背包问题,fj(x)是KNAP(1,j,x)最优解的值,则fn(M):,对于任意的fi(x),(i0),有:,动态规划:0/1背包向后处理,先求解f0:i 当x0,f0(x)=0ii 当x0, f0(x)=- 利用递推式,求出f1, f2, , fn,动态规划:0/1背包求解实例,考虑如下背包问题:n=3(w1, w2, w3)=(2, 3, 4)(p1, p2, p3)=(1,2,5)M=6,动态规划:0/1背包求解实例,求解过程(

5、递推关系求解):,动态规划:0/1背包向后处理,求解过程(图解法求解):1) 第1列的图给出了函数fi-1(x-wi)+pi的图像,将fi-1(x)在x轴上 右移wi个单位然后上移pi个单位就得到它的图像;2) 第2列给出函数fi(x),即它由fi-1(x)和fi-1(x-wi)+pi的函数曲线按x相同时取最大值的规则归并而成。,动态规划:0/1背包向后处理,求解过程(图解法求解):,动态规划:0/1背包向后处理,求解过程(图解法求解):,动态规划:0/1背包向后处理,求解过程(图解法求解):,动态规划:0/1背包向后处理,动态规划:0/1背包向后处理,序偶(pj,wj)的定义:1) wj是使

6、fi在其处产生一次阶跃的x值;2) pj=fi(wj),动态规划:0/1背包向后处理,Si-1和S1i的定义:1) Si-1是fi-1的所有序偶的集合2) S1i是fi-1(x-wi)+pi的所有序偶的集合S1i=(p,w)|(p-pi,w-wi) Si-1如果Si-1和Si之一有序偶(pj,wj),另一序偶(pk,wk),并且在wjwk的同时有pjpk,则序偶(pj,wj)被舍弃。,动态规划:0/1背包向后处理,对于前述0/1背包数据S0=(0,0) S11=(1,2)S1=(0,0), (1,2) S12=(2,3), (3,5)S2=(0,0), (1,2), (2,3), (3,5)S

7、13=(5,4), (6,6), (7,7), (8,9)S3=(0,0), (1,2), (2,3), (5,4), (6,6), (7,7), (8,9),动态规划:0/1背包向后处理,KNAP(1,n,M)的最优解fn(M)由Sn的最后一对序偶的P值给出。,动态规划:0/1背包向后处理,KNAP(1,n,M)中决策序列X的确定设Sn的最末序偶是(pl,wl):若(pl,wl)属于Sn-1,则xn=0若(pl,wl)不属于Sn-1,则(pl-pn,wl-wn)属于Sn-1, 则xn=1再判断留在Sn-1中的序偶(pl,wl)或者(pl-pn,wl-wn)是否属于Sn-2,以确定xn-1的取

8、值,动态规划:货郎担问题(TSP),问题描述:某售货员要到若干个村庄售货,各村庄之间的路程是已知的,为了提高效率,售货员决定从所在商店出发,到每个村庄售一次货然后返回商店,问他应选择一条什么路线才能使所走的总路程最短?,动态规划:货郎担问题(TSP),最优性原理:假设周游路线是开始于节点1并终止于节点1的一条简单路径。每一条周游路线都是由一条边和一条由节点k到节点1的路径所组成,其中kV-1;而这条由节点k到节点1的路径通过V-1,k的每个节点一次。如果这条周游路线是最优的,那么这条由k到1的路径必定是通过V-1,k中所有节点的由k到1的最短路径,因此最优性原理成立。,动态规划:货郎担问题(T

9、SP),符号g(i, S)的含义:由节点i开始,通过S中所有节点,在节点1终止的一条最短路径长度。,动态规划:货郎担问题(TSP),最优周游路线长度:一般化可得:,动态规划:货郎担问题(TSP),符号J(i, S):符号J(i, S)表示,使得下列公式右边取最小值的那个j值。,动态规划:货郎担问题(TSP),求最优周游路线长度,周游路线。示例:,动态规划:矩阵链乘法,问题描述:给定N个矩阵构成一个链A1, A2,An,矩阵Ai的维数为Pi-1*Pi(1in),以一种最小化标量乘法次数的方式进行完全括号化。,动态规划:矩阵链乘法,最优结构:对乘积A1,A2,An的一种最优括号化将乘积在Ak和Ak

10、+1间隔开(1kn-1),则最优括号化的“前缀”子链A1,Ak和“后缀”子链Ak+1,An的括号化必须是最优化括号。,动态规划:矩阵链乘法,符号mi, j的意义:mi,j计算矩阵Aij所需的标量乘法次数的最小值。(1ijn)m1,n就是问题的最优解。,动态规划:矩阵链乘法,对乘积AiAi+1Aj的括号化的最小代价的递归定义:,动态规划:矩阵链乘法,符号Si, j的意义:符号S(i, j)表示,使得下列公式右边取最小值的那个k值,动态规划:矩阵链乘法,示例:设有四个矩阵A,B,C,D,它们的维数分别是:总共有五中完全加括号的方式:,动态规划:矩阵链乘法,示例:对以下5个矩阵相乘A1:4*5,A2

11、:5*3,A3:3*6, A4:6*4,A5:4*5应用算法找出这5个矩阵相乘所需的最少数乘的次数m1,5及部分中间结果mi,j:,动态规划:矩阵链乘法,动态规划:矩阵链乘法,public static void matrixChain(int p, int m, int s)int n=p.length-1;for (int i = 1; i = n; i+) mii = 0;for (int r = 2; r = n; r+)for (int i = 1; i = n - r+1; i+) int j=i+r-1;mij = mi+1j+ pi-1*pi*pj;sij = i;for (i

12、nt k = i+1; k j; k+) int t = mik + mk+1j + pi-1*pk*pj;if (t mij) mij = t;sij = k;,动态规划:三角剖分,设P是一个有n个顶点的凸多边形,P中的弦是P中连接两个非相邻顶点的线段。用P中的n-3条弦将P剖分成n-2个三角形(如下图所示)。使得n-3弦的长度之和最小的三角剖分称为最优三角剖分。,动态规划:三角剖分,输入:第一行含一个正整数n (n=500),表示凸多边形的顶点个数;第二行含2n个实数x1 , y1 , x2 , y2 , xn , yn ,按顺时针方向依次给出n个顶点的坐标值(xi, yi) i=1, 2, , n,整数之间用一个空格隔开。 输出:输出一行,含一个实数(精确到小数点后三位),表示最优三角剖分的n-3条弦的长度之和。输入:61 2 2 1.5 2 0.5 1 0 0 0.5 0 1.5 输出:5.606,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作计划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报