第3章 动态规划_作业
动态规划.pdf

第三章:动态规划3.1 动态规划的基本概念一、动态决策问题:决策过程具有阶段性和时序性(与时间有关)的决策问题。
即决策过程可划分为明显的阶段。
二、什么叫动态规划(D.P.–Dynamic Program):多阶段决策问题最优化的一种方法。
广泛应用于工业技术、生产管理、企业管理、经济、军事等领域。
三、动态规划(D.P.)的起源:1951年,(美)数学家R.Bellman等提出最优化原理,从而建立动态规划,名著《动态规划》于1957年出版。
四、动态决策问题分类:1、按数据给出的形式分为:•离散型动态决策问题。
•连续型动态决策问题。
2、按决策过程演变的性质分为:•确定型动态决策问题。
•随机型动态决策问题。
五1、阶段(stage)n :作出决策的若干轮次。
n = 1、2、3、4、5。
2、状态(state)S n :每一阶段的出发位置。
构成状态集,记为S nS 1={A},S 2={B 1,B 2,B 3},S 3={C 1,C 2,C 3},S 4={D 1,D 2,D 3},S 5={E 1,E 2}。
阶段的起点。
3、决策(decision)X n :从一个阶段某状态演变到下一个阶段某状态的选择。
构成决策集,记为D n (S n )。
阶段的终点。
D 1(S 1)={X 1(A)}={B 1,B 2,B 3}= S 2,D 2(S 2)={X 2(B 1),X 2(B 2),X 2(B 3)}={C 1,C 2,C 3}=S 3,D 3(S 3)={X 3(C 1),X 3(C 2),X 3(C 3)}={D 1,D 2,D 3}=S 4,D 4(S 4)={X 4(D 1),X 4(D 2),X 4(D 3)}={E 1,E 2}=S 5D 5(S 5)={X 5(E 1),X 5(E 2)}={F;F}={F}。
4、策略(policy):全过程中各个阶段的决策Xn 组成的有序总体{Xn }。
如 A àB2àC1àD1àE2àF5、子策略(sub-policy):剩下的n个阶段构成n子过程,相应的决策系列叫n子策略。
动态规划讲解大全含例题及答案

动态规划讲解大全含例题及答案动态规划讲解大全动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。
1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作。
动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。
例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。
动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。
不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。
动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。
因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。
我们也可以通过对若干有代表性的问题的动态规划算法进行分析、讨论,逐渐学会并掌握这一设计方法。
基本模型多阶段决策过程的最优化问题。
在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。
第3章 动态规划_作业-3.22

0.36
0 1 2 3
1 0.24
2
3
4
5
6 1
0
1
2
3
4
5
6
0
0.6
0.18
1
0
0.36
0.09
2
1 2
0
0.31
0.13 0.56
3 4 0.3 0.42
2 3
4
5 6 7
0
4 4
0
4
5
6 7
5 5
0
0.06
5 6
k 3 : C ( 3, 2 ) C ( 4 , 4 ) C ( 3,4) m in k 4 : C ( 3 , 3 ) C ( 5 ,4 )
式1 式2
C(i, j)=min{C(i, k-1)+C(k+1, j)+w(i,j)} (1≤i≤j≤n, i≤k≤j) =min{C(i, k-1)+C(k+1, j)}+w(i,j) (1≤i≤j≤n, i≤k≤j) 式3
0 1 0.24 2 3 4 5 6 1 2 0.09 3 0.13 4 0.3 5 0.06 6 7 0 1 2 3 4 5 6
s
0 0.18 0.42 0.6
C(i, i-1)=0 (1≤i≤n+1) C(i, i)=pi (1≤i≤n)
式1 式2
C(i, j)=min{C(i, k-1)+C(k+1, j)+w(i,j)} (1≤i≤j≤n, i≤k≤j) =min{C(i, k-1)+C(k+1, j)}+w(i,j) (1≤i≤j≤n, i≤k≤j) 式3
矿大算法第3章 动态规划_习题课

