C语言 动态规划PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

08.05.2020
.
11
用暴力的方法,可以吗?
08.05.2020
.
12
试想一下:
这道题如果用枚举法(暴力思想),在 数塔层数稍大的情况下(如31),则 需要列举出的路径条数将是一个非常庞 大的数目(2^30= 1024^3 > 10^9=10亿)。
08.05.2020
.
13
拒绝暴力,倡导和谐~
B2:B2C1 费用 f(B2)= 6+8=14,
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
08.05.2020
.
9
(6)第四次输入结点为A,决策输出结点可能为B1, B2。
同理可得决策路径为A:AB2,费用5+14=19
此时才正式确定每个子问题的结点中,那一个结点将 在最优费用的路径上。
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)}。
08.05.2020
.
16
动态规划的基本步骤
动态规划算法通常用于求解具有某 种最优性质的问题。在这类问题中,可 能会有许多可行解。每一个解都对应于 一个值,我们希望找到具有最优值(最 大值或最小值)的那个解。设计一个动 态规划算法,通常可以按以下几个步骤 进行:
08.05.2020
.
17
基本步骤
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
.
15
10.2 动态规划的基本思想
如果各个子问题不是独立的,不同的子问 题的个数只是多项式量级,如果我们能够 保存已经解决的子问题的答案,而在需要 的时候再找出已求得的答案,这样就可以 避免大量的重复计算。由此而来的基本思 路是,用一个表记录所有已解决的子问题 的答案,不管该问题以后是否被用到,只 要它被计算过,就将其结果填入表中。
08.05.2020
.
18
动态规划问题的特征
动态规划算法的有效性依赖于问题本身所具 有的两个重要性质:
1、最优子结构:当问题的最优解包含了其子 问题的最优解时,称该问题具有最优子结构性质。
2、重叠子问题:在用递归算法自顶向下解问 题时,每次产生的子问题并不总是新问题,有些 子问题被反复计算多次。动态规划算法正是利用 了这种子问题的重叠性质,对每一个子问题只解 一次,而后将其解保存在一个表格中,在以后尽 可能多地利用这些子问题的解。
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就是第二阶段的终点,同时又 是第三阶段的始点。
(1)找出最优解的性质,并刻画其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造一个最优解。
其中(1)-(3)步是动态规划算法的基本步骤。 在只需要求出最优值的情形,步骤(4)可以省去。 若需要求出问题的一个最优解,则必须执行步骤 (4)。此时,在步骤(3)中计算最优值时,通常 需记录更多的信息,以便在步骤(4)中,根据所记 录的信息,快速构造出一个最优解。
计算结果是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,
同理递推下去,可看到各个阶段的决策不同,线路就 不同。
08.05.2020
.
4
要求在各阶段选取一个恰当的决策
很明显,当某阶段的起点给定时,它直接 影响着后面各阶段的行进路线和整个路线的长 短。
故此问题的要求是:在各个阶段选取一个 恰当的决策,使由这些决策组成的一个决策序 列所决定的一条路线,其总路程最短。如何解 决这个问题呢?
第十章 动Байду номын сангаас规划
• 用递推代替递归 • 用空间换时间
08.05.2020
.
1
10.1 什么是动态规划
1、最短路径问题 2、数塔问题
08.05.2020
.
2
1 最短距离问题
下图表示城市之间的交通路网,线段 上的数字表示费用,单向通行由A->E。 试用动态规划的最优化原理求出A->E的 最省费用。
3
子问题的决策中,只对同一城市(结点)比较优劣。 而同一阶段的城市(结点)的优劣要由下一个阶段去 决定。
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、数塔问题
有形如下图所示的数塔,从顶部出发,在每 一结点可以选择向左走或是向右走,一直走到底 层,要求找出一条路径,使路径上的值最大。
08.05.2020
.
14
考虑一下:
从顶点出发时到底向左走还是向右走 应取决于是从左走能取到最大值还是从 右走能取到最大值,只要左右两道路径 上的最大值求出来了才能作出决策。
可见,由下层的子问题可以得到上层 的子问题,所以,可从底层开始,层层 递进,最后得到最大值。
结论:自顶向下的分析,自底向上的计算。
相关文档
最新文档