第四章 动态规划-1

合集下载

《动态规划》课件

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

《动态规划课件》课件

《动态规划课件》课件

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

运筹学教材课件(第四章动态规划)

运筹学教材课件(第四章动态规划)

最优解的存在性
对于多阶段决策问题,如果每个 阶段的决策空间是有限的,则存 在最优解。
最优解的唯一性
对于某些多阶段决策问题,可能 存在多个最优解。在这种情况下, 我们需要进一步分析问题的性质 和约束条件,以确定最优解的个 数和性质。
最优解的稳定性
在某些情况下,最优解可能受到 参数变化的影响。我们需要分析 最优解的稳定性,以确保最优解 在参数变化时仍然保持最优。
VS
详细描述
排序问题可以分为多种类型,如冒泡排序 、快速排序、归并排序等。动态规划可以 通过将问题分解为子问题,逐一求解最优 解,最终得到全局最优解。在排序问题中 ,动态规划可以应用于求解最小化总成本 、最大化总效益等问题。
04
动态规划的求解方法
逆推法
逆推法
从问题的目标状态出发,逆向推算出达到目标状态的 最优决策,直到达到初始状态为止。
案例二:投资组合优化问题
要点一
总结词
要点二
详细描述
投资组合优化问题是动态规划在金融领域的重要应用,通 过合理配置资产,降低投资风险并提高投资收益。
投资组合优化问题需要考虑市场走势、资产特性、风险偏 好等多种因素,通过动态规划的方法,可以确定最优的投 资组合,使得投资者在风险可控的前提下,实现收益最大 化。
详细描述
在背包问题中,给定一组物品,每个物品都有一定的重量和价值,要求在不超过背包容量的限制下, 选择总价值最大的物品组合。通过动态规划的方法,可以将背包问题分解为一系列子问题,逐一求解 最优解。
排序问题
总结词
排序问题是动态规划应用的另一个重要 领域,主要涉及到将一组元素按照一定 的顺序排列,以达到最优的目标。
本最小化和效率最大化。
感谢您的观看

动态规划-1-1

动态规划-1-1

例1 FIBONACCI数列
int f(int n) { if ( (n==1) || (n==2) ) return 1; return f(n-1) + f(n-2); }
例1 FIBONACCI数列

计算过程中存在大量的重复计算。为了消除冗余,可以从 初始条件出发,从i, i+1, ……顺序递推计算,并且一边计 算,一边记录计算出来的中间结果,以便在此后的计算中 直接引用。
例3 最长上升子序列(LIS)




证明:用反证法。 假设F(i)是我们找到的前i个数中最大上升序列的长度,且 满足F(i) = F(j) + 1,而f(j)不是前i-1个数中满足( j<i, Aj<Ai ) 的最长上升子序列。换句话说,问题的最优解不包括子问 题的最优解。 那么,既然f(j)不是最长的,就一定存在一个元素Ak(k<i, Ak<Ai),满足F(k) > F(j)。这样,用F(k)去替换F(j)就能得到 一个更长的F’(i)。这就与F(i)是最长上升子序列矛盾。因此, F(j)必须是前i-1个数中满足( j<i, Aj<Ai )的最长上升子序列。 这样我们就证明了,在最长上升子序列问题中,具有最优 子结构性质。因此可以用动态规划求解。
int MaxSum(int i, int j) { int s1, s2; if (i==n) return A[n][j]; s1 = MaxSum(i+1,j); s2 = MaxSum(i+1,j+1); if (s1 > s2) return s1 + A[i][j]; else return s2 + A[i][j]; }

动态规划-1