2013年1月7日星期一 2013年1月7日星期
第3章 动态规划 第3章 动态规划
Байду номын сангаас
10
10
即 ai最小, i 就应排在最前面; bj最小, j 应排在最后面 得同顺序流水作业调度问题解法: ① min{a1,a2,…,an,b1,b2,…,bn}=ai , 那么作业i就应该是 最优调度中的第一个作业 min{a1,a2,…,an,b1,b2,…,bn}= bj , 那么作业j就应该是 最优调度中的最后一个作业 ② 在余下的作业中重复上述操作
s[1][5] 2
2013年1月7日星期一
第3章 动态规划
6
1 1 0 2 3 4 5
2 50 0
3 4 150 90 50 0 30 20 0
5 190 90 40 200 0
1 1 0 2 3 4 5
2 1 0
3 2 2 0
4 2 2 3
5 2 2 4 4 0
0
m[i][j]
s[i][j]
2013年1月7日星期一 2013年1月7日星期 第3章 动态规划 第3章 动态规划
13
13
p[n 1] {(0,0)}
m j wi max{ (i 1, j ), m(i 1, j wi ) vi } m(i, j ) m(i 1, j ) 0 j wi
b[i][j ] 1
b[i ][ j ] 2 b[i ][ j ] 3
表示Xi与Yj的公共子序列是由Xi-1与Yj-1的 Y 0 公共子序列在尾部加上Xi得到的子序列;
(xi-1 yi-1) 表示Xi与Y,j的公共子序列和Xi-1与Y(xi-1, yi) j的公 共子序列相同;
动态规划例题

动态规划例题动态规划是一种以最优化原理为基础的问题求解方法,通过拆分问题为若干阶段,每个阶段求解一个子问题,再逐步推导出整个问题的最优解。
例如,有一个背包能够承受一定的重量,现有一些物品,每个物品都有自己的重量和价值。
我们希望将物品放入背包中,使得背包的总价值最大。
这个问题可以用动态规划来解决。
首先,我们定义一个二维数组dp,其中dp[i][j]表示在前i个物品中,容量为j的背包中所能放入的物品的最大价值。
那么,对于每一个物品,可以选择放入背包或者不放入背包。
如果选择放入背包,最大价值为dp[i-1][j-w[i]] + v[i],其中w[i]表示第i个物品的重量,v[i]表示第i个物品的价值。
如果选择不放入背包,最大价值为dp[i-1][j]。
因此,dp[i][j]的状态转移方程为:dp[i][j] = max(dp[i-1][j-w[i]] + v[i], dp[i-1][j])。
基于这个状态转移方程,可以逐步求解从第1个物品到第n个物品的最大价值。
最终,dp[n][W]即为问题的最优解,其中W 表示背包的容量。
举个简单的例子,假设背包的容量为10,有3个物品,它们的重量分别为3、4、5,价值分别为4、5、6。
此时,可以得到如下的dp矩阵:0 0 0 0 0 0 0 0 0 0 00 0 0 4 4 4 4 4 4 4 40 0 0 4 5 5 9 9 9 9 90 0 0 4 5 5 9 10 10 14 14我们可以看到,dp[3][10]的最大价值为14,表示在前3个物品中,容量为10的背包中所能放入的物品的最大价值为14。
通过动态规划,我们可以有效地求解背包问题,得到物品放入背包的最优解。
这个例子只是动态规划的一个简单应用,实际上,动态规划可以解决各种复杂的问题,如最长公共子序列、最大子数组和、最大字段和等。
因此,学习动态规划是非常有意义的。
动态规划作业完整

动态规划作业1、1、设某工厂自国外进口一部精密机器,由机器制造厂至出口港有三个港口可供选择,而进口港又有三个可供选择,进口后可经由两个城市到达目的地,其间的运输成本如图中所标的数字,试求运费最低的路线?把A看作终点,该问题可分为4个阶段。
f k(S k)表示从第K阶段点S k到终点A的最短距离。
f4(B1)=20,f4(B2)=40,f4(B3)=30f3(C1)=min[d3(C1,B1)+ f4(B1), d3(C1,B2)+ f4(B2), d3(C1,B3)+ f4(B3) ]=70,U3(C1)= B2 或B3f3(C2)=40 ,U3(C2)= B3f3(C3)=80 ,U3(C3)= B1或B2 或B3f2(D1)=80 ,U2(D1)= C1f2(D2)=70 ,U2(D2)= C2f1(E)=110 ,U1(E)= D1或D2所以可以得到以下最短路线,E→D1→C1→B2 / B3→AE→D2→C2→B3→A2、习题4-2解:1)将问题按地区分为三个阶段,三个地区的编号分别为1、2、3;2)设Sk表示为分配给第k个地区到第n个地区的销售点数,Xk表示为分配给第k个地区的销售点数,S k+1=S k-X kPk(Xk)表示为Xk个销售点分到第k个地区所得的利润值fk(Sk)表示为Sk个销售点分配给第k个地区到第n个地区的最大利润值3)递推关系式:fk(Sk)=max[ Pk(Xk)+ f k+1(S k-X k) ] k=3,2,1f4(S4)=04)从最后一个阶段开始向前逆推计算第三阶段:设将S3个销售点(S3=0,1,2,3,4)全部分配给第三个地区时,最大利润值为:f3(S3)=max[P3(X3)] 其中X3=S3=0,1,2,3,4表1第二阶段:设将S2个销售点(S2=0,1,2,3,4)分配给乙丙两个地区时,对每一个S2值,都有一种最优分配方案,使得最大盈利值为:f2(S2)=max[ P2(X2)+ f3(S2-X2) ]其中,X2=0,1,2,3,4表2第一阶段:设将S1个销售点(S1=4)分配给三个地区时,则最大利润值为:f1(S1)=max[ P1(X1)+ f2(4-X1) ]其中,X1=0,1,2,3,4表3然后按计算表格的顺序反推,可知最优分配方案有两个:最大总利润为531)由X1*=2,X2*=1,X3*=1。
第3章 动态规划(3-例子)
图像压缩问题要求确定像素序列{p1,p2,…,pn}的最优分段,使 得依此分段所需的存储空间最少。每个分段的长度不超过256 6 位。
最优子结构性质
设l[i],b[i],是{p1,p2,…,pn}的最优分段。显而易见,l[1],b[1] 是{p1,…,pl[1]}的最优分段,且l[i],b[i],是{pl[1]+1,…,pn}的最优分 段。即图像压缩问题满足最优子结构性质。 设s[i],1≤i≤n,是像素序列{p1,…,pi}的最优分段所需的存储位 数。由最优子结构性质易知:
可得到4个段[10,9,12]、[40,50,35]、[15,12,8,10,9,15,11]、 [130,160,240]。 SegmentLength这项内容为2,2,6,2; BitsPerSegment这项内容为3,5,3,7; Pixels序列:1010 1001 1100 111000 110010 100011 这三个部分需要的存储空间共需以下各项之和: 8*4=32 3*4=12 4×3+6×3+4×7+8×3=82 总空间: 32+12+82=126位 3
11
n
0-1背包问题
设所给0-1背包问题的子问题
max v k x k
k i
n wk x k j k i x k {0,1}, i k n
n
的最优值为m(i,j),即m(i,j)是背包容量为j,可选择物品为i, i+1,…,n时0-1背包问题的最优值。由0-1背包问题的最优子 结构性质,可以建立计算m(i,j)的递归式如下。
10
0-1背包问题
给定n种物品和一背包。物品i的重量是 wi,其价值为vi,背包的容量为C。问 应如何选择装入背包的物品,使得装入 背包中物品的总价值最大? 0-1背包问题是一个特殊的整数规划问 题。
第3章-动态规划-习题
租用游艇问题
长江游艇俱乐部在长江上设置了n 个游艇出租站1, , , 长江游艇俱乐部在长江上设置了 个游艇出租站 ,2,…, n。游客可在这些游艇出租站租用游艇,并在下游的任何 。游客可在这些游艇出租站租用游艇, 一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 一个游艇出租站归还游艇。游艇出租站 到游艇出租站 之 间的租金为r(i,j),1≤i<j≤n。试设计一个算法,计算出从游 间的租金为 。试设计一个算法, 艇出租站1 到游艇出租站n 所需的最少租金。 艇出租站 到游艇出租站 所需的最少租金。 编程任务: 编程任务: 对于给定的游艇出租站i 到游艇出租站j 对于给定的游艇出租站 到游艇出租站 之间的租金为 r(i,j),1≤i<j≤n,编程计算从游艇出租站 到游艇出租站 所 ,编程计算从游艇出租站1 到游艇出租站n所 需的最少租金。 需的最少租金。
10
编辑距离问题
a f x p i u
长度: 长度:n
m
长度: 长度:m
b
x
w
r
s
d
1
2
3
4
5
删除一个字符: 删除一个字符: 插入一个字符: 插入一个字符: 将一个字符改为另一个字符: 将一个字符改为另一个字符:
y z
del (δ)
11
编辑距离问题
char a[100],b[100]; scanf("%s%s", a, b); x w r int m = strlen(a); i d[1] d[2] d[3] int n = strlen(b); f 1 1 2 3 int d[101]; int i, j; x 2 1 2 3 for (i=1; i<=n; i++) d[i] = i; p 3 2 2 3 for (i=1; i<=m; i++) { i 4 3 3 3 int y = i-1; for (j=1; j<=n; j++) { u 5 4 4 4 int x = y; m 6 5 5 5 y = d[j]; int z = j>1?d[j-1]:i; int del = a[i-1]==b[j-1]?0:1; d[j] = min(x+del, y+1, z+1); } 删除一个字符: y 删除一个字符: } 插入一个字符: z 插入一个字符: printf("%d\n",d[n]); 将一个字符改为另一个字符: 将一个字符改为另一个字符: del (δ) 12 s d[4] 4 4 4 4 4 5
动态规划部分作业
1.用动态规划的逆序法求解下面问题:
⎩⎨
⎧=≥>=++⨯⨯=3,2,1,0)
0(..max 3213
2
21i x c c x x x t s x x x Z i
2.(运筹学书9.3) 某公司打算向它的三个营业区增设六个销售店,每个营业区至少增设一个。
从各区赚取的利润(单位为万元)与增设的销售店个数有关,其数据如下。
销售店增加数
A 区利润
B 区利润
C 区利润 0 100 200 150 1 200 210 160 2 280 220 170 3 330 225 180 4
340
230
200
试求各区应分配几个增设的销售店,才能使总利润最大?其值是多少?
3.(运筹学书9.4)某工厂有100台机器,拟分四个周期使用,在每一周期有两种生产任务。
据经验,把机器x 1台投入第一种生产任务,则在一个生产周期中将有x 1/3台机器作废;余下的机器全部投入第二种生产任务,则有1/10台机器作废。
如果干第一种生产任务每台机器可收益10,干第二种生产任务每台机器可收益7。
问怎样分配机器,使总收益最大?
4.(运筹学书 例2)机器负荷分配问题。
某种机器可在高低两种不同的负荷下进行生产,设机器在高负荷下生产的产量函数为g=8u 1,其中u 1为投入生产的机器数量,年完好率a=0.7;在低负荷下生产的产量函数为h=5y ,其中y 为投入生产的机器数量,年完好率为b=0.9。
假定开始生产时完好的机器数量s 1=1000台,试问每年如何安排机器在高、低负荷下的生产,使在五年内生产的产品总产量最高。
如果s 6=500台,如何分配?。
动态规划作业完整
动态规划作业1、1、设某工厂自国外进口一部精密机器,由机器制造厂至出口港有三个港口可供选择,而进口港又有三个可供选择,进口后可经由两个城市到达目的地,其间的运输成本如图中所标的数字,试求运费最低的路线?把A看作终点,该问题可分为4个阶段。
f k(S k)表示从第K阶段点S k到终点A的最短距离。
f4(B1)=20,f4(B2)=40,f4(B3)=30f3(C1)=min[d3(C1,B1)+ f4(B1), d3(C1,B2)+ f4(B2), d3(C1,B3)+ f4(B3) ]=70,U3(C1)= B2 或B3f3(C2)=40 ,U3(C2)= B3f3(C3)=80 ,U3(C3)= B1或B2 或B3f2(D1)=80 ,U2(D1)= C1f2(D2)=70 ,U2(D2)= C2f1(E)=110 ,U1(E)= D1或D2所以可以得到以下最短路线,E→D1→C1→B2 / B3→AE→D2→C2→B3→A2、习题4-2解:1)将问题按地区分为三个阶段,三个地区的编号分别为1、2、3;2)设Sk表示为分配给第k个地区到第n个地区的销售点数,Xk表示为分配给第k个地区的销售点数,S k+1=S k-X kPk(Xk)表示为Xk个销售点分到第k个地区所得的利润值fk(Sk)表示为Sk个销售点分配给第k个地区到第n个地区的最大利润值3)递推关系式:fk(Sk)=max[ Pk(Xk)+ f k+1(S k-X k) ] k=3,2,1f4(S4)=04)从最后一个阶段开始向前逆推计算第三阶段:设将S3个销售点(S3=0,1,2,3,4)全部分配给第三个地区时,最大利润值为:f3(S3)=max[P3(X3)] 其中X3=S3=0,1,2,3,4表1第二阶段:设将S2个销售点(S2=0,1,2,3,4)分配给乙丙两个地区时,对每一个S2值,都有一种最优分配方案,使得最大盈利值为:f2(S2)=max[ P2(X2)+ f3(S2-X2) ]其中,X2=0,1,2,3,4表2第一阶段:设将S1个销售点(S1=4)分配给三个地区时,则最大利润值为:f1(S1)=max[ P1(X1)+ f2(4-X1) ]其中,X1=0,1,2,3,4表3然后按计算表格的顺序反推,可知最优分配方案有两个:最大总利润为531)由X1*=2,X2*=1,X3*=1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
0 135 84 0 54 0 96 66 36 136 90 88 0 1 0 1 2 0 1 3 3 4 4 3
0
16
0
5×5
0
4
0
5×5
M矩阵 S矩阵 4. 计算m[i,i+4] (i=1): (矩阵链长度为4) m[1][5] = min 1≤k<5 { m[1][1] + m[2][5] + p0p1p5, m[1][2] + m[3][5] + p0p2p5, m[1][3] + m[4][5] + p0p3p5, m[1][4] + m[5][5] + p0p4p5} = { 150, 403, 212, 136 } = 136
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
0 135 84 0 54 0 1 66 36 88 1 2 1 2 3 3 3 3
0
16
0
5×5
4
4
5
5×5
M矩阵
S矩阵
2. 计算m[i,i+2] (i=1, 2, 3): (矩阵链长度为3) m[1][3] = min 1≤k<3 {m[1][1]+m[2][3]+p0p1p3, m[1][2]+m[3][3]+p0p2p3} = min{84, 225} = 84 m[2][4] = min 2≤k<4 {m[2][2]+m[3][4]+p1p2p4, m[2][3]+m[4][4]+p1p3p4} = min{90, 66} = 66 m[3][5] = min 3≤k<5 {m[3][3]+m[4][5]+p2p3p5, m[3][4]+m[5][5]+p2p4p5} = min{88, 90} = 88
0
1
1
0.24
2
3
4
5
6
1 2
0
1
2
3
4
5
6
0
2 3 4
5 6 7
0
0.6 0.84 0.18 0.36 0.71 0 0.09 0.31 0.83 0 0.13 0.56 0.68 0 0.3 0.42
1
1 2
3
4
2 2 3
3 4 4
5
6 7
5 5 5
0
0.06
5 5 6
0
二维表C
k 1 C ( 1 , 3 ) min k 2 k 3
二维表R
s2 3
s2
3
p s 0 0 . 09 0 . 27 0 . 36 0 . 36 p s 0 . 18 0 0 . 27 0 . 45
0 1 2 3
1 0.24
2
3
4
5
6 1
0
1
2
3
4
5
6
0
0.6
0.18
1
0
0.36
0.09
2
s4
5
s4
5
0 . 56 p s 0 . 13 0 0 . 43 0 . 56
p s 0 0 . 3 0 . 43 0 . 73
s5
6
s5
6
p s 0 0 . 06 0 . 36 0 . 42 0 . 42 p s 0 . 3 0 0 . 36 0 . 66
式1 式2
C(i, j)=min{C(i, k-1)+C(k+1, j)+w(i,j)} (1≤i≤j≤n, i≤k≤j) =min{C(i, k-1)+C(k+1, j)}+w(i,j) (1≤i≤j≤n, i≤k≤j) 式3
0 1 0.24 2 3 4 5 6 1 2 0.09 3 0.13 4 0.3 5 0.06 6 7 0 1 2 3 4 5 6
1
1 2
3
4
2 2 3
2 3 4 4
5
6 7
4 5 5 5
0
0.06
5 5 5 6
0
二维表C
k k C (1, 4 ) min k k
4
二维表R
1 2 3 4
p s 0 0 . 71 0 . 64 1 . 35 s 1 4 C (1,1 ) C ( 3 , 4 ) p s 0 . 24 0 . 31 0 . 64 1 . 19 s 1 1 . 19 4 C (1, 2 ) C ( 4 , 4 ) p s 0 . 6 0 . 13 0 . 64 1 . 37 s 1 4 C (1, 3 ) C ( 5 , 4 ) p s 0 . 84 0 0 . 64 1 . 48 s 1 C (1, 0 ) C ( 2 , 4 )
二维表R
C (1 ,0 ) C ( 2 , 3 ) p s 0 0 . 36 0 . 51 0 . 87 s1 3 C ( 1 ,1 ) C ( 3 , 3 ) p s 0 . 24 0 . 09 0 . 51 0 . 84 0 . 84 s1 3 C (1 , 2 ) C ( 4 , 3 ) p s 0 . 6 0 0 . 51 1 . 11 s1
完成后通过S 矩阵得出最 优完全加括 号方式为:
( ( A1 (( A2 A3 ) A4 ) ) A5 )
课后练习
• 练习2:假定有6个键值,k1、k2、k3、k4、k5、 k6,其中k1≤k2≤k3≤k4≤k5≤k6。它们被搜索的概 率分别为 {0.24,0.18,0.09,0.13,0.3,0.06}, 请使用动态规划算法求一颗最优二叉搜索树, 要求:
二维表C
s3
4
s3
4
p s 0 0 . 13 0 . 22 0 . 35 0 . 31 p s 0 . 09 0 0 . 22 0 . 31
0
二维表R
k 4 : C ( 4 , 3 ) C ( 5 ,5 ) C ( 4 , 5 ) min k 5 : C ( 4 ,4 ) C ( 6 ,5 ) k 5 : C ( 5 ,4 ) C ( 6 ,6 ) C ( 5 , 6 ) min k 6 : C ( 5 ,5 ) C ( 7 ,6 )
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
• 函数递归调用的递归树树形
1:5 1:1 2:5 1:2 3:5 1:3 4:5 1:4 5:5
2:2 3:5 2:4 5:5
1:1 2:2 3:3 4:5 3:4 5:5
…… ……
…… ……
……
……
……
……
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
p s 0 0 . 18 0 . 42 0 . 6
s1
2
0 .6 p s 0 . 24 0 0 . 42 0 . 66
C(i, i-1)=0 (1≤i≤n+1) C(i, i)=pi (1≤i≤n)
式1 式2
C(i, j)=min{C(i, k-1)+C(k+1, j)+w(i,j)} (1≤i≤j≤n, i≤k≤j) =min{C(i, k-1)+C(k+1, j)}+w(i,j) (1≤i≤j≤n, i≤k≤j) 式3
课后练习
• 练习1:已知一组连乘矩阵A1A2A3A4A5的行列 数如下面p向量所示:
1. 如使用函数直接递归调用(穷举法)的形式 求解,则是无效算法,请画出函数递归调用 的递归树树形,并说明有哪些子问题被重复 计算。 2. 请用动态规划法求解最优计算顺序,写出计 算过程以及加括号的计算顺序表达式。p = (5, 3, 9, 2, 2, 4)
1
2 3 4
0
0.6
0.18
1
0
1 2 3 4 5 6
0
0
5
6 7
0
0
0
二维表C
k 1 : C (1 ,0 ) C ( 2 , 2 ) C ( 1 , 2 ) min k 2 : C ( 1 ,1 ) C ( 3 , 2 )
二维表R
s1 2
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
0 135 84 0 54 0 96 66 36 88 0 1 0 1 2 0 1 3 3 3
0
16
0
5×5
0
4
0
5×5
M矩阵
S矩阵
3. 计算m[i,i+3] (i=1, 2): (矩阵链长度为3) m[1][4] = min 1≤k<4 { m[1][1] + m[2][4] + p0p1p4, m[1][2] + m[3][4] + p0p2p4, m[1][3] + m[4][4] + p0p3p4} = { 96, 261, 104 } = 96
A1A2A3A4A5 p = (5, 3, 9, 2, 2, 4)
0 135 84 0 54 0 96 66 36 0 90 88 1 0 1 2 0 1 3 3 4 3