动态规划算法(一)PPT课件下载推荐.ppt
- 文档编号:13133398
- 上传时间:2022-10-06
- 格式:PPT
- 页数:45
- 大小:562KB
动态规划算法(一)PPT课件下载推荐.ppt
《动态规划算法(一)PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《动态规划算法(一)PPT课件下载推荐.ppt(45页珍藏版)》请在冰豆网上搜索。
KNAP(1,j,x),极大化约束条件,动态规划:
向前处理,从最后阶段开始,以逐步向前推进的方式列出求前一阶段决策值的递推关系式,即根据xi+1,xn的那些决策序列来求出xi决策值的关系式。
动态规划:
向前处理(K段图),动态规划:
向前处理算法,voidfunctionFGRAPH(E,intk,intn,intP)intCOSTn;
intDn-1;
intr,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段图),动态规划:
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背包求解实例,求解过程(递推关系求解):
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背包向后处理,序偶(pj,wj)的定义:
1)wj是使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)S13=(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的取值,动态规划:
货郎担问题(TSP),问题描述:
某售货员要到若干个村庄售货,各村庄之间的路程是已知的,为了提高效率,售货员决定从所在商店出发,到每个村庄售一次货然后返回商店,问他应选择一条什么路线才能使所走的总路程最短?
货郎担问题(TSP),最优性原理:
假设周游路线是开始于节点1并终止于节点1的一条简单路径。
每一条周游路线都是由一条边和一条由节点k到节点1的路径所组成,其中kV-1;
而这条由节点k到节点1的路径通过V-1,k的每个节点一次。
如果这条周游路线是最优的,那么这条由k到1的路径必定是通过V-1,k中所有节点的由k到1的最短路径,因此最优性原理成立。
货郎担问题(TSP),符号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+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:
5*3,A3:
3*6,A4:
6*4,A5:
4*5应用算法找出这5个矩阵相乘所需的最少数乘的次数m1,5及部分中间结果mi,j:
矩阵链乘法,动态规划:
矩阵链乘法,publicstaticvoidmatrixChain(intp,intm,ints)intn=p.length-1;
for(inti=1;
i=n;
i+)mii=0;
for(intr=2;
r=n;
r+)for(inti=1;
i=n-r+1;
i+)intj=i+r-1;
mij=mi+1j+pi-1*pi*pj;
sij=i;
for(intk=i+1;
kj;
k+)intt=mik+mk+1j+pi-1*pk*pj;
if(tmij)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条弦的长度之和。
输入:
61221.520.51000.501.5输出:
5.606,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法