动态规划-1
A1 ( 3, 1) = min{A 0( 3 ,1) , A 0( 3 ,1) +A 0( 1 ,1) }= 3
A1 ( 3, 2) = min{A 0( 3 ,2) , A 0( 3, 1) +A 0( 1 ,3) }= 3+4=7
Pr()是推导出最小成本路径的子函数:
pr() { int link; link=1; printf("1 ");
都是优化的,但最后结果不一定是最优的,则不能使用动 态规划方法。
优化问题给出约束条件和目标函数。所谓优化就是使
目标函数在给定的约束条件下达到最大或最小值。用动态 规划求解问题的步骤是:
1.将问题分解成若平个子问题,即将整个问题的最优 解与子问题的局部最优解用递推的等式联系起来。 2.找到边界条件。 3.将边界条件代入递推等式,逐步求得最优解。
main() { int b,z,e,f,k,m;
for (i=1;i<=12;i++) c[i]=0; v[1]=1;v[2]=4;v[3]=3;v[4]=3;v[5]=1;z=12;b=4; do { for (k=v[b];k>=1;k--) { e=z-k; m=99;
for (j=1;j<=v[b+1];j++) { f=z-1+j; if (g[e][f]==0) continue; if (g[e][f]+c[f]<m) {m=g[e][f]+c[f]; d[e]=f; } } c[e]=m; printf("e=%d c[e]=%d\n",e,c[e]);
printf("-%2d ",link); } printf("\n"); }

《动态规划》课件

《动态规划》课件
特点
动态规划具有最优子结构和重叠子问题的特点,能够通过保存已解决的子问题来避免重复计 算。
应用场景
动态规划广泛应用于路线规划、资源分配、序列匹配等问题,能够有效地解决复杂的优化和 决策问题。
动态规划的优缺点
1 优点
动态规划能够提供最优的解决方案,同时能够高效地解决问题,避免重复计算。
2 缺点
使用动态规划解决问题需要设计状态转移方程,对于复杂问题可能需要较高的思维和计 算复杂度。
《动态规划》PPT课件
欢迎来到《动态规划》PPT课件! 本课程将深入探讨动态规划的应用和技巧, 帮助你理解这一强大的问题求解方法。
什么是动态规划
动态规划是一种通过将问题拆分为更小的子问题,并根据子问题的解来求解 原问题的方法。它可以应用于许多领域,包括优化、组合数学和图论。动态规划的特点 Nhomakorabea应用场景
参考资料
• 经典教材 • 学术论文 • 网络资源
确定问题的初始状态和结束条件,作为动态规划的边界。
4
确定优化方向
选择最优的状态转移路径,以达到问题的最优解。
经典问题解析
斐波那契数列
通过动态规划求解斐波那契数列,可以有效 地避免重复计算,提高计算效率。
最长公共子序列
使用动态规划求解最长公共子序列,可以在 时间复杂度为O(n*m)的情况下找到最长公共 子序列。
最优子结构
定义
最优子结构表示一个问题的最优解可以通过子 问题的最优解来构建。
举例
在路径规划问题中,通过求解子问题的最短路 径,可以获得整个路径规划的最短路径。
重叠子问题
定义
重叠子问题表示一个问题的子问题会被重复计 算多次。
举例
在斐波那契数列中,计算每个数字需要依赖于 前两个数字,导致重复计算了相同的子问题。

动态规划(1)解析

动态规划(1)解析

例3(生产与存储问题)某工厂生产并销售某种产品。
已知今后四个月市场需求预测及每月生产j个单位
○1北0 京84
○8 ○9
河北
5 8 ○5 6 9○6 6 1○7
山西
10 9
○2
7
6 7
○3
8 3○4
2 4 ○1
3 甘肃
陕西
3、决策:当一个阶段的状态确定后,可以作出各种选
允许决 择从而演变到下一阶段的某个状态,这种选 策集合 择手段称为决策
决策变量 描述决策的变量 ,简称为决策
uk
sk
第k阶段处
2 4 ○1
3 甘肃
8 3○4
陕西
s4 第4阶段的状态变量 s4=8 第4阶段的状态○8
S3 ={s3}={5,6,7} S5 ={10}
注:n个阶段的决策过程有个n+1状态变量 sn+1,表示sn演变的结果
例3(生产与存储问题)某工厂生产并销售某种 产品。已知今四个月市场需求预测如下表,又 每月生产j个单位产品的费用为

状态s
时的决策
k


U k sk 决策变量uk (sk )允许取值的范围
○北10 京84
○8 ○9
河北
5 8 ○5 6 9○6 6 1○7
山西
10 9
○2
7
6 7
○3
8 3○4
2 4 ○1
3 甘肃
陕西
u2 3 第2阶段当状态为3时的决策变量
可取值为:5,6,7
u2 3 7
决策 3 7
U 2 3 ={5,6,7}
例4(投资决策问题)某公司现有资金Q万 元,在今后5年内决定给A、B、C、D四 个项目投资,这些项目的投资期限、回 报率均不相同,问应如何确定这些项目 每年的投资额,使到第5年末拥有资金的 本利总额最大。

第四章:动态规划

第四章:动态规划

D3(S3)={X3(C1),X3(C2),X3(C3)}={D1,D2;D1,D2,D3; D1,D2,D3}={D1,D2,D3}=S4,
D4(S4)={X4(D1),X4(D2),X4(D3)}={E1,E2;E1,E2;E1,E2}={E1,E2}=S5,
D5(S5)={X5(E1),X5(E2)}={F;F}={F}。
“动态”一词强调决策过程及其解决的问题具有时间上的顺序特性。
精品课件
2
4.2 动态规划的基本概念
动态规划(dynamic programming,简称:DP)是运筹
学的一个分支,是求解多阶段决策问题的最优化方法。20世纪50年 代初,美国数学家R. E. Bellman等人在研究多阶段决策过程 (multi-step decision process)的优化问题时,提出了著名的最 优性原理(principle of optimality),即把多阶段决策过程转化 为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的 新方法 — 动态规划,并于1957年出版了他的名著《Dynamic Programming》。
动态规划问世以来,在经济管理、生产调度、工程技术和最
优控制等方面得到了广泛的应用。例如:最短路线、库存管理、资
源分配、设备更新、排序、装载等问题,用动态规划方法比用其它
方法求解更为方便。
精品课件
3
虽然动态规划主要用于求解以时间来划分阶段的动态过程优化问题,但 是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进 时间因素,把它视为多阶段的决策过程,也可以用动态规划方法方便地求解。
3. 决策(decision)Xn:从一个阶段某状态演变到下一个阶段某状态的选择,记为Xn(S)。---阶段的终点

第4章 动态规划1 引例和基本概念-资料

第4章 动态规划1 引例和基本概念-资料

例 5.1.3 生产和存储控制问题
某工厂生产某种季节性商品,需要作下一 年度的生产计划,假定这种商品的生产周期需 要两个月,全年共有6个生产周期,需要作出 各个周期中的生产计划。
设已知各周期对该商品的需要量如下表所示:
周期 1 2 3 4 5 6 需求量 5 5 10 30 50 8
假设这个工厂根据需要可以日夜两班生产或只是 日班生产,当开足日班时,每一个生产周期能生产商 品15个单位,每生产一个单位商品的成本为100元。当 开足夜班时,每一生产周期能生产的商品也是15个, 但是由于增加了辅助性生产设备和生产辅助费用,每 生产一单位商品的成本为120元。由于生产能力的限制, 可以在需求淡季多生产一些商品储存起来以备需求旺 季使用,但存储商品是需要存储费用的,假设每单位 商品存储一周期需要16元,问应该如何作生产和存储 计划,才能使总的生产和存储费用最小?
6.策略:从初始阶段到最终阶段,每一阶段 的决策所形成的序列
P 1 ,n ( s 1 ) x 1 ( s 1 ) ,x 2 ( s 2 ) , ,x n ( s n )
生产量 x7
7 月底库存量:
生产
s8=0
系统
决策准则: 生产成本 c7x7 最小
按月分7个阶段,8个状态
一般多阶段决策问题的结构
决策 X1
决策 X2
S1
阶段
S2
阶段
S3
1
2
指标值 r1(S1, X1)
指标值 r2(S2, X2)
决策 Xn
Sn
阶段 Sn+1
n
指标值 rn(Sn, Xn)
二、基本概念
第4章 动态规划
(Dynamic Programming)

运筹学第四章动态规划

运筹学第四章动态规划
B2
7
7
5
8
4
3
B1
4
C1
8
C4
4
D1
3
5 E1
4
6
D2 2
F
3
1
3 E2
D3
解:(逆序解法)
(1)从k=5开始,到终点的路长
f 5 ( E1 ) 4, f 5 ( E2 ) 3
(2)k=4, 状态有3个D1,D2,D3,到终点的最短路长
d ( D1 , E1 ) f5 ( E1 )
资数额才能使总收益最大?
解:求x1,x2,x3,使
max z 4 x1 9 x2 2 x
2
3
x1 x2 x3 10
s.t.
xi 0 (i 1,2,3)
本例可转化为3阶段的决策问题。
4.2 动态规划的基本概念和基本原理
一、动态规划的基本概念
(1)阶段:将问题按时间或空间特征分解成若干相互联系

∗2 (1 ) = 1
(1 , 2 ) + 1 (1 )
3+4
2 (2 ) = min
= min
=7
(2 , 2 ) + 1 (2 )

8+5
∗2 (2 ) = 1
(1 , 3 ) + 1 (1 )
6+4
2 (3 ) = min
= min
= 10
uk

f 0 ( s1 ) 0
顺序解法与逆序解法在本质上没有区别。
当问题给定了一个初始状态和一个终止状态时
,两种方法都可以用。
4.3 动态规划模型的建立与求解
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

– 层数用整型变量n存储; – 数塔中的数据用二维数组data[ ][ ]存储,下三角阵。 动态规划过程存储 必须用二维数组d[ ][ ]存储各阶段的决策结果。二维数 组d的存储内容如下: d[n][j]=data[n][j],其中j=1,2,……,n; d[i][j]=max(d[i+1][j],d[i+1][j+1])+data[i][j],其中i=n1,n-2,……1,j=1,2,……,i; 最后d[1][1]存储的就是问题的最大值。 可以通过分析d,得到路径。
11
– a[50][50][2]代替数组d, – a[50][50][3]记录解路径。 for (i=n-1 ; i>=1;i--) for (j=1 ;j>= i ;j++) if (a[i+1][j][2]>a[i+1][j+1][2]) { a[i][j][2]=a[i][j][2]+a[i+1][j][2]; a[i][j][3]=0;} else { a[i][j][2]=a[i][j][2]+a[i+1][j+1][2]; a[i][j][3]=1;} print('max=’,a[1][1][2]);
4.3 动态规划的最优决策原理
• 问题的给出: 对于具有n个输入的最优解问题,它们的活动过程往 往划分为若干个阶段,每一阶段的决策依赖于前一阶段的 状态,由决策所采取的动作使状态发生转移,称为下一阶 段的决策依据。 S0是初始状态,依据此状态做出决策P1,按照P1所采 取的动作,使得状态转换为S1,经过一系列的决策和转移, 到达最终状态Sn 。于是,一个决策序列就在不断变化的状 态中产生。 S0
7
动态规划的手工计算(顺序)
阶段1 阶段2 阶段3 阶段4 阶段5 (52) 19 (33) 2 (56) 7 (31) 10 (21) 12 (30) 6 (49) 18 (59) 10 9 (24) 15 (32) 8 (41) 9 (45) 4 (37) 5 (53) 16 决策 决策 决策 决策
5
6
1
动态规划的手工计算(逆序)
阶段5 阶段4 阶段3 阶段2 阶段1 19 (21) 2 7 (38) 10 (50) 12 (34) 6 (28) 18 10 (59) 9 (49) 15 (29) 8 (19) 9 4 (21) 5
取第i行第j个 数,一般有 两种方案。 决策 决策 决策 决策 16
17
18
3
适合解决的问题的性质
动态规划算法的问题及决策应该具有两个性质:最优化 原理、无后向性。 – 1) 最优化原理(或称为最佳原则、最优子结构); – 2) 无后向性(无后效性):某阶段状态一旦确定以后, 就不受这个状态以后决策的影响。即某状态以后的过 程不会影响以前的状态,只与当前状态有关。 能够体现动态规划优点的性质: 子问题重叠性质;
8
59
动态规划的手工计算
顺序与逆序解法本质上无区别; 一般当初始状态唯一给定时可用逆序解法; 如需比较到达不同终点状态的各个路径及最大结 果时,使用顺序法比较简便; 如需知道塔中每一点到最下层的最大值和路径时, 使用逆序法比较简便。
动态规划的算法实现
原始信息存储
逆序法
19
50 49 38 21 28 7 10 34 19 4 29 21 16
12
2
4.2 动态规划的思想和概念
动态规划的基本思想 – 动态规划方法的基本思想是,把求解的问题分成许多 阶段或多个子问题,然后按顺序求解各子问题。最后 一个子问题就是初始问题的解。

动态决策问题的特点: 系统所处的状态和时刻是进行决策的重要因素; 即在系统发展的不同时刻(或阶段)根据系统 所处的状态,不断地做出决策; 找到不同时刻的最优决策以及整个过程的最优策略。 多阶段决策问题: 在多阶段决策过程中,系统的动态过程可以按照时间 进程分为状态相互联系而又相互区别的各个阶段; 每个阶段都要进行决策,目的是使整个过程的决策 达到最优效果。
12 15 10 2 18 19
3
6
9->12->10->18->10
7 10
贪心算法
贪心策略?
是否满足贪婪选择性质? 是否满足最优子结构性质?
19 10 2 18 7 10 9 12 15 6 9 4 8 5 16
枚 举
最保险的思路,列举出所有可能的 路径再比较,得出和最大的路径。 重复工作:循环、递归。 如何循环? 递归如何? 递归边界条件; 使问题向边界条件转化的规则(递归定义)。
9
10
动态规划的算法实现
数组data 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16
数组d 59 50 49 38 34 29 21 28 19 21 19 7 10 4 16
动态规划的算法实现
• 为了设计简洁的算法,可以用三维数组a[50][50][3]存储以 上确定的三个数组的信息。

适合解决的问题的性质-数塔问题说明
最优化原理(最优子结构)
– 9->12->10->18->10
– 显然12->10->18->10也是12到最后一层的最大和…… 无后效性 如,计算到12的最大和只要考虑到10的最大和与到6的 最大和哪个更大,而不要考虑到10的最大和或者到6的 最大和具体是哪几个数构成的。
问题分析 9 口算结果? 8 9 4 5 16
4
业生产及军事等部门中都有广泛的应用, 并且取 得了显著的效果。 在企业管理方面, 动态规划可以用来解决最优途 径问题、资源分配问题、生产调度问题、库存 问题、装载问题、排序问题、设备更新问题, 等 等, 所以它是现代企业管理中的一种重要决策方 法。
26
• 依次类推,在状态集合S1上做出的决策值集合P2 , 产生了状态S2集合。 • 最后,对状态Sn-1 ={Sn-1,1, Sn-1,2,……, Sn-1,rn-1}, • Pn ={pn,11,……, pn,1k1, pn,21,……, pn,2k2 ,……, pn,rn-11,……, pn, rn-1kn-1}是可能的决策值集合,其中决策值集合 {pn,t1,……, pn,tii }是依据状态Sn-1,t所做出的可能的决 策。
– a[50][50][1]代替数组data,
• 输出data[1][1]“9”; • b=d[1][1]-data[1][1]=59-9=50 b与d[2][1],d[2][2] 比较b与 d[2][1]相等,输出data[2][1]“12”; • b=d[2][1]-data[2][1]=50-12=38 b与d[3][1],d[3][2] 比较b与 d[3][1]相等,输出data[3][1]“10”; • b=a[3][1]-data[3][1]=38-10=28 b与d[4][1],d[4][2] 比较b与 d[4][2]相等,输出data[4][2]“18”; • b=d[4][2]-data[4][2]=28-18=10 b与d[5][2],d[5][3] 比较b与 d[5][3]相等,输出data[5][3]“10” 。
• 动态规划算法与分治法类似,其基本思想也是将 待求解问题分解成若干个子问题,先求解子问题, 然后从这些子问题的解得到原问题的解。 • 与贪心法不同的是,动态规划分解得到的子问题, 往往是相互不独立的。
21
22
• 贪心法在求解过程中,每一步仅对当前状态下进 行局部的选择,这种选择依赖于过去所做的选择, 而不考虑以后要做的选择。在很多情况下可以得 到全局最优解,这主要取决于当前所做的选择是 正确的。 • 动态规划法对问题进行全面的规划处理,可以弥 补贪心法的不足。
23
P1S1Biblioteka P2S2Sn-1
Pn
Sn
24
4
• 由于每一阶段的决策,仅与前一阶段所产 生的状态有关,而与如何达到这种状态的 方式无关,因此,可以把每一阶段作为一 个子问题来处理。 • 决策过程的每一阶段,都可能有多种决策 可以选取,其中只有一个决策是对全局最 优的。
25
• 为了说明问题,假定对一种状态,可以做出多种 决策,而每一种决策可以产生一个新的状态。 对于初始状态S0, P1 ={p1,1, p1,2,……, p1,r1}是可能 的决策值集合,由它们所产生的状态S1 ={S1,1, S1,2,……, S1,r1},其中是S1,k对应于决策p1,k所产生的 状态。但此时尚无法判断哪一个决策是最优的, 于是,把这些决策值集合作为这一阶段的子问题 的解保存起来。
动态规划用空间换取时间,在有大量重叠子问题的时 候其优势才能充分体现出来。
19
20
设计动态规划算法的基本步骤
设计一个标准的动态规划算法的步骤: – 1) 划分阶段; – 2) 选择状态; – 3) 确定决策并写出状态转移方程。 实际应用当中的简化步骤: 1) 分析最优解的性质,并刻划其结构特征。 2) 递推地定义最优值。 3) 以自底向上的方式或自顶向下的记忆化方法(备忘录法) 计算出最优值。 4) 根据计算最优值时得到的信息,构造问题的最优解。
13 14
由于动态规划的问题有重叠子问题的特点,为了减少重 复计算,对每一个子问题只解一次,将其不同阶段的不 同状态保存在一个二维数组中。
动态规划=贪婪策略+递推(降阶)+存储递推结果
动态规划的手工计算(逆序)
阶段5 阶段4 阶段3 阶段2 阶段1 19 (21) 2 7 (38) 10 (50) 12 (34) 6 (28) 18 10 (59) 9 (49) 15 (29) 8 (19) 9 4
主要概念
阶段:每行就是一个阶段; 状态:d[i][j],即取第i行,第j个数能够达到的最大值; 决策:取第i行第j个数,则可以有两种方案:取第i-1行第 j-1个数或取第i-1行第j个数后再取第i行第j个数; 状态转移方程: d[i][j] = max (d[i+1][j],d[i+1][j+1]) + data[i][j]; 表示取第i行第j个数所能达到的最大和;
相关文档
最新文档