C语言 动态规划ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
子问题的决策中,只对同一城市(结点)比较优劣。 而同一阶段的城市(结点)的优劣要由下一个阶段去 决定。
19 7 A
5
16.07.2021
13 5 B1
8 7
6
7
B2
14
5
C81 3
7
C72 3 5
7
10 整C理3ppt 8
D1
5
E
2
D2
10
2、数塔问题
有形如下图所示的数塔,从顶部出发,在每 一结点可以选择向左走或是向右走,一直走到底 层,要求找出一条路径,使路径上的值最大。
16.07.2021
整理ppt
19
10.3 最长有序子序列
I
012 3 4 5 6 7 8
Num[I] 1 4 7 2 5 8 3 6 9
16.07.2021
整理ppt
20
子问题的构造
• 子问题——“求以ak(k=1, 2, 3…N)为终 点的最长上升子序列的长度”
• 虽然这个子问题和原问题形式上并不完全 一样,但是只要这N 个子问题都解决了, 那么这N 个子问题的解中,最大的那个就 是整个问题的解。
16.07.2021
整理ppt
24
例如,若X={A,B,C,B,D,B,A}, Y={B,D,C,A,B,A},则
序列{B,C,A}是X和Y的一个公共子序 列,但它不是X和Y的一个最长公共子序列。
序列{B,C,B,A}也是X和Y的一个公 共子序列,它的长度为4,而且它是X和Y的一 个最长公共子序列,因为X和Y没有长度大于4 的公共子序列。
(如3)若X=x{mA≠BynC,B则Dz}k≠Yyn=蕴{B涵D ZC是A XB}和Zy=n-{1B的C最B长} 公共子序 列。
如 X={A B C B } Y={B D C B A} Z={B C B}
由此可见,2个序列的最长公共子序列包含了这2个序列的前缀 的最长公共子序列。因此,最长公共子序列问题具有最优子结 构性质。
3
5
C1
7
B1
7
D1 5
A
5
78 6
7
B2
C2 3 5 7
E
2
5
D2
C3 8
16.07.2021
整理ppt
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就是第二阶段的终点,同时又 是第三阶段的始点。
第十章 动态规划
• 用递推代替递归 • 用空间换时间
16.07.2021
整理ppt
1
10.1 什么是动态规划
1、最短路径问题 2、数塔问题
16.07.2021
整理ppt
2
1 最短距离问题
下图表示城市之间的交通路网,线段 上的数字表示费用,单向通行由A->E。 试用动态规划的最优化原理求出A->E的 最省费用。
AGTGAT- G
- GT - -TAG 这种匹配的函数值是(-3)+5+5+(-3)+(-3)+5 +(-3)+5=8
16.07.2021
整理ppt
30
穷举法
• 对X的所有子序列,检查它是否也是Y的子序 列,从而确定它是否为X和Y的公共子序列。
• X的所有子序列都检查过后即可求出X和Y的 最长公共子序列。X的每个子序列相应于下 标集{1,2,...,m}的一个子集。因此,共有 2m个不同子序列,故穷举搜索法需要指数时 间。
16.07.2021
整理ppt
25Biblioteka 最长公共子序列• 给定2个序列X和Y,当另一序列Z既是X的 子序列又是Y的子序列时,称Z是序列X和Y 的公共子序列。
• 问题:给定2个序列X={x1,x2,…,xm}和 Y={y1,y2,…,yn},找出X和Y的最长公共 子序列。
16.07.2021
整理ppt
26
• 而事实上,最长公共子序列问题具有最优子 结构性质
16.07.2021
整理ppt
31
最长公共子序列的结构
首先引入前缀的概念:
给定一个序列X={x1,x2,…,xm},对i=1,…,m定义X的第i 个前缀为Xi={x1,x2,…,xi} 例如:X={A ,B, C, B,D,A,B}
则X4={A ,B, C, B},X0为空序列
16.07.2021
整理ppt
18
动态规划问题的特征
动态规划算法的有效性依赖于问题本身所具 有的两个重要性质:
1、最优子结构:当问题的最优解包含了其子 问题的最优解时,称该问题具有最优子结构性质。
2、重叠子问题:在用递归算法自顶向下解问 题时,每次产生的子问题并不总是新问题,有些 子问题被反复计算多次。动态规划算法正是利用 了这种子问题的重叠性质,对每一个子问题只解 一次,而后将其解保存在一个表格中,在以后尽 可能多地利用这些子问题的解。
• 生物学家们假设类似的基因表示类似的功能。 确定与待研究基因最相近的一个已知基因对 生物试验非常必要。
16.07.2021
整理ppt
29
• 那么如何确定两个基因序列的相似性呢,这主要是 通过相似性函数来判断的。
• 比如已知两个序列AGTGATG和GTTAG,他们有多 相似?一个判断的方法是在两个序列中分别插入若 干空格使得两序列的长度相等,
16.07.2021
整理ppt
11
用暴力的方法,可以吗?
16.07.2021
整理ppt
12
试想一下:
这道题如果用枚举法(暴力思想),在 数塔层数稍大的情况下(如31),则 需要列举出的路径条数将是一个非常庞 大的数目(2^30= 1024^3 > 10^9=10亿)。
16.07.2021
整理ppt
16.07.2021
整理ppt
28
• 生物学家对鉴别人类基因和确定他们的功能 很感兴趣。因为这对诊断人类疾病和开发新 药很有用。
• 一旦一段基因被确定后,接下来的工作便是 确定它的功能,这个工作一般是通过搜索基 因数据库来进行的。数据库中存储了很多基 因序列及其相应的功能,将返回与新基因序 列功能相似的已知序列。
16.07.2021
整理ppt
5
用动态规划法求解
• 决策过程: •
(1)由目标状态E向前推,可以分成四个阶 段,即四个子问题。
DE CE BE AE
(2)策略:每个阶段到E的最省费用为本阶 段的决策路径。
16.07.2021
整理ppt
6
(3)D1,D2是第一次输入的结点。他们到 E都只有一种费用:
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
16.07.2021
整理ppt
9
(6)第四次输入结点为A,决策输出结点可能为B1, B2。
同理可得决策路径为A:AB2,费用5+14=19
此时才正式确定每个子问题的结点中,那一个结点将 在最优费用的路径上。
17
基本步骤
(1)找出最优解的性质,并刻画其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造一个最优解。
其中(1)-(3)步是动态规划算法的基本步骤。 在只需要求出最优值的情形,步骤(4)可以省去。 若需要求出问题的一个最优解,则必须执行步骤 (4)。此时,在步骤(3)中计算最优值时,通常 需记录更多的信息,以便在步骤(4)中,根据所记 录的信息,快速构造出一个最优解。
16.07.2021
整理ppt
16
动态规划的基本步骤
动态规划算法通常用于求解具有某 种最优性质的问题。在这类问题中,可 能会有许多可行解。每一个解都对应于 一个值,我们希望找到具有最优值(最 大值或最小值)的那个解。设计一个动 态规划算法,通常可以按以下几个步骤 进行:
16.07.2021
整理ppt
典型应用
• 计算两个文本的相似程度 • 生物学上的基因比较
16.07.2021
整理ppt
27
人类基因组计划的研究成果
• 一个细胞核内的23个染色体含31亿个核苷 酸(只有A、G、T、C四种);
• 基因数在3万-3.5万,每个基因有几千个核 苷酸;
• 人与人之间有99.99%的基因序列是相同 的。
13
拒绝暴力,倡导和谐~
16.07.2021
整理ppt
14
考虑一下:
从顶点出发时到底向左走还是向右走 应取决于是从左走能取到最大值还是从 右走能取到最大值,只要左右两道路径 上的最大值求出来了才能作出决策。
可见,由下层的子问题可以得到上层 的子问题,所以,可从底层开始,层层 递进,最后得到最大值。
16.07.2021
整理ppt
33
子问题的递归结构
• 由以上三个性质可知,要X={x1,x2,…,xm}和 Y={y1,y2,…,yn}的最长公共子序列,可能要检 查如下子问题:
• 若xm=yn时,我们就要找出Xm-1和Yn-1的LCS,将 xm=yn拼接到这个LCS后,就得到 Xm和Yn的 LCS
• 该子问题可以递推求解
16.07.2021
整理ppt
21
• 假定MaxLen (k)表示以ak 做为“终点” 的最长上升子序列的长度,那么:
• MaxLen (1) = 1
• MaxLen (k) = Max { MaxLen (i):1<i < k 且 ai < ak 且 k≠1 } + 1
16.07.2021
• 若xm≠yn时,我们需要解决两个子问题: 找出 Xm-1和Yn的 LCS,和 Xm和Yn-1 的LCS,取两
者中较长的作为Xm和Yn的 LCS}
同理递推下去,可看到各个阶段的决策不同,线路就 不同。
16.07.2021
整理ppt
4
要求在各阶段选取一个恰当的决策
很明显,当某阶段的起点给定时,它直接 影响着后面各阶段的行进路线和整个路线的长 短。
故此问题的要求是:在各个阶段选取一个 恰当的决策,使由这些决策组成的一个决策序 列所决定的一条路线,其总路程最短。如何解 决这个问题呢?
整理ppt
22
实例:
I 0 12345 6 7 8
9
Num[I] 1 4 7 2 5 8 3 6 9
2
F[I] 1 2 3 2 3 4 3 4 5 2
所求最大值是F[n]吗?
16.07.2021
整理ppt
23
10.4 最长公共子序列
•一个给定序列的子序列是在该序列中删去 若干元素后得到的序列。
•给定两个序列X和Y,当另一序列Z既是X 的子序列又是Y的子序列时,称Z是序列X和 Y的公共子序列。
计算结果是f(C1)= C1D1+ f(D1)=8 (D1)
同理C2的决策路径计算结果是C2+D2+ E ,
f(C2)=7 。
同理C3的决策路径C计81算结3 果是C3+D2+E,
f(C3)=10。
7
C72 3 5
D1 5
E
7
10
2
D2
16.07.2021
C3
8 整理ppt
8
(5)第三次输入结点为B1,B2,而决策输出结 点可能为C1,C2,C3。仿前计算可得Bl,B2的 决策路径为如下情况。 Bl: B1C1 费用 f(B1)=5+8=13,
16.07.2021
整理ppt
32
最长公共子序列的结构
设序列X={x1,x2,…,xm}和Y={y1,y2,…,yn}的最长公共子 序列为Z={z1,z2,…,zk} ,则 (1)若xm=yn,则zk=xm=yn,且zk-1是xm-1和yn-1的最长公 共子序列。
(2)若如xXm=≠{yAn,B C则Bzk}≠xYm=蕴{B涵DZC是AxBm}-1和Z=Y{B的C最B}长公共子序 列。
结论:自顶向下的分析,自底向上的计算。
16.07.2021
整理ppt
15
10.2 动态规划的基本思想
如果各个子问题不是独立的,不同的子问 题的个数只是多项式量级,如果我们能够 保存已经解决的子问题的答案,而在需要 的时候再找出已求得的答案,这样就可以 避免大量的重复计算。由此而来的基本思 路是,用一个表记录所有已解决的子问题 的答案,不管该问题以后是否被用到,只 要它被计算过,就将其结果填入表中。
f(D1)=5
f(D2)=2
D1
5
E
D2 2
目前无法定下,哪一个点将在全程最优策略的路 径上。第二阶段计算中,5,2都应分别参加计算
16.07.2021
整理ppt
7
(4)C1,C2,C3是第二次输入结点,他们到D1, D2各有两种费用。此时应计算C1,C2,C3分别到 E的最少费用。 f(C1) =min{C1D1+ f(D1) ,C1D2+ f(D2)}。
相关文档
最新文档