C语言 动态规划PPT课件
合集下载
C语言的动态规划(1)精品PPT课件

2
A
a1
a4
32a2 Ba5 Nhomakorabea21
a3 C
D
a6
3
11.10.2020
9
Mod 4最优路径分析
❖ 分析:这个图是一个多阶段图,我们按上面 思路来分阶段来求最优解
A->B最优值 min{2 mod 4,3 mod 4}=2 A->C最优值min{(2+2)mod 4,(2+2) mod 2}=0 A->D最优值min{(0+1) mod 4,(0+3) mod 4}=1
11.10.2020
11
城市道路最短路径
H1
❖ 右图是城市道路示意 D1
图,每条边上数字是 该街道的长度,求从 C1
A1到H1的最短路径长 B1 C2
度(只允许往右或往
上走)
1
A1
B2
C3
11.10.2020
12
(1)计算直线的交点数
问题描述:
平面上有n条直线,且无三线共点,问这些直线能 有多少种不同交点数。
5
❖ 设Di为a1到i点的最短路径,则
Dd1=min{Dc1+5, Dc2+6,Dc3+6}
❖ 同样
Dc1=min{Db1+2,Db2+8} Dc2=min{Db1+7,Db2+9} …… Da1=0
11.10.2020
6
动态规划的含义
❖ 有一类特殊的活动过程,可按时间顺序将整 个过程划分成若干个互相联系的阶段,在每 一个阶段需要做出决策。在这种多阶段决策 问题中,各个阶段采取的决策依赖于当前状 态,又随即引起状态的转移。
动态规划C语言

动态规划是运筹学的一个重要分支,是解 决多阶段决策过程最优化的一种方法。 所谓多阶段决策过程,是将所研究的过程 划分为若干个相互联系的阶段,在求解时, 对每一个阶段都要做出决策,前一个决策 确定以后,常常会影响下一个阶段的决策。
动态规划所依据的是“最优性原理”。 “最优性原理”:不论初始状态和第一步决策 是什么,余下的决策相对于前一次决策所产生 的新状态,构成一个最优决策序列。 最优决策序列的子序列,一定是局部最优 决策子序列。 包含有非局部最优的决策子序列,一定不是 最优决策序列。
动态规划的几个概念: 阶段:据空间顺序或时间顺序对问题的求解划 分阶段。 状态:描述事物的性质,不同事物有不同的性 质,因而用不同的状态来刻画。对问题的求解 状态的描述是分阶段的。 决策:根据题意要求,对每个阶段所做出的某 种选择性操作。 状态转移方程:用数学公式描述与阶段相关的 状态间的演变规律。
…
3.选择数据结构,将每条路经的长度存在数组 中。
东西方向上的道路长度存在两维数组h[4][3]中规定 数组的第一维为行号,第二维为列号。
3 2 1 0 3 3 2 3 0 1 4 1 2 1 2 5 4 3 2
h[4][3] = { {3,2,3}, {2,1,4}, {3,4,5}, {3,1,2} };
定义二维数组, P[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}, 第一维为行,第二维为列。这时P(O)为P[0][1]; P(N)为P[1][0];…P(A)为P[3][3],以下为分阶 段递推求解过程。 P[0][0] = 0;
对于阶段1:
P[0][1] = P[0][0]+h[0][0] = 0+3 = 3; P[1][0] = P[0][0]+v[0][0] = 0+2 = 3;
动态规划算法教学PPT

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

