5算法设计技术4-动态规划算法_7835027
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
吴及 电子工程系
动态规划求解背包问题
这些子问题乊间存在什么关系? 如果������ < ������������ ,那么������������������ ������, ������ = ������������������ ������ − 1, ������ , 否则, ������������������ ������, ������ = ������������������ ������������������ ������ − 1, ������ , ������������ + ������������������ ������ − 1, ������ − ������������ 或者第������ 件物品丌属于原问题的最优解,则前������ 件物品对于重量������ 的最优解一定等于前������ − 1 件物品对于重量������的最优解; 或者第������ 件物品属于原问题的最优解,则前������ 件物品对于重量������的 最优解一定等于前������ − 1 件物品对于重量������ − ������������ 的最优解加上第������
0
5 背包重量
吴及 电子工程系
数据结构 (30230594)
动态规划求解背包问题
物品序号
(1,8) 5
价值
(2,15)4
(3,20)3 (1,10)2 (2,12)1
0 0 0
10 10 0
12 12 12
22 22 12
30 22 12
32 22 12
0
0
0
0
1
0
2
22
0
3
0
4
0
5 背包重量
吴及 电子工程系
0
4
0
5 背包重量
吴及 电子工程系
数据结构 (30230594)
动态规划求解背包问题
物品序号
(1,8)
5
0
10
பைடு நூலகம்
18
25
33
38
(2,15)4
(3,20)3 (1,10)2 (2,12)1
0
0 0 0
10
10 10 0
15
12 12 12
25
22 22 12
30
30 22 12
37
30 22 12
卷积码的最大似然解码 数学模型:网格图上的最优路 径选择 算法:动态规划求解 最优化原理和无后效性质
数据结构 (30230594)
30
吴及 电子工程系
动态规划
动态规划是一种重要的算法设计思想 用于求解多阶段决策过程的优化问题 适于采用动态规划的问题
最优化原理
无后效性 重叠子问题
数据结构 (30230594)
31
吴及 电子工程系
������������ ������������ ≤ ������ ������������ ∈ 0,1 , 1 ≤ ������ ≤ ������
������=1
数据结构 (30230594)
14
吴及 电子工程系
动态规划求解背包问题
定义������������������ ������, ������ 表示使用物品 1, ⋯ ������ 的子集且所允许的最大重 量为������的最优解的值,即: ������ ⊆ 1, ⋯ , ������ ������������������ ������, ������ = max
5
吴及 电子工程系
动态规划的基本概念
阶段 状态 决策
1 2 4 7
5
9
3 6
数据结构 (30230594)
6
8
吴及 电子工程系
动态规划的条件
最优化原理 无后效性
数据结构 (30230594)
7
吴及 电子工程系
动态规划的条件
最优化原理
一个最优化策略具有这样的性质,丌论过去状态和决策如何,对前 面的决策所形成的状态而言,余下的部分决策必须构成最优策略。 把原问题转换成规模更小的子问题时,原问题最优的充要条件是当 且仅当子问题最优。 最优子结构(Optimal substructure) 无后效性
2010-2011春季学期数据结构课程讲义
算法设计技术
吴 及 wuji_ee@ 清华大学电子工程系 2011年12月
内容提要
算法设计技术
蛮力法 分治法
搜索算法
贪心算法 动态规划
数据结构 (30230594)
2
吴及 电子工程系
问题的引出
对于组合优化问题,贪心算法丌能保证结果的最优性 那么如何寻找最优解呢? 蛮力算法
数据结构 (30230594)
4
吴及 电子工程系
动态规划的基本概念
阶段:把问题分成几个相互联系的有顺序的几个环节,这些环节 被称为阶段 状态:某一阶段的出发位置称为状态。通俗的说状态是对问题在 某一时刻的进展情况的数学描述 决策:从某阶段的一个状态演变到下一个阶段某状态的选择
数据结构 (30230594)
������������ ������ ������ 即为从顶点 ������ 到顶点 ������ 的最短路径 0
1
0.45
5
4
长度,这条路径丌经过编号大于的顶点
3
0.50
2
Floyd算法迭代的每一步都完成从当前状
态到下一个状态的决策
数据结构 (30230594)
29
吴及 电子工程系
Viterbi译码
26
吴及 电子工程系
动态规划算法
动态规划的三个基本要素:
阶段、状态、决策 其中最关键的是状态的描述,最难的也是状态的设计
动态规划的两个条件
最优子结构、无后效性
动态规划最适合的解决问题
动态规划用空间换时间,在有大量重叠子问题的时候其优势才能充
分体现出来
数据结构 (30230594)
4 2 1 5 8 6
12
7 9
3
数据结构 (30230594)
吴及 电子工程系
背包问题
给定������个重量为������1 , ������2 ,…, ������������ ,价值为������1 , ������2 ,…, ������������ 的物品和一个 承重量为������的背包,如果选择一些物品放到背包中,求使得背 包中物品价值最大的方案。 背包总重量������ = 5
0
0
0
0
1
0
2
25
0
3
0
4
0
5 背包重量
吴及 电子工程系
数据结构 (30230594)
动态规划求解背包问题
背包问题
背包总重量������ = 5
序号 重量 价值 1 2 12 2 1 10 3 3 20 4 2 15 5 1 8
最优方案:物品2+物品3+物品5,重量5,价值38
数据结构 (30230594)
动态规划-Dynamic Programming
数据结构 (30230594)
3
吴及 电子工程系
动态规划
20世纪50年代初美国数学家R.E.Bellman提出 用于多阶段动态过程的优化问题 在有些问题中,阶段的划分是自然的;但在有些问题中,阶段的
划分来自于合理的设计
动态规划和贪心算法都是思想,而丌是一个确定的结题过程
数据结构 (30230594)
8
吴及 电子工程系
最优化原理
从1->3->5->8->9是1到9的最短路径,则1->3->5->8是1到8的 最短路径,1->3->5是1到5的最短路径;
4 2
1 5 8 6
数据结构 (30230594)
9
7
9
3
吴及 电子工程系
最优化原理
模4最短路径:从1->3->5->8->9是1到9的最短路径,则1->3>4->8是1到8的最短路径,1->2->4是1到4的最短路径;
27
吴及 电子工程系
动态规划
典型例子
求解图的全源最短距离的Floyd算法 解卷积码的Viterbi算法
数据结构 (30230594)
28
吴及 电子工程系
Floyd算法
Floyd算法的迭代公式: ������������ ������ ������ = ������������������ ������������−1 ������ ������ , ������������−1 ������ ������ + ������������−1 ������ ������ ������ = 0,1, ⋯ ������ − 1
1
2
18
3
4
5
吴及 电子工程系
动态规划求解背包问题
物品序号 (1,8) 5
(2,15)4
(3,20)3 (1,10)2 (2,12)1
价值
0
0
0
0
1
0
2
19
0
3
0
4
0
5 背包重量
吴及 电子工程系
数据结构 (30230594)
动态规划求解背包问题
物品序号 (1,8) 5
(2,15)4
(3,20)3 (1,10)2 (2,12)1
数据结构 (30230594)
动态规划求解背包问题
物品序号
(1,8)
价值
0 10 18 25 33 38
5
(2,15)4
(3,20)3 (1,10)2 (2,12)1
0
0 0 0
10
10 10 0
15
12 12 12
25
22 22 12
30
30 22 12
37
32 22 12
0
0
0
0
1
0
2
24
0
3
价值
0
0
12
12
12
12
0
0
0
0
1
0
2
20
0
3
0
4
0
5 背包重量
吴及 电子工程系
数据结构 (30230594)
动态规划求解背包问题
物品序号
(1,8) 5
价值
(2,15)4
(3,20)3 (1,10)2 (2,12)1
0 0
10 0
12 12
22 12
22 12
22 12
0
0
0
0
1
0
2
21
0
3
0
4
件物品;
可以递推求解
数据结构 (30230594)
16
吴及 电子工程系
动态规划求解背包问题
背包问题
背包总重量 ������ = 5
序号 1 2 3 4 5
重量
价值
2
12
1
10
3
20
2
15
1
8
数据结构 (30230594)
17
吴及 电子工程系
动态规划求解背包问题
5
4
3 2 1
0
0
数据结构 (30230594)
������ ������∈������
������������ ������������
������∈������
������������ ≤ ������
对每个������ = 0,1, ⋯ ������, 不每个整数0 ≤ ������ ≤ ������都存在原问题的一个 子问题
数据结构 (30230594)
3 9 1 6 3 9
数据结构 (30230594)
4 9
11 5 9
2
15
7
14
4 9 6
3
6
5
8
10
吴及 电子工程系
动态规划的条件
最优化原理 无后效性
过去的步骤只能通过当前状态影响未来的发展,当前的状态是
历史的总结
数据结构 (30230594)
11
吴及 电子工程系
最优化原理
当前状态为7时,7以后的最短路径不以前所经过的结点无关,如 到7的路径为1,2,5,7或1,3,5,7或1,3,6,7都对以后的 求解无关;
序号
重量 价值
1
2 12
2
1 10
3
3 20
4
2 15
5
1 8
难以寻找到合适的贪心策略以得到最优解
数据结构 (30230594)
13
吴及 电子工程系
背包问题
定义原问题为: ������������������
������=1 ������ ������
������������ ������������
数据结构 (30230594)
动态规划求解背包问题
物品序号
(1,8) 5
价值
(2,15)4
(3,20)3 (1,10)2 (2,12)1
0
0 0 0
10
10 10 0
15
12 12 12
25
22 22 12
30
30 22 12
37
32 22 12
0
0
0
0
1
0
2
23
0
3
0
4
0
5 背包重量
吴及 电子工程系