算法分析与设计动态规划ppt课件

合集下载

《算法设计与分析》第3章 动态规划法

《算法设计与分析》第3章 动态规划法

最优解的递推关系 定义m[i:j],表示矩阵连乘A[i:j]所需的最少计算 量 则有: i j 0 m[i ][ j ] i j minj{m[i ][ k ] m[k 1][ j ] pi 1 pk p j } i k
假设:N个矩阵的维数依序放在一维数组p中, 其中Ai的维数记为Pi-1×Pi
A=A1×A2×A3×…×An
A=(A1×A2×…×Ak) × (Ak+1×Ak+2×…×An)
B
C
1.2 穷举法
穷举法:列举出所有可能的计算次序,并计算出 每一种计算次序相应需要的数乘次数,从中找出 一种数乘次数最少的计算次序。
穷举法复杂度分析: 对于n个矩阵的连乘积,设其不同的计算次序有P(n)种。 由于每种加括号方式都可以分解为两个子连乘的加括号问题: (A1...Ak)(Ak+1…An)可以得到关于P(n)的递推式如下:
【程序】矩阵连乘的 穷举法实现 int MatrixChain::LookupChain(int i, int j) { if(i==j) return 0; int u=LookupChain(i+1,j)+p[i-1]*p[i]*p[j]; //k=i s[i][j]=i; //记录最优分解位置 for ( int k=i+1;k<j; k++ ) { //遍历k int t=LookupChain(i,k)+LookupChain(k+1,j) +p[i]*p[k+1]*p[j+1]; if (t<u) { u=t; s[i][j]=k; //记录最优分解位置 } } int MatrixChain::LookupChain() return u; { } return LookupChain(1,n);

最新2019-算法设计与分析动态规划实例讲解-PPT课件

最新2019-算法设计与分析动态规划实例讲解-PPT课件
最优化原理:作为整个过程的最优策略具有这样的 性质:无论过去的状态和决策如何,相对于前面的决 策所形成的状态而言,余下的决策序列必然构成最优 子策略。”也就是说,一个最优策略的子策略也是最 优的。
(三)、建立动态规划模型的步骤
1、划分阶段k
划分阶段是运用动态规划求解多阶段决策问题的第一 步,在确定多阶段特性后,按时间或空间先后顺序, 将过程划分为若干相互联系的阶段。对于静态问题要 人为地赋予“时间”概念,以便划分阶段。
f1(s1)
最优目标函数值
V 1 * ,n V 1 * ,n (s 1 * ,u 1 * 子, 从策略k,的到s 最终n * 优点,u 目最n * 标优)函策数略值
fs ov ps tu s
, , ,
k k
k ,n k k
uu , ,
k
n
n 1
(二)、动态规划的基本思想
1、动态规划方法的关键在于正确地写出基本的递推 关系式和恰当的边界条件(简称基本方程)。要做到 这一点,就必须将问题的过程分成几个相互联系的阶 段,恰当的选取状态变量和决策变量及定义最优值函 数,从而把一个大问题转化成一组同类型的子问题, 然后逐个求解。即从边界条件开始,逐段递推寻优, 在每一个子问题的求解中,均利用了它前面的子问题 的最优化结果,依次进行,最后一个子问题所得的最 优解,就是整个问题的最优解。
二、最短路径问题
例一、从A 地到D 地要铺设一条煤气管道,其中需经过 两级中间站,两点之间的连线上的数字表示距离,如 图所示。问应该选择什么路线,使总距离最短?
3
C1
2 B1 3
1
A
1 2
3
C2
3
D
4 B2 1
4
C3

算法分析与设计动态规划ppt课件

算法分析与设计动态规划ppt课件

5
11 5
8
8
6
V4
V5
9 4
10 2
5 11
12 t
6
多段图问题
多段图G=(V, E)是—个有向图。它具有如下特性: – 图中的结点被划分成k≥ 2个不相交的集合
V(源i 点,1≤) 和i≤t k(,汇其点中)V。1和Vk分别只有一个结点s – 图中所有的边<u,v>均具有如下性质:若u∈Vi ,
26
多段图的向后处理算法
Line procedure BGRAP(E,k,n,P)
real BCOST(n),integer D(n-1),P(k),r,j,k,n
BCOST(1)0
for j2 to n do
设r是一个这样的结点,<r,j>∈E且使BCOST(r) +c(r,j)取小值
BCOST(j)BCOST(r)+ c(r,j)
如果已作了k-1次决策,1≤k-1<n。设x1,…xk-1的最 优决策值是r1,..,rk-1,他们所产生的状态为S1,…Sk-1
10
最优化决策序列的表示
又设Xk={{rk,1,rk,2,…,rk,pk}是xk的可能值的集 合。 Sk,jk是选取rk,jk决策之后所产生的状态, 1≤jk≤pk Fk,jk 是相应于Sk,jk的最优决策序列。 因此,相应于Sk-1的最优决策序列是
23
V1
V2
V3
V4
V5
24
9
1
3
7
s1 3
26 2 77
6 5
4 3
9 4
10 2 12 t
4 11 2
5
5
11 5

动态规划算法教学PPT

动态规划算法教学PPT

03
动态规划算法的实现步骤
明确问题,建立数学模型
1
确定问题的目标和约束条件,将其转化为数学模 型。
2
理解问题的阶段划分,将问题分解为若干个子问 题。
3
确定状态变量和决策变量,以便描述子问题的状 态和决策。
划分阶段,确定状态变量和决策变量
01
根据问题的阶段划分,将问题分解为若干个子问题。
02
确定状态变量和决策变量,以便描述子问题的状态 和决策。
02
将子问题的最优解组合起来,得到原问题的最优解。
对最优解进行验证和性能评估,确保其满足问题的要求。
03
04
动态规划算法的优化技巧
分支定界法
分支定界法是一种求解优化问题的算 法,它通过不断生成问题的分支并确 定每个分支的界限,来寻找最优解。 在动态规划中,分支定界法可以用来 优化状态转移方程,减少计算量。
详细描述
多目标规划问题在实际生活中应用广泛,如资源分配、项目计划、城市规划等领 域都有涉及。常用的求解多目标规划的方法包括权重和法、帕累托最优解等。
多阶段决策问题
总结词
多阶段决策问题是动态规划中的一类,解决的问题需要在多个阶段做出决策,每个阶段的决策都会影响到后续阶 段的决策。
详细描述
多阶段决策问题在实际生活中应用广泛,如生产计划、库存管理、路径规划等领域都有涉及。常用的求解多阶段 决策问题的方法包括递归法、动态规划等。
特点
动态规划算法具有最优子结构、重叠 子问题和最优解性质等特征。
动态规划算法的应用领域
计算机科学
在计算机科学中,动态规划算法广泛应用于字符 串处理、排序、数据压缩和机器学习等领域。
电子工程
在电子工程中,动态规划算法用于信号处理、通 信和控制系统等领域。

第三章动态规划算法1PPT

第三章动态规划算法1PPT
算法设计与分析 2
不同计算顺序的数量
设n个矩阵的连乘积有P(n)个不同的计算顺序。 由此可得出关于 先在第k个和第k+1 P(n) 个矩阵之间将原矩阵序列 的递归式: 分成两个矩阵子序列, k=1,…, n;再分别 1 n= 1 n–1 P(n) = 对两个子序列完全加括号,最后对结果加括 ∑P(k) P(n–k) n>1 k=1 号,便得到原序列的一种完全加括号方式。 解此递归方程可得P(n) = C(n–1),其中 1 2n n/n3/2) C(n) = n+1 = Ω(4 n 所以P(n)随n的增长呈指数增长。因而穷举搜 索法不是有效的算法。
算法设计与分析 4源自立递归关系令m[i][j] , 1≤i, j≤n,为计算A[i, j] 的最少数乘 次数,则原问题为m[1][n]。 当i = j时,A[i, j]为单一矩阵, m[i][j] = 0; 当i<j时,利用最优子结构性质有: m[i][j] = min{m[i][k] + m[k+1][j] + pi–1pkpj}
3 3
s[i][j]
3 5 4
5
算法设计与分析
11
MatrixChain的时间复杂性
算法MatrixChain的主要计算取决于程序 中对r、i和k的三重循环。循环体内的计 算量为O(1),1≤ r、i、k≤n,三重循环的 总次数为O(n3)。因此该算法时间复杂性 的上界为O(n3),比直接递归算法要有效 得多。算法使用空间显然为O(n2)。 这种算法称为动态规划。

算法设计与分析 8
自底向上的计算

例如对于A1A2A3A4,依据递归式以自底向上的 方式计算出各个子问题,其过程如下:
其中 m[1][3] = 例如: m[1][1]+m[2][3]+p0p1p3 m[i][j] = mini≤k<j min m[1][3] m[2][4] m[1][2]+m[3][3]+p p2p3 {m[i][k]+m[k+1][j]+pi0–1p kp j }

《动态规划算法》课件

《动态规划算法》课件
总结词
多阶段决策优化
详细描述
背包问题是一个经典的动态规划问题,通过将问题分解 为多个阶段,并为每个阶段定义状态和状态转移方程, 我们可以找到最优解。在背包问题中,我们使用一个二 维数组来存储每个状态的最优解,并逐步更新状态以找 到最终的最优解。
最长公共子序列求解
总结词
字符串匹配优化
详细描述
最长公共子序列问题是一个经典的动态规划问题,用 于找到两个序列的最长公共子序列。通过动态规划, 我们可以避免在寻找公共子序列时进行冗余比较,从 而提高算法效率。在动态规划中,我们使用一个二维 数组来存储子问题的最优解,并逐步构建最终的最长 公共子序列。
动态规划的基本思想
01
将问题分解为子问 题
将原始问题分解为若干个子问题 ,子问题的解可以构成原问题的 解。
02
保存已解决的子问 题
将已解决的子问题的解保存起来 ,以便在求解其他子问题时重复 使用。
03
递推求解
从子问题的解逐步推导出原问题 的解,通常采用自底向上的方式 求解。
02
动态规划算法的步骤
可并行化
动态规划算法可以并行化执行,以提高计算效率,这对于 大规模问题的求解非常有利。
缺点
• 空间复杂度高:动态规划算法需要存储大量的中间状态,因此其空间复杂度通常较高,有时甚至会超过问题规 模的一个指数倍。
• 问题规模限制:由于动态规划算法的空间复杂度较高,因此对于大规模问题的求解可能会遇到困难。 • 可能产生大量重复计算:在动态规划算法中,对于每个子问题,可能会被多次计算和存储,这会导致大量的重复计算和存储空间浪费。 • 不易发现:动态规划算法的应用范围有限,对于一些非最优子结构问题或没有重叠子问题的优化问题,动态规划算法可能不适用。因此,在解决问题时需要仔细分析问题特性,判断是

算法设计与分析讲义动态规划

算法设计与分析讲义动态规划

要点三
《算法之美》
以通俗易懂的语言介绍了算法的基本 概念和方法,包括动态规划算法的应 用案例。
THANKS
谢谢您的观看
详细描述
记忆化搜索优化方法是将问题的搜索过程记忆下来,当再次遇到同样的问题 时,直接从记忆中获取答案,避免重复的搜索过程。这种优化方法适用于具 有重复子问题的搜索问题。
自顶向下的优化方法
总结词
通过从问题的顶层开始,逐步向下解决问题,从而避免冗余的计算。
详细描述
自顶向下的优化方法是从问题的最高层开始,逐步向下解决问题。通过将问题分 解为多个子问题,并且只解决一次子问题,避免冗余的计算,从而提高效率。
算法设计与分析讲义动态规划
xx年xx月xx日
目 录
• 动态规划概述 • 动态规划的基本原理 • 动态规划的应用实例 • 动态规划的优化方法 • 动态规划的拓展学习 • 参考2
定义:动态规划是一种 通过将问题分解为相互 重叠的子问题来解决问 题的方法。在算法设计 中,动态规划通常用于 优化递归问题,避免重 复计算相同的子问题, 从而节省计算时间和空 间。
高级动态规划算法的优化
针对具体问题,采用更高级的动态规划算法,如最长公共子序列(LCS)、最长递增子序列(LIS)等。
自顶向下的动态规划
将问题分解为子问题,从高级到低级逐步解决问题,避免冗余计算。
分布式动态规划
01
02
03
分布式计算环境
通信开销
全局状态
将问题分解成多个子问题,在不 同的计算节点上并行解决。
02
03
数据挖掘
在数据挖掘中,使用动态规划算法发 现频繁子集、关联规则等数据模式, 帮助企业进行数据分析和决策。
06

算法设计与分析PPT课件

算法设计与分析PPT课件

数组
输出
1 0,0,2 1 2 3
2
1,1,2 0,0,2
123
,2,2
3 1,1,2 1 2 3 1 2 3
0,0,2
2
2,1,2 0,0,2 1 3 2
,2,2
3 2,1,2 1 3 2 1 3 2
0,0,2
2
2,1,2 0,0,2
123
1 1,0,2 2 1 3
层次 栈状态 (i, k, m)
个函数是双递归函数。 Ackerman函数A(n,m)定义如下:
A(1,0)2
A(0,m)1
A(n,0)n2
m0 n2
A(n,m)A(A(n1,m),m1) n,m1
Ackerman函数无法找到非递归的定义。
28
Ackerman函数
A(1,0)2
A(0,m)1
A(n,0)n2
m0 n2
A(n,m)A(A(n1,m),m1) n,m1
P n ( x ) ( ( ( a n x ( a n 1 ) ( a n 2 ) x a n 3 ) ) x a 1 ) x a 0
T(n)n
Horner(int a[n+1],real x) { int p= a[n];
for (i=1;i<=n;i++) p=p*x+a[n-i]; return p; }
算法复杂性是算法运行所需要的计算机资源的量, 需要时间资源的量称为时间复杂性,需要的空间资源的 量称为空间复杂性。这个量应该只依赖于算法要解的问 题的规模、算法的输入和算法本身的函数。如果分别用 n、I和A表示算法要解问题的规模、算法的输入和算法 本身,而且用C表示复杂性,那么,应该有C=F(n,I,A)。 一般把时间复杂性和空间复杂性分开,并分别用T和S来 表示,则有: T=T(n,I)和S=S(n,I) 。

算法设计与分析_第3章_动态规划1

算法设计与分析_第3章_动态规划1
8
引言
分治技术的问题
子问题是相互独立的
Why?
问题:
如果子问题不是相互独立的,分治方法将重复 计算公共子问题,效率很低,甚至在多项式量 级的子问题数目时也可能耗费指数时间
解决方案:动态规划
用表来保存所有已解决子问题的答案 不同算法的填表格式是相同的
9
引言
最优化问题
Why?
可能有多个可行解,每个解对应一个 值,需要找出最优值的解。
MATRIX-MULTIPLY(A, B) 1 if columns[A] ≠ rows[B] 2 then return “error: incompatible dimensions” 3 else for i ← 1 to rows[A] 4 for j ← 1 to columns[B] 5 C[i, j] ← 0 6 for k ← 1 to columns[A] 7 C[i, j]←C[i, j]+A[i, k]·B[k, j] 8 return C
(A1 (A2 (A3 A4))) , (A1 ((A2 A3) A4)) , ((A1 A2) (A3 A4)) , ((A1 (A2 A3)) A4) , (((A1 A2) A3) A4).
15
矩阵连乘问题
采用不同的加括号方式,可导致不同的、 甚至及其富有戏剧性差别的乘法开销
设有四个矩阵A,B,C,D,它们的维数分别 是: A=50×10 B=10×40 C=40×30 D=30×5 总共有五种完全加括号的方式: (A((BC)D)) ——16000 (A(B(CD))) ——10500 ((AB)(CD)) ——36000 (((AB)C)D) ——87500 ((A(BC))D) ——34500

算法分析与设计PPT教学课件 Algorithms Chapter 8 动态规划

算法分析与设计PPT教学课件 Algorithms Chapter 8  动态规划

计算二项式系数
二项式系数(Binomial Coefficient )
是n元素集合中k个元素组合的数量(0≤k ≤n),记作 C(n.k)或者Cnk,来源于二项式公式:
(a+b)n=Cn0an+…+Cnian-ibi+…+Cnnbn
Cn0=Cnn=1
递推关系式:
当n>k>0时,Cnk=Cn-1k-1+Cn-1k
10
标准动态规划的基本框架 1. 2. 3. 4. 5. 6. 7. 对fn+1(xn+1)初始化; {边界条件} for k:=n downto 1 do for 每一个xk∈Xk do for 每一个uk∈Uk(xk) do begin fk(xk):=一个极值; xk+1:=Tk(xk,uk); t:=φ(fk+1(xk+1),vk(xk,uk)); {∞或-∞} {状态转移方程} {基本方程(9)式}
15
多段图
multistage graph problem
s
v2 v3
vk-1
t
Forward approach Backward approach
证最佳原理成立
多段图(multistage graph problem)
V1 9 V2 V3 1 V4 6 5 3 5 4 V5
2
2
7 3
s 1
2
3
算法分析与设计
动态规划
Dynamic programming
动态规划的定义
动态规划(Dynamic programming)是一种算法设计技术, 是用来解决一种多段决策过程最优的通用方法。 多段决策过程最优

算法设计与分析动态规划

算法设计与分析动态规划
算法设计与分析动态规划
第十一章 动态规划(一)
动态规划概念 矩阵链乘法(过程及分析)
问题描述 最优括号化分析 计算最优代价 构造最优解
动态规划的基本内容
最优结构 重叠子问题 记忆化
程序演示及说明
动态程序算法设计四步曲
矩阵链乘法
矩阵链乘法
矩阵链乘法
矩阵链乘法
计算括号化重数
计算最优代价
步长为2 m[1,3]=min{m[1,1]+m[2,3]+p0*p1*p3,m[1,2]+m[2,3]+p0*p2*p3}
=min{0+2625+30*35*5,15750+0+30*15*5} =min{7875,18000} = 7875 S[1,3] = 1
m[2,4]=min{m[2,2]+m[3,4]+p1*p2*p4,m[2,3]+m[4,4]+p1*p3*p4} =min{0+750+35*15*10,2625+0+35*5*10} =min{6000,4375} =4375
= 2*2.5 =5 P(5) = 2*(P(1)*P(4)+P(2)*P(3))
= 2*(5+2) =14
计算括号化重数
计算括号化重数
最优括号化的结构
一个递归解
一个递归解
计算最优代价
计算最优代价
计算最优代价
计算最优代价
为下列矩阵序列求解最优解
计算最优代价
步长为0,1 m[1,1]=m[2,2]=m[3,3]=m[4,4]=m[5,5]=m[6,6]=0 m[1,2]=min{m[1,1]+m[2,2]+p0*p1*p2}=30*35*15=15750 S[1,2]=1 m[2,3]=min{m[2,2]+m[3,3]+p1*p2*p3}=35*15*5=2625 S[2,3]=2 m[3,4]=min{m[3,3]+m[4,4]+p2*p3*p4}=15*5*10=750 S[3,4]=3 m[4,5]=min{m[4,4]+m[5,5]+p3*p4*p5}=5*10*20=1000 S[4,5]=4 m[5,6]=min{m[5,5]+m[6,6]+p4*p5*p6}=10*20*25=5000 S[5,6]=5

第七章 动态规划法2(算法分析与设计课件)

第七章 动态规划法2(算法分析与设计课件)
m[4][m5][=3]m[4[4]+][m4][+5]m[5[5]+][5P]3+P5PP46P=5P160=0100+*52*02*02*52=55=0305000}
m=
0 15750 7875 9735 11875 15125
0 2625 4375 712510500
0 750 2500 5375 0 1000 3500
的最优解导出的子问题的解不是最优的,然后再设法说明在这个假设下可构造出 比原问题最优解更好的解,从而导致矛盾。
利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐 步构造出整个问题的最优解。最优子结构是问题能用动态规划算法求解的前提。
(2)子问题的重叠性质:每次产生的子问题并不都是新的子问题,有些子问题 被反复计算多次,这种性质称为子问题的重叠性质。
7
7.1 一般方法和基本要素
例2:多段图问题:求从s到t的一条长度最短的路径
(3)多段图的向前递推关系式
cost(k,t) 0 cost(i, j) min {c( j, p) cost(i 1, p)} 1 i k 1
jVi, pVi1 j, pE
其中,cost(i,j)是从i阶段状态j到t的最短路径的长度,i是阶段编号,j 是第i阶段的一个状态编号.
在s[i][j]中记录使得下式取得最小值的k.
m[i, j] min {m[i, k] m[k 1, j] pi pk1p j1}
ik j

7.3 矩阵连乘 A0 A1 A2 A3 A4 A5 3035 3515 155 510 1020 2025
7.3.2 动态规划法求解
动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中, 当再次需要解此子问题时,只是简单地用常数时间查看一下结果。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
最优性原理
最优性原理(Principle of Optimality) 过程的最优决策序列具有如下性质:无论过程的
初始状态和初始决策是什么,其余的决策都必须相对 于初始决策所产生的状态构成一个最优决策序列。
利用动态规划求解问题的前提 1) 证明问题满足最优性原理
如果对所求解问题证明满足最优性原理,则说明 用动态规划方法有可能解决该问题
3+COST(2,4), 2+COST(2,5)}=16
16
多段图的向前处理算法
例子中5段图的实现计算步骤:
– 在计算每一个COST(i, j)的同时,记下每个状态 (结点j)所做出的决策,设为D(i, j),则可容易地 求出这条最小成本路径。
– D(3,6)=10 D(3,7)=10 D(3,8)=10 D(2,2)=7 – D(2,3)=6 D(2,4)=8 D(2,5)=8 D(1,1)=2 – 设这条最小成本路径是s=l ,v2,v3,…,vk-1, t=12。
5
8
6
8
9 4
10 2
5 11
12 t
V1
V2
V3
V4
V19 5
多段图的向后处理算法
设BP(i, j)是一条由源点s到Vi中结点j的最 小成本路径,BCOST(i, j)表示BP(i, j)的成 本,由向后处理方法得到公式4.6:
即由源点s到Vi中结点j的最小成本,等于由 源点s到Vi-1中任一结点l 的最小成本加上Vi-1 中结点l 到Vi中结点j的边长, 所得的所有和 中最小的那个值。
第四章 动态规划
第四章 动态规划
什么是动态规划 多段图 最优二分检索树 0/1背包问题 可靠性设计 货郎担问题
2
4.1 一般方法
在实际生活中,有这么一类问题,它们的活 动过程可以分为若干个阶段,而且在任一阶 段后的行为都依赖于i 阶段的过程状态,而 与i 阶段之前的过程是如何达到这种状态的 方式无关,这样的过程就构成了一个多阶段 决策过程。
9
最优化决策序列的表示
设xi,1S≤0是i≤问n题的初始状态。假定要作n次决策 X是1在={选r1,1取,r1决,2,策…值,r1r,p1j,}j1是以x后1的所可产能生决的策状值态的,集1合≤,j1≤而pS11,1 又设F1,j1是相应于状态S1,j1的最优决策序列 则中相最应优于 的序S0的列最,优记决作策序列就是{r1,j1 F1,j1 | 1≤j1≤p1}
25
V1
V2
V3
V4
V5
24
9
1
3
7
s1 3
26 2 77
6 5
4 3
9 4
10 2 12 t
4 11 2
5
5
11 5
8
8
6 11
对于实例中的最小成本路径如下所示:
D(3,6)=3; D(3,7)=2; D(3,8)=2;
D(4,9)=6; D(4,10)=6; D(4,11)=8;
D(5,12)=10
COST(n)0
for jn -1 to 1 by –1 do
设r是一个这样的结点,<j, r>∈E且使c(j,r)+COST(r)取小值
COST(j)c(j,r)+COST(r)
D(j)r repeat P(1)1;P(k)n
计算出COST(j)的值, 并找出一条最小成本 路径
for j2 to k-1 do
12
4.2 多段图
多段图向前处理的算法
– 设P(i, j)是一条从Vi中的节点j 到汇点t 的最小 成本路径,COST(i, j)表示这条路径的成本, 根据向前处理方法有公式4.5:
13
多段图的向前处理算法
因为,若<j, t> ∈E成立,有COST(k-1,j)=c(j,t), 若<j, t> ∈E不成立,则有COST(k-1,j)=∞,所以 可以通过如下步骤解式公式(4.5),并求出 COST(1,s)。 首先对于所有j∈Vk-2,计算COST(k-2, j),然后对 所有的j∈Vk-3,计算计算COST(k-3, j)等等,最后 计算出计算COST(1, s)
BCOST(2,4)=3; BCOST(2,5)=2;
21
V1
V2
V3
V4
V5
24
9
1
3
7
s1 3
26 2 77
6 5
4 3
9 4
10 2
12 t
4 11 2
5
11 5
8
8
6
5 11
BCOST(3,6)=min{BCOST(2,2)+4, BCOST(2,3)+2}= 9
BCOST(3,7)= min{BCOST(2,2)+2, BCOST(2,3)+7, BCOST(2,5)+11} = 11
15
多段图的向前处理算法
COST(2,2)=min{4+COST(3,6), 2+COST(3,7), 1+COST(3,8)}=7
– COST(2,3)=9 – COST(2,4)=18 – COST(2,5)=15 – COST(1,1)=min{9+COST(2,2), 7+COST(2,3),
23
V1
V2
V3
V4
V5
24
9
1
3
7
s1 3
26 2 77
6 5
4 3
9 4
10 2 12 t
4 11 2
5
5
11 5
8
8
6 11
BCOST(5,12)=min{BCOST(4,9)+4,BCOST(4,10)+2, BCOST(4,11)+5}=16
24
多段图的向后处理算法
在计算每一个BCOST(i, j)的同时,记 下每个状态(结点j)所做出的决策( 即, 使BCOST(i-1, j)+c(l, j)取最小值的 l 值), 设为D(i, j),则可容易地求出这条最小 成本路径。
D(j)r repeat P(1)1;P(k)n for jk-1 to 2 by -1 do
计算出BCOST(j) 的值,并找出一 条最小成本路径
P(j)D(P(j+1))
repeat
找出最小成本路径
End BGRAPH
上的第j个结点
27
4.3 每对结点之间的最短路径
复习(略)
28
4.4 最优二分检索树
14
多段图的向前处理算法
例子中5段图的 实现计算步骤:
COST(4,9)=4 COST(4,10)=2 COST(4,11)=5
– COST(3,6)=min{6+COST(4,9), 5+COST(4,10)}=7 – COST(3,7)=min{4+COST(4,9), 3+COST(4,10)}=5 – COST(3,8)=min{5+COST(4,10), 6+COST(4,11)}=7
则可得知: – v2=D(1, 1)=2,v3=D(2 , D(1,1))=7 和 v4=D(3 , D(2, D(1, 1)))=D(3, 7)=10
17
多段图的向前处理算法
procedure FGRAP(E,k,n,P)
real COST(n),integer D(n-1),P(k),r,j,k,n
到t的最小成本路径。
7
多段图问题
最优性原理对多段图成立
– 假设s,v2,v3,…,vk-1,t是一条由s到t的最短路径 – 再 策假,设因从此V源2点就s是开初始始,决已策作所出产了生到的结状点态V2的决 – 如 态 最果 ,短把 解路V决径2这看个成子是问原题问就题是的找一出个一子条问由题V的2到初t始的状 – 这条最短路径显然是v2,v3,…,vk-1,t
如果已作了k-1次决策,1≤k-1<n。设x1,…xk-1的最 优决策值是r1,..,rk-1,他们所产生的状态为S1,…Sk-1
10
最优化决策序列的表示
又设Xk={{rk,1,rk,2,…,rk,pk}是xk的可能值的集 合。 Sk,jk是选取rk,jk决策之后所产生的状态, 1≤jk≤pk Fk,jk 是相应于Sk,jk的最优决策序列。 因此,相应于Sk-1的最优决策序列是
BCOST(3,8)= min{BCOST(2,2)+1, BCOST(2,4)+11,
BCOST(2,5)+8} = 10
22
V1
V2
V3
V4
V5
24
9
1
3
7
s1 3
26 2 77
6 5
4 3
9 4
10 2
12 t
4 11 2
5
5
11 5
8
8
6 11
BCOST(4,9)=min{BCOST(3,6)+6, BCOST(3,7)+4}=15 BCOST(4,10)=min{BCOST(3,6)+5, BCOST(3,7)+3, BCOST(3,8)+5}=14 BCOST(4,11)=16
2) 获得问题状态的递推关系式 获得各阶段间的递推关系式是解决问题的关键。
5
多段图问题
多段图问题 V1
9 7 s1 3 2
V2
V3
24
6
1
26 5
3
2
7
7
4 3
4 11
5
11 5
相关文档
最新文档