有些问题,如系统可靠性问题,其目标函
数是取各阶段效应的连乘积形式,
n
fk vk (sk ,uk ) ik
.
22
(7) 最优解
用 fk* (sk) 表示第 k 子过程指标函数Fk(sk , pk(sk)) 在状态 sk 下的最优值,即:
fk (s k)o p t{ F k(s k,p k(s k))}k 1 ,2 ,L ,n
段”概念;
2. 正确选择状态变量 sk, 满足: 可知性: 正确描述动态过程演变, 可直接或
间接确定状态变量的值;
无后效性: 后面的决策与前面的决策无关;
.
34
3. 确定决策变量 xk以及允许决策集合Xk; 4. 写出状态转移方程 sk+1 = T (sk , xk); 5. 决策变量的取值范围 6. 写出过程指标函数(阶段函数)的递推
.
27
在例题中,求解最短路线的计算公式可以概括
写成:
ff5k((ss5k))0xkmXikn(sk){vk(sk,xk(sk))fk1(sk1)} k4,3,2,1
其中,vk 在这里表示从状态 sk 到由决策 xk
所决定的状态 sk+1 之间的距离。f5(s5)=0 是边
界条件,表示全过程到第四阶段终点结束。
.
31
相应的函数基本方程为 :
ffnk1(s(ks)n1)op1t{vk(sk,xk(sk))• fk1(sk1)}
xkXk
kn,n1,L ,2,1
.
32
动态规划的优缺点
动态规划的优点
• 可以解决线性, 非线性, 整 数规划无法有效求解的复 杂问题;
• 容易找到全局最优解;
• 可以得到一组解;
数是取各阶段效应的连乘积形式,
n
fk vk (sk ,uk ) ik
.
22
(7) 最优解
用 fk* (sk) 表示第 k 子过程指标函数Fk(sk , pk(sk)) 在状态 sk 下的最优值,即:
fk (s k)o p t{ F k(s k,p k(s k))}k 1 ,2 ,L ,n
段”概念;
2. 正确选择状态变量 sk, 满足: 可知性: 正确描述动态过程演变, 可直接或
间接确定状态变量的值;
无后效性: 后面的决策与前面的决策无关;
.
34
3. 确定决策变量 xk以及允许决策集合Xk; 4. 写出状态转移方程 sk+1 = T (sk , xk); 5. 决策变量的取值范围 6. 写出过程指标函数(阶段函数)的递推
.
27
在例题中,求解最短路线的计算公式可以概括
写成:
ff5k((ss5k))0xkmXikn(sk){vk(sk,xk(sk))fk1(sk1)} k4,3,2,1
其中,vk 在这里表示从状态 sk 到由决策 xk
所决定的状态 sk+1 之间的距离。f5(s5)=0 是边
界条件,表示全过程到第四阶段终点结束。
.
31
相应的函数基本方程为 :
ffnk1(s(ks)n1)op1t{vk(sk,xk(sk))• fk1(sk1)}
xkXk
kn,n1,L ,2,1
.
32
动态规划的优缺点
动态规划的优点
• 可以解决线性, 非线性, 整 数规划无法有效求解的复 杂问题;
• 容易找到全局最优解;
• 可以得到一组解;
第三章动态规划算法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 }
不同计算顺序的数量
设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 }
《动态规划》课件

《动态规划》ppt课 件
xx年xx月xx日
• 动态规划概述 • 动态规划的基本概念 • 动态规划的求解方法 • 动态规划的应用实例 • 动态规划的优化技巧 • 动态规划的总结与展望
目录
01
动态规划概述
定义与特点
定义
动态规划是一种通过将原问题分解为 相互重叠的子问题,并存储子问题的 解以避免重复计算的方法。
特点
动态规划适用于具有重叠子问题和最 优子结构的问题,通过将问题分解为 子问题,可以找到最优解。
动态规划的适用范围
最优化问题
01
动态规划适用于解决最优化问题,如最大/最小化问题、决策问
题等。
子问题重叠
02
动态规划适用于子问题重叠的情况,即子问题之间存在共享状
态或参数。
递归关系
03
动态规划适用于具有递归关系的问题,可以通过递归方式求解
机器调度问题
总结词
动态规划可以应用于机器调度问题,以确定最优的调度方案,满足生产需求并降低成本 。
详细描述
机器调度问题是一个经典的优化问题,涉及到如何分配任务到机器上,以最小化成本或 最大化效率。通过动态规划,可以将机器调度问题分解为一系列子问题,如确定每个任 务的调度顺序、分配机器等,并逐个求解子问题的最优解,最终得到整个调度方案的最
VS
详细描述
记忆化搜索法是一种优化技术,通过存储 已解决的子问题的解,避免重复计算,提 高求解效率。这种方法适用于子问题数量 较少且相互独立的情况。
04
动态规划的应用实例
最短路径问题
总结词
通过动态规划解决最短路径问题,可以找到 从起点到终点的最短路径。
详细描述
在图论中,最短路径问题是一个经典的优化 问题,旨在找到从起点到终点之间的一条路 径,使得路径上的所有边的权重之和最小。 动态规划是一种有效的解决方法,通过将问 题分解为子问题并存储子问题的解,避免了 重复计算,提高了求解效率。
xx年xx月xx日
• 动态规划概述 • 动态规划的基本概念 • 动态规划的求解方法 • 动态规划的应用实例 • 动态规划的优化技巧 • 动态规划的总结与展望
目录
01
动态规划概述
定义与特点
定义
动态规划是一种通过将原问题分解为 相互重叠的子问题,并存储子问题的 解以避免重复计算的方法。
特点
动态规划适用于具有重叠子问题和最 优子结构的问题,通过将问题分解为 子问题,可以找到最优解。
动态规划的适用范围
最优化问题
01
动态规划适用于解决最优化问题,如最大/最小化问题、决策问
题等。
子问题重叠
02
动态规划适用于子问题重叠的情况,即子问题之间存在共享状
态或参数。
递归关系
03
动态规划适用于具有递归关系的问题,可以通过递归方式求解
机器调度问题
总结词
动态规划可以应用于机器调度问题,以确定最优的调度方案,满足生产需求并降低成本 。
详细描述
机器调度问题是一个经典的优化问题,涉及到如何分配任务到机器上,以最小化成本或 最大化效率。通过动态规划,可以将机器调度问题分解为一系列子问题,如确定每个任 务的调度顺序、分配机器等,并逐个求解子问题的最优解,最终得到整个调度方案的最
VS
详细描述
记忆化搜索法是一种优化技术,通过存储 已解决的子问题的解,避免重复计算,提 高求解效率。这种方法适用于子问题数量 较少且相互独立的情况。
04
动态规划的应用实例
最短路径问题
总结词
通过动态规划解决最短路径问题,可以找到 从起点到终点的最短路径。
详细描述
在图论中,最短路径问题是一个经典的优化 问题,旨在找到从起点到终点之间的一条路 径,使得路径上的所有边的权重之和最小。 动态规划是一种有效的解决方法,通过将问 题分解为子问题并存储子问题的解,避免了 重复计算,提高了求解效率。
《动态规划课件》课件

应用场景:求解最短路径、背 包问题等
注意事项:避免重复计算子问 题和记忆化搜索
定义:将问题划分为 若干个较小的子问题, 并逐个解决子问题, 最终得到原问题的解
特点:将原问题分解为 更小的子问题,通过求 解子问题的最优解得到 原问题的最优解
应用场景:适用于 具有重叠子问题和 最优子结构特性的 问题
示例:背包问题、 最大子段和问题等
分段算法的代码 实现
分段算法的时间 复杂度分析
避免重复计算:使用备忘录或动态规划表来记录已计算过的子问题 减少子问题的数量:通过合并或减少不必要的子问题来降低计算复杂度 选择合适的递归方式:根据问题的特点选择最优的递归方式 优化递归栈:通过减少递归深度或使用循环代替递归来提高性能
优化算法:动态规划可以优化算法,提高计算效率 避免重复计算:通过记忆化搜索,避免重复计算,提高计算速度
添加标题ቤተ መጻሕፍቲ ባይዱ
添加标题
添加标题
添加标题
动态规划与分治法比较:分治法将 问题分解为子问题,而动态规划将 子问题联系起来
动态规划与回溯法比较:回溯法会 穷举所有可能解,而动态规划可以 避免不必要的搜索
机器学习与深度 学习中的动态规 划
自然语言处理中 的动态规划
计算机视觉中的 动态规划
推荐系统中的动 态规划
最大子段和问题的定义 最大子段和问题的应用场景 最大子段和问题的解决方法 最大子段和问题的实际应用案例
定义:矩阵链乘法问题是一种优化问题,通过动态规划算法来求解
应用场景:在科学计算、机器学习、图像处理等领域都有广泛的应用
算法原理:通过动态规划算法,将矩阵链乘法问题转化为子问题,从而避免重复计算,提高 计算效率
应用场景:背包问题在计算机科学、运筹学、经济学等领域都有广泛的应用,如资源分配、路径规划、时间表安 排等。
第6章_动态规划ppt课件

gg(u1)
这时,机器的年完好率为a,即如果年初完好 机器的数量为u,到年终时完好的机器就为au, 0<a<1。在低负荷下进行生产时,产品的年 产量和投入生产的机器数量u2的关系为
hh(u2)
PPT学习交流
7
这时,机器的年完好率为b,0<b<1 。
假定开始生产时完好的机器数量为s,要求制定 一个五年计划,在每年开始时,决定如何重新分配 完好的机器在两种不同的负荷下生产的数量,使在 五年内产品的总产量达到最高?
PPT学习交流
15
2.在多阶段决策过程中,动态规划方法是既把前一 段和未来各段分开,又把当前效益和未来效益结 合起来考虑的一种最优化方法。因此,每段决策 的选取是从全局来考虑的,与该段的最优选择答 案一般是不同的。
3.在求整个问题的最优策略时,由于初始状态是已 知的,而每段的决策都是该段状态的函数,故最 优策略所经过的各段状态便可逐次变换得到,从 而确定了最优路线。
因f3是x3线性单调下降函数,故得最优解 x3*=0,相应的有f3(s3)=18s3
PPT学习交流
36
K=2时
f2(s2)0 m x 2 s2 [4 a x 2 x6 s2f3(s3) ]0 m x 2 s2(4 a x 2x 6 s2 1s3 8 ) 0 m x 2 s2 4 a x 2x 6 s2 1(5 4 8 s21 3x 0 2) 0 m x 2 s2(2 a5 2 0 x s27 5x 2)
sk1T k(sk,xk(sk))
PPT学习交流
12
PPT学习交流
13
PPT学习交流
14
§3 动态规划的基本方法
一、动态规划方法的基本原理
动态规划方法的基本思想:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同理递推下去,可看到各个阶段的决策不同,线路就 不同。
08.05.2020
.
4
要求在各阶段选取一个恰当的决策
很明显,当某阶段的起点给定时,它直接 影响着后面各阶段的行进路线和整个路线的长 短。
故此问题的要求是:在各个阶段选取一个 恰当的决策,使由这些决策组成的一个决策序 列所决定的一条路线,其总路程最短。如何解 决这个问题呢?
08.05.2020
.
18
动态规划问题的特征
动态规划算法的有效性依赖于问题本身所具 有的两个重要性质:
1、最优子结构:当问题的最优解包含了其子 问题的最优解时,称该问题具有最优子结构性质。
2、重叠子问题:在用递归算法自顶向下解问 题时,每次产生的子问题并不总是新问题,有些 子问题被反复计算多次。动态规划算法正是利用 了这种子问题的重叠性质,对每一个子问题只解 一次,而后将其解保存在一个表格中,在以后尽 可能多地利用这些子问题的解。
计算结果是f(C1)= C1D1+ f(D1)=8 (D1)
同理C2的决策路径计算结果是C2+D2+ E ,
f(C2)=7 。
同理C3的决策路径计C81算结3 果是C3+D2+E,
f(C3)=10。
7
C72 3 5
D1 5
E
7
10
2
D2
08.05.2020
C3 8 .
8
(5)第三次输入结点为B1,B2,而决策输出结 点可能为C1,C2,C3。仿前计算可得Bl,B2的 决策路径为如下情况。 Bl: B1C1 费用 f(B1)=5+8=13,
B2:B2C1 费用 f(B2)= 6+8=14,
13 5 B1
8 7
6
7Leabharlann B2145
C81 3
7
C72 3 5
7
10 C3 8
D1
5
E
2
D2
08.05.2020
.
9
(6)第四次输入结点为A,决策输出结点可能为B1, B2。
同理可得决策路径为A:AB2,费用5+14=19
此时才正式确定每个子问题的结点中,那一个结点将 在最优费用的路径上。
第十章 动态规划
• 用递推代替递归 • 用空间换时间
08.05.2020
.
1
10.1 什么是动态规划
1、最短路径问题 2、数塔问题
08.05.2020
.
2
1 最短距离问题
下图表示城市之间的交通路网,线段 上的数字表示费用,单向通行由A->E。 试用动态规划的最优化原理求出A->E的 最省费用。
3
5
C1
7
B1
7
D1 5
A
5
78 6
7
B2
C2 3 5 7
E
2
5
D2
C3 8
08.05.2020
.
3
• 如图从A到E共分为4个阶段,即第一阶段 从A到B,第二阶段从B到C,第三阶段从C到 D,第四阶段从D到E。
• 除起点A和终点E外,其它各点既是上一阶 段的终点又是下一阶段的起点。
例若在如选第从择二AB阶2到的段B决,的策再第,从一BB阶22就段点是中出第,发一A,为阶对起段于点在B,2我点终们就点决有有策一B之个1,下可的供 B结选2果两择,个的它,终既因点是而集第这合一时(C阶走1,段的C路路2线,线的C有3终两);点个若,选选又择择是,由第一B二是2走阶走至段到C路B21为线, 一的第是始二走点阶到。段B的2。决策,则C2就是第二阶段的终点,同时又 是第三阶段的始点。
08.05.2020
.
14
考虑一下:
从顶点出发时到底向左走还是向右走 应取决于是从左走能取到最大值还是从 右走能取到最大值,只要左右两道路径 上的最大值求出来了才能作出决策。
可见,由下层的子问题可以得到上层 的子问题,所以,可从底层开始,层层 递进,最后得到最大值。
结论:自顶向下的分析,自底向上的计算。
08.05.2020
.
15
10.2 动态规划的基本思想
如果各个子问题不是独立的,不同的子问 题的个数只是多项式量级,如果我们能够 保存已经解决的子问题的答案,而在需要 的时候再找出已求得的答案,这样就可以 避免大量的重复计算。由此而来的基本思 路是,用一个表记录所有已解决的子问题 的答案,不管该问题以后是否被用到,只 要它被计算过,就将其结果填入表中。
08.05.2020
.
11
用暴力的方法,可以吗?
08.05.2020
.
12
试想一下:
这道题如果用枚举法(暴力思想),在 数塔层数稍大的情况下(如31),则 需要列举出的路径条数将是一个非常庞 大的数目(2^30= 1024^3 > 10^9=10亿)。
08.05.2020
.
13
拒绝暴力,倡导和谐~
08.05.2020
.
5
用动态规划法求解
• 决策过程: •
(1)由目标状态E向前推,可以分成四个阶 段,即四个子问题。
DE CE BE AE
(2)策略:每个阶段到E的最省费用为本阶 段的决策路径。
08.05.2020
.
6
(3)D1,D2是第一次输入的结点。他们到 E都只有一种费用:
f(D1)=5
08.05.2020
.
16
动态规划的基本步骤
动态规划算法通常用于求解具有某 种最优性质的问题。在这类问题中,可 能会有许多可行解。每一个解都对应于 一个值,我们希望找到具有最优值(最 大值或最小值)的那个解。设计一个动 态规划算法,通常可以按以下几个步骤 进行:
08.05.2020
.
17
基本步骤
(1)找出最优解的性质,并刻画其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造一个最优解。
其中(1)-(3)步是动态规划算法的基本步骤。 在只需要求出最优值的情形,步骤(4)可以省去。 若需要求出问题的一个最优解,则必须执行步骤 (4)。此时,在步骤(3)中计算最优值时,通常 需记录更多的信息,以便在步骤(4)中,根据所记 录的信息,快速构造出一个最优解。
f(D2)=2
D1
5
E
D2 2
目前无法定下,哪一个点将在全程最优策略的路 径上。第二阶段计算中,5,2都应分别参加计算
08.05.2020
.
7
(4)C1,C2,C3是第二次输入结点,他们到D1, D2各有两种费用。此时应计算C1,C2,C3分别到 E的最少费用。 f(C1) =min{C1D1+ f(D1) ,C1D2+ f(D2)}。
子问题的决策中,只对同一城市(结点)比较优劣。 而同一阶段的城市(结点)的优劣要由下一个阶段去 决定。
19 7 A
5
08.05.2020
13 5 B1
8 7
6
7
B2
14
5
C81 3
7
C72 3 5
7
10 C3. 8
D1
5
E
2
D2
10
2、数塔问题
有形如下图所示的数塔,从顶部出发,在每 一结点可以选择向左走或是向右走,一直走到底 层,要求找出一条路径,使路径上的值最大。