ch05 - 动态规划course.sdu.edu.cn/g2s/ewebeditor/uploadfile/...4 动态规划研究的问题...
TRANSCRIPT
![Page 1: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/1.jpg)
1
第 5章 动态规划
![Page 2: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/2.jpg)
2
第 5章的主要内容
多阶段决策和最优化原理
离散变量的动态规划
阶段数固定(定期)的动态规划
阶段数不固定(不定期)的动态规划
连续变量的动态规划
![Page 3: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/3.jpg)
3
5.1/5.2 多阶段决策和最优化原理
![Page 4: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/4.jpg)
4
动态规划研究的问题
动态规划起源于 1950年代,创始人为 R. Bellman。
动态规划所研究的对象是多阶段决策问题。
这样的问题可以转化为一系列相互联系的单阶段优
化问题。 在每个阶段都需要作出决策。
每个阶段的决策确定以后,就得到一个决策序列,
称为策略。
多阶段决策问题就是求一个策略,使各阶段的总体
![Page 5: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/5.jpg)
5
目标达到最优(如最小化费用,或最大化收益)。
相对于线性规划一次性地对一个问题求出整体最优解,
多阶段决策问题的这种解决办法(一个阶段一个阶段
地,而不是一次性地)称为动态规划(Dynamic
Programming)。而原来的线性规划方法被称为静态规
划。
问题举例一:最短路问题
如图,求从 a 到 g 的最短路。
![Page 6: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/6.jpg)
由于这
问题是
这是一个
是一个多
个多阶段图
阶段决策
6
图(分层
策(优化
层图),该
化)问题。
图上的最
最短路
![Page 7: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/7.jpg)
7
如何求解?
由于这是一个多阶段图,从 a到 g的任何一条路径的
边数都是 6。
从 a 到 g,必然要经过 a的下一个阶段中的顶点 b1或
b2。因此,从 a 到 g 的最短路就是从 a 到 b1,然后再
从 b1走到 g,以及从 a到 b2,再从 b2走到 g,两种走
法中最短的一个。
于是,定义 fk(u, g)为从当前顶点 u开始经过 k 条边到
![Page 8: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/8.jpg)
8
达 g 的最短路长度。则有:
1,,
2,,,min, 1
kgud
kgvfvulguf k
uNvk 。
原问题即是求 fn(a, g)(n = 6)。
上述过程实际上是动态规划中“后向优化”的方法。
![Page 9: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/9.jpg)
逆逆向求解解递推方方程(标号
9
号法)
![Page 10: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/10.jpg)
10
动态规划表格
行标 i:从目标顶点g开始,倒数第 i层(即,计算 fi(u))。
p1, p2, p3, p4:倒数第 i层的自上而下的各个顶点(最
多 4 个)。
p1 p2 p3 p4 p1 p2 p3 p4 1 4 3 1 1 1 2 7 5 9 2 1 2 2 3 7 6 8 3 2 2 2 4 13 10 9 12 4 1 1 2 3
![Page 11: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/11.jpg)
11
5 13 16 5 2 3 6 18 6 1
最短路为:a b1 c2 d1 e2 f2 g。
递归如何?循环如何?
递归程序
f(i, u, g)
1 if i = 1 then return d(u, g),
2 else return min v N(u) {d(u, v) + f(i 1, v, g)}。
![Page 12: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/12.jpg)
12
循环程序
f(u, g)
1 p (a, b1, c1, d1, e1, d1, f1, g)。
2 for b b1 到 b2 do
3 for c c1 到 c4 do
4 for d d1 到 d3 do
5 for e e1 到 e3 do
6 for f f1 到 f2 do
7 q (a, b, c, d, e, f, g)。
![Page 13: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/13.jpg)
13
8 if q的长度 < p的长度 then
p q。
9 endfor /* f */
10 endfor /* e */
11 endfor /* d */
12 endfor /* c */
13 endfor /* b */
14 return p。
![Page 14: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/14.jpg)
14
问题举例二:资源分配问题
设有数量为 x 的某种资源,将它投入两种生产方式
A和 B中(或称为投给部门 A和部门 B)。
若投给部门 A 的数量为 z,则可获收益 g(z),回收
az,其中 a(0 a 1)为部门 A的回收率。类似地,
若投给部门 B的数量为 z,则可获收益 h(z),回收 bz,
其中 b(0 b 1)为部门 B的回收率。
连续投放 n 个阶段,问每个阶段如何分配资源才能
![Page 15: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/15.jpg)
15
使总收入最大?
再描述一遍
设第 k 个阶段的资源总数为 xk,投给部门 A 的资源
数量为 yk。则投给部门 B的数量为 xk yk。于是可得
到收入 g(yk) + h(xk yk),回收 axk + b (xk yk)。
因此,问题就成为:求 y1, y2, , yn,
最大化 1 k n g(yk) + h(xk yk) ,且满足条件
x1 = x
![Page 16: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/16.jpg)
16
x2 = ay1 + b(x1 y1) ……
xn = ayn 1 + b(xn 1 yn 1)
yk 0,xk 0, k = 1..n 1
如何求解?
![Page 17: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/17.jpg)
17
令 fk(x)表示当前资源数量为 x,再经过 k 个阶段投放
完成系统目标,所得到的最大总收入。
则有:
1,max
2,max
0
10
kyxhyg
kyxbayfyxhygxf
xy
kxyk
。
原问题即是求 fn(x)。
上述方法实际上是动态规划中的“后向优化”方法。
![Page 18: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/18.jpg)
18
例 5.1.2:离散变量的资源分配问题
今有 1000 台机床(x = 1000),投放到 A、B 两个
部门。
若给部门 A 投放 z 台机床,则产生效益 g(z) = z2,
回收 0.8z台机床(a = 0.8)。
若给部门 B 投放 z 台机床,则产生效益 h(z) = 2z2,
回收 0.4z台机床(b = 0.4)。
问连续投放 5 年(n = 5),每年如何投放,可使 5 年
![Page 19: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/19.jpg)
19
的总收益最大?
如何求解?
行标 k:到达目标,还需要多少个阶段,即,计算 fk(x)。
列标 x:可能的资源数。
k \ x 0 1 2 3 1000 1 f1(0) f1(1) f1(2) f1(3) f1(1000)2 f2(0) f2(1) f2(2) f2(1000)3 f3(0) f3(1000)
![Page 20: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/20.jpg)
20
4 f4(0) f4(1000)5 f5(0) f5(1000)
问题的目标就是计算 f5(1000)。
从左上到右下,计算整个表,可求得问题的解。
计算一个单元格
f(k, x)
1 v 。
2 for y 0 到 x do
![Page 21: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/21.jpg)
21
3 t g(y) + h(x y) + table(k 1, ay + b(x y))。
/* 令 table(0, x) = 0 。*/
4 if t > v then v t。
5 endfor
6 return v。
每计算一个单元格的 fk(x),都需要计算一个 max 0 y
x {…}函数。因此,尽管使用表格暂存了计算结果,
为计算出最后的 fn(x) 仍需要大量的计算。
小技巧:不用每行都从 0 计算到 1000。每年无论
![Page 22: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/22.jpg)
22
如何投放,回收的机床最多是 0.8x 台(max{a, b} =
0.8)。例如表格第 5 行表示最后一个阶段,其前面
有 4 个阶段。因此对于第 5 行,只需要从 0 计算
到 0.84 1000 4096。
但动态规划法已经比直接用递归的方法解递推方程
减少了大量的计算。
![Page 23: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/23.jpg)
23
计算结果
![Page 24: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/24.jpg)
24
递归的方法
f(k, x)
1 v 0。
2 if k = 1 then
3 for y 0 到 x do
4 t g(y) + h(x y)。
5 if t > v then v t。
6 endfor
![Page 25: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/25.jpg)
25
7 else
8 for y 0 到 x do
9 t g(y) + h(x y) + f(k 1, ay + b(x y))。
10 if t > v then v t。
11 endfor
12 endif
13 return v。
![Page 26: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/26.jpg)
26
多阶段决策问题
有一个系统,可以分成若干个阶段。
任意一个阶段 k,系统的状态可以用 xk 表示(可
以是数量、向量、集合等)。
每一状态 xk 都有一个决策集合 Qk(xk),在 Qk(xk)
中选定一个决策 qk Qk(xk),状态 xk 就转移到新的
状态 x k + 1 = Tk(xk, qk),并且得到效益(或费用)Rk(xk,
qk)。
![Page 27: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/27.jpg)
27
系统的目标就是在每一个阶段都在它的决策集合中
选择一个决策,使所有阶段的总效益达到最大(或
总费用达到最小)。
这样的多阶段决策问题通常使用动态规划方法来求
解。
动态规划的最优子结构性质
动态规划的最优化原理:需要问题的最优解具有如下所
述的最优子结构性质:
![Page 28: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/28.jpg)
28
一个多阶段决策问题,假设其最优策略的第一阶段
的决策为 q1,系统转移到的新状态为 x2。则该最优
策略以后诸决策对以 x2 为初始状态的子问题而言,
必须构成其最优策略。
该子问题与原问题是同一类问题,只是问题规模下
降了。
当观察到问题解的最优子结构性质时,就意味着问
题可能用动态规划法求解。
![Page 29: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/29.jpg)
29
动态规划的子问题重叠性质
从算法角度而言,(离散变量的)动态规划所依赖的
另一个要素是子问题重叠性质:一个问题的求解可
以划分成若干子问题的求解,而处理这些子问题的
计算是部分重叠的。
动态规划法利用问题的子问题重叠性质设计算法,
能够节省大量的计算。对一些看起来不太可能快速
求解的问题,往往能设计出多项式时间算法。
![Page 30: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/30.jpg)
30
在算法理论中,多项式时间算法通常被认为是“有
效的算法”(efficient algorithm)。
前向优化
写动态规划递推方程时,一般有两种写法:前向优
化和后向优化。假设问题有 n个阶段。
定义 fk() 为问题的前 k 个阶段(从第 1 阶段到第 k
阶段)的最优解值,然后将 fk()递推至 fk 1()。
最后写出递推的终止条件 f1()的表达式。
![Page 31: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/31.jpg)
后
原问题
后向优化
假设问
定义 f
到第 n
题就是计
化
问题有 n
fk() 为问
n阶段)的
计算 fn()。
n个阶段。
问题的后
的最优解
31
这称为前
。
k个阶段
解值,然后
前向优化
段(从第
后将 fk()递
化。
n – k + 1
递推至 fk
1阶段
– 1()。
![Page 32: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/32.jpg)
说
最后写
原问题
说明
前面给
写出递推
题就是计
给出的两
推的终止条
计算 fn()。
两个例子,
32
条件 f1()的
这称为后
,最短路
的表达式
后向优化
问题和资
式。
化。
资源分配问题,
![Page 33: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/33.jpg)
33
都是采用后向优化技术解决的。
原则上,多阶段决策问题既可以使用前向优化技术
解决,也可以使用后向优化技术解决。
依据问题不同,前向优化和后向优化其中的一种或
二者是“自然”的解法。
最短路问题,前向优化
定义 fk(a, u)为从顶点 a经过 k条边到达当前顶点 u的
最短路长度。则有:
![Page 34: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/34.jpg)
34
1,,
2,,,min, 1
kual
kuwlwafuaf k
uNvk 。
原问题即是求 fn(a, g)(n = 6)。
资源分配问题,前向优化
![Page 35: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/35.jpg)
35
令 fk(xk+1)表示从第 1 阶段连续生产到第 k 阶段,还余
下恰好 xk+1份资源,所产生的最大效益。
则有如下递推方程:当 k = 2..n时,
o.w.,
,max,min,max 11
11
11
11
1101 1
xbxaxxbxayxhygxfxf
kkk
kkkkkkk
xa
ykk kk
给定 xk+1、yk,由于 xk、xk+1、yk需满足ayk + b(xk – yk) = xk+1,
可直接计算出 kkk yabxb
x 11
。
当 k = 1时,
![Page 36: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/36.jpg)
36
o.w.,
0, 121
111121
xabxbxyyxhygxf
。
由已知 x1、x2,因为 x1、x2、y1需要满足 ay1 + b(x1 – y1) =
x2,可直接计算出 abxbxy
211 。
最后,对 11111 ,max,min xbxaxxbxa nnn
nn 计算所有
可能的 fn(xn+1),然后选取一个最大值,即为原问题的
最优解。
![Page 37: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/37.jpg)
37
动态规划所研究的问题
阶段数固定还是不固定?
阶段数固定(也称为“定期”),指阶段数有限且
固定。
阶段数不固定(也称为“不定期”):指阶段数有
限但不固定,以及阶段数无限大两种情况。
离散变量还是连续变量?
很多阶段数不明显的优化问题,也可以使用动态规
![Page 38: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/38.jpg)
38
划方法求解。
![Page 39: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/39.jpg)
39
5.3 阶段数固定的离散变量的
优化问题
![Page 40: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/40.jpg)
40
本节内容
背包问题
最长公共子序列问题
旅行售货员问题
背包问题(The Knapsack Problem)
实例:有一个背包,总承重为整数 W。
有 n 个物品,每个物品重量为 wi,价值为 vi,i = 1..n。
![Page 41: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/41.jpg)
41
wi和 vi 均为整数。
目标:装入背包若干物品,使其总重量不超过 W,
总价值最大。
例子
n = 4, W = 5。
i 1 2 3 4
vi 6 10 12 13
wi 1 2 3 4
![Page 42: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/42.jpg)
42
贪心策略 1:每次装当前价值最大的物品。
找到的解:13 + 6 = 19。
贪心策略 2:每次装当前重量最小的物品(以留出尽
可能多的空间给将来的物品使用)。
找到的解:6 + 10 = 16。
贪心策略 3:每次装当前“性价比”最高的物品。
找到的解:6 + 10 = 16。
最优解:10 + 12 = 22!
![Page 43: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/43.jpg)
43
第一种解法
定义 f(i, j)表示将物品 1..i 中的若干装入总容量为 j 的
背包,所获得的最大价值。则原问题是求 f(n, W)。
若 j < wi,则第 i个物品必不能装入背包。
若 j wi,则第 i个物品可以装入背包。到底是否装入
背包,取决于装入第 i个物品,再装入获得价值 f(i – 1,
j – wi)的那些物品,所获得的总价值,以及将 1..i – 1
物品中的若干装入容量为 j 的背包所获得的总价值 f(i
![Page 44: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/44.jpg)
44
– 1, j)哪个更大。
则有:
00,0,1,,1,,1max
,1,1,,1,
jiwjijifvwjif
wjjijifjif iii
i
或
动态规划表
f 0 1 2 3 4 5 h 0 1 2 3 4 5
![Page 45: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/45.jpg)
45
0 0 0 0 0 0 0 0 1 0 6 6 6 6 6 1 (0,0)
+6
(0,1)
+6
(0,2)
+6
(0,3)
+6
(0,4)
+6
2 0 6 10 16 16 16 2 (1,1) (1,0)
+10
(1,1)
+10
(1,2)
+10
(1,3)
+10
3 0 6 10 16 18 22 3 (2,1) (2,2) (2,3) (2,1)
+12
(2,2)
+12
4 0 6 10 16 18 22 4 (3,1) (3,2) (3,3) (3,4) (3,5)
f表记录 f(i, j)函数的值。
h表记录对应的 f(i, j)是如何计算出来的。即,f(i, j) = f(i
– 1, j),还是 f(i, j) = f(i – 1, j – wi) + vi。后一种情况表明
装了物品 i。
![Page 46: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/46.jpg)
46
时间复杂度
以上动态规划法的时间复杂度为 O(nW)。
这个时间复杂度不是多项式的,原因在于 W是问题
输入中的一个整数。
第二种解法
定义 f(i, j)表示在物品 1..i中选择若干装入背包,使其
总价值恰好为 j,总重量最小,这样的若干物品的总重
![Page 47: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/47.jpg)
47
量。若这样的集合不存在,则 f(i, j) = 。
则有:
iii
i
vjiwvjifjifjvijif
jijiji
jif
,1,,1,,1min1,1,,1
0,1,01,00,0,0
,
则原问题是寻找满足 f(i, j) W的最大的 j。
![Page 48: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/48.jpg)
48
例子
背包问题实例:n = 4,W = 5。
i 1 2 3 4
vi 6 10 12 13
wi 1 2 3 4
动态规划表:
![Page 49: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/49.jpg)
49
表格中 j 的上界 = min{ max{vi/wi}*W, vi} = 30。
最长公共子序列(LCS)问题
LCS(Longest Common Subsequence)问题
实例:序列 X = x1x2xm,Y = y1y2yn。
目标:找 X 和 Y 的一个最长公共子序列。
子序列:若有 l 个数满足 1 s1 < s2 < < sl n,则
称 xs1xs2xsl 为 X 的一个子序列。
![Page 50: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/50.jpg)
50
递推公式
从 X 和 Y 的尾部向前,考虑它们的最长公共子序列。
假设现在扫描的字符是 xi和 yj。
若 xi = yj,则 x1..xi与 y1..yj的最长公共子序列就是 x1..xi
– 1与
y1..yj – 1的最长公共子序列,再加上字符 xi。
否则,x1..xi与 y1..yj的最长公共子序列,就是 x1..xi – 1与 y1..yj的最长公共子序列,以及 x1..xi与 y1..yj – 1的最
![Page 51: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/51.jpg)
51
长公共子序列中,较长的那一个。
定义 v(i, j)为 x1..xi与 y1..yj的最长公共子序列的长度。
则有:
00,0,0,0,1,,,1max,0,0,11,1
,ji
yxjijivjivyxjijiv
jiv ji
ji
或若
若
若
。
原问题就是计算 v(m, n)。
![Page 52: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/52.jpg)
52
例子
X = monkey,Y = human。
v 0 1h 2u 3m 4a 5n f 0 1h 2u 3m 4a 5n
0 0 0 0 0 0 0 0 1m 0 0 0 1 1 1 1m \
2o 0 0 0 1 1 1 2o 3n 0 0 0 1 1 2 3n \
4k 0 0 0 1 1 2 4k 5e 0 0 0 1 1 2 5e
![Page 53: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/53.jpg)
53
6y 0 0 0 1 1 2 6y
LCS之动态规划算法
Algorithm LCS(X, Y)
计算 X = x1x2...xm和 Y = y1y2...yn的最长公共子序列。
1 for i 1 到 m do
2 c[i, 0] 0。
3 endfor
4 for j 0 到 n do
![Page 54: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/54.jpg)
54
5 c[0, j] 0。
6 endfor
7 for i 1 到 m do
8 for j 1 到 n do
9 if x[i] = y[j] then
10 c[i, j] c[i 1, j 1] + 1。
11 f[i, j] “ \”。
12 else
13 if c[i 1, j] c[i, j 1] then
![Page 55: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/55.jpg)
55
14 c[i, j] c[i 1, j]。
15 f[i, j] “”。
16 else
17 c[i, j] c[i, j 1]。
18 f[i, j] “”。
19 endif
20 endif
21 endfor
22 endfor
![Page 56: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/56.jpg)
56
23 return c, f。
时间复杂度
以上动态规划法(LCS问题)的时间复杂度为 O(mn)。
这是一个多项式的时间复杂度,表明 LCS 问题是多
项式时间可解的。
旅行售货员(TSP)问题
旅行售货员问题是图论中一个著名问题。
![Page 57: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/57.jpg)
57
实例:图 G = (V, E),每条边(vi, vj)上有长度 d(vi, vj)。
目标:找一个最短的圈,走过所有的顶点。
等价描述:从 v1点出发,经过其余顶点(v2, …, vn)
各一次,最后返回 v1的最短的圈。
递推方程
如何对问题(按最优化原理)进行分解?
由于原问题是找一个圈,从任何一个点开始走这个圈
都是可以的。因此不妨假设从 v1开始。
![Page 58: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/58.jpg)
58
于是问题就是,从 v1开始,经过 V \ {v1}中的顶点各一
次,最后回到 v1,这样的最短路的长度是多少?
用 f(vi, U, v1)表示从顶点 vi出发,经过 U 中的顶点各一
次,最后到达 v1的最短路的长度,其中 U V是一个
顶点子集,满足 v1 U,vi U。则有
Uvvd
UvvUvfvvdvUvf
i
jjjiUvi
j
,,
,,\,,min,,
1
11 。
原问题就是计算 f(v1, V \ {v1}, v1)。
![Page 59: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/59.jpg)
例例 5.3.1
59
![Page 60: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/60.jpg)
60
v2 v3 v4 v2 v3 v4 6 7 9 v1 v1 v1
{v2} 15 13 {v2} v2, v2, {v3} 15 15 {v3} v3, v3, {v4} 14 14 {v4} v4, v4,
{v2, v3} 22 {v2, v3} v2, {v3}{v2, v4} 18 {v2, v4} v4, {v2} {v3, v4} 20 {v3, v4} v4, {v3} 使用表格计算诸 fk(vi, U, v1):k = 1..2;vi v1;U V,
满足 v1 U,vi U。
![Page 61: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/61.jpg)
61
最后单独计算 f3(v1, U = V \ {v1}, v1)(因为 v1 U,故
f3(v1, U, v1)没有列入动态规划表格中)。
计算一个单元格
fk(vi, U, v1)
1 d 。
2 for each vj U do
3 t d(vi, vj) + table(vj, U \ {vj})。
4 if t < d then d t。
![Page 62: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/62.jpg)
62
5 endfor
6 return d。
计算过程
f1(v2, {v3}, v1) = min{d(v2, v3) + f0(v3, , v1)} = 8 + 7 = 15。
f1(v2, {v4}, v1) = min{d(v2, v4) + f0(v4, , v1)} = 5 + 9 = 14。
f1(v3, {v2}, v1) = min{d(v3, v2) + f0(v2, , v1)} = 9 + 6 = 15。
f1(v3, {v4}, v1) = min{d(v3, v4) + f0(v4, , v1)} = 5 + 9 = 14。
![Page 63: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/63.jpg)
63
f1(v4, {v2}, v1) = min{d(v4, v2) + f0(v2, , v1)} = 7 + 6 = 13。
f1(v4, {v3}, v1) = min{d(v4, v3) + f0(v3, , v1)} = 8 + 7 = 15。
f2(v2, {v3, v4}, v1) = min{d(v2, v3) + f1(v3, {v4}, v1), d(v2, v4) + f1(v4, {v3}, v1)}
= min{8 + 14, 5 + 15} = 20。
f2(v3, {v2, v4}, v1) = min{d(v3, v2) + f1(v2, {v4}, v1), d(v3, v4) + f1(v4, {v2}, v1)}
= min{9 + 14, 5 + 13} = 18。
![Page 64: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/64.jpg)
64
f2(v4, {v2, v3}, v1) = min{d(v4, v2) + f1(v2, {v3}, v1), d(v4, v3) + f1(v3, {v2}, v1)}
= min{7 + 15, 8 + 14} = 22。
最后一个:f3(v1, {v2, v3, v4}, v1)
= min{d(v1, v2) + f2(v2, {v3, v4}, v1),
d(v1, v3) + f2(v3, {v2, v4}, v1),
d(v1, v4) + f2(v4, {v2, v3}, v1)}
= min{8 + 18, 5 + 18, 6 + 22} = min{26, 23, 28} = 23。
最优 TSP旅游为:v1 v3 v4 v2 v1。
![Page 65: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/65.jpg)
65
一般情况
v2 v3 v4 vn
{v2} {v3}
{v4}
{v2, v3} {v2, v4}
{v3, v4}
![Page 66: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/66.jpg)
66
{v2, v3, , vn1}
{v2, v3, , vn}
{v3, v4, , vn}
时间复杂度
计算过程中的基本运算为加法和比较。考虑加法运算
的次数。
需要计算的 f 函数:
![Page 67: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/67.jpg)
67
1. 1vvi , VU ,满足 1U 且 Uvv i ,1 , 11 ,, vUvf i 。
2. 1vvi , VU ,满足 2U 且 Uvv i ,1 , 12 ,, vUvf i 。
3.
4. 1vvi , VU ,满足 2 nU 且 Uvv i ,1 ,
12 ,, vUvf in 。
因 此 , 需 要 计 算
12
1n
n个 11 ,, vUvf i ,
![Page 68: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/68.jpg)
68
22
1n
n个 12 ,, vUvf i , ,
22
1nn
n个
12 ,, vUvf in 。
计算每个 1,, vUvf ik 需要计算 k次加法,k = 1 .. n – 1。
因此,计算 11 ,, vUvf i ,, 12 ,, vUvf in ,以及最后
一个 111 ,, vUvfn ,所需要的加法运算的次数为:
2
1
211
n
kk
kn
nnT。
当 x = 1时,
![Page 69: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/69.jpg)
69
2
1
2
1
12
1
222 n
k
kn
k
kn
kx
kn
kxk
nk
kn
3322
022121
2
nnn
n
k
k nxnxxk
n
。
因此, 32211 nnnnT 。
比较运算的次数与加法运算的次数是同量级的。因此,
上述 TSP 的动态规划算法的时间复杂度为 O(n22n3)。
![Page 70: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/70.jpg)
70
这已经比枚举法的时间复杂度 O(n!)好了很多。
![Page 71: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/71.jpg)
71
5.4 阶段数不固定的离散变量的
优化问题
![Page 72: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/72.jpg)
72
一般图上的最短路问题
已经考察过多阶段图上从 s 到 t 的最短路问题。现
在将其推广到一般图上。
实例:无向图 G = (V, E),边 e E上定义有长度 c(e)。
源顶点 s,目标顶点 t。
目标:求从 s 到 t 的最短路。
![Page 73: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/73.jpg)
73
例 5.4.1,s = v1,t = v5
第一种解法
因为图上一共有 n 个顶点,从 s 到 t 的最短路上边的
![Page 74: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/74.jpg)
74
数目最多不超过 n – 1。在允许使用的边数上递推,可
用动态规划法解最短 s‐t 路问题。
定义 fk(u, t)为从 u 到 t 经过 k条边的最短路长度。
则有:
0,,1,,,,min
,0, 1
ktuktutvfvuc
tutuf kuNvk
。
原问题即是求 fn – 1(s, t)。
![Page 75: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/75.jpg)
75
动态规划表
v1 v2 v3 v4 v5 v1 v2 v3 v4 v50 0 0 1 7 2 5 3 0 1 v5 v5 v5 v5 2 7 2 2.5 3 0 2 v5 v5 v2 v5 3 4.5 2 2.5 3 0 3 v3 v5 v2 v5 4 4.5 2 2.5 3 0 4 v3 v5 v2 v5
左表:从 vi到 v5边数不超过 k 的最短路的长度。
右表:从 vi到 v5边数不超过 k 的最短路上 vi的下一个
![Page 76: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/76.jpg)
76
顶点。
计算过程
7, 15511 cvvf , 2, 25521 cvvf , 5, 35531 cvvf ,
3, 45541 cvvf 。
726,52,35,07min, 512 vvf ,
255.0,35,02,76min, 522 vvf ,
5.231,05,76,25.0min, 532 vvf ,
![Page 77: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/77.jpg)
77
303,75,25,51min, 542 vvf 。
5.426,5.22,35,07min, 513 vvf ,
25.25.0,35,02,76min, 523 vvf ,
5.231,05,76,25.0min, 533 vvf ,
303,75,25,5.21min, 543 vvf 。
5.426,5.22,35,07min, 514 vvf ,
25.25.0,35,02,5.46min, 524 vvf ,
5.231,05,5.42,25.0min, 534 vvf ,
![Page 78: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/78.jpg)
78
303,5.45,25,5.21min, 544 vvf 。
( 54 ,vuf 与 53 ,vuf 相同,说明在 k = 3时已经求到了
从诸 vi到 v5的最短路。)
计算完 f4(v1, v5)后,只需要继续计算 f4(2), …, f4(n – 1),
就能求到 v1, …, v4各点到 v5的最短路。因此导出“单
汇点最短路问题”。
最后求到的从 v1到 v5的最短路为 v1 – v3 – v2 – v5,长
度为 4.5。
![Page 79: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/79.jpg)
79
第二种解法
下面要介绍的最短路动态规划算法由[Floyd 1962]和
[Warshall 1962]独自提出,也称为 Flody‐Warshall算法。
该算法计算出了所有顶点对之间的最短路。
将所有顶点从 1到 n编号。(假设 s = v1,t = vn。)
将费用函数 c 的定义域从 E 扩展到 V V:
对于(vi, vj) V V,若 i = j,则定义 c(i, j) = 0;
否则,若(vi, vj) = e E,则定义 c(i, j) = c(j, i) = c(e);
![Page 80: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/80.jpg)
80
否则(vi、vj之间没有边),定义 c(i, j) = c(j, i) = +。
c(i, j)简记为 cij。
递推方程
观测:设 P为从 vi到 vj的一条最短路,其上最大的顶
点编号(不包括 i和 j)为 k。则 P也是从 vi到 vj中间
顶点编号不超过 k 的一条最短路。并且,P 上从 vi到
vk的路 P1也是从 vi到 vk的中间顶点编号不超过 k – 1
的一条最短路;类似地,P 上从 vk到 vj的路 P2也是从
![Page 81: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/81.jpg)
81
vi到 vk的中间顶点编号不超过 k – 1 的一条最短路。
定义 jidd kkij , 为从 vi到 vj中间顶点编号不超过 k
的最短路长度。则有:
1,,min0,
111 kdddkc
d kkj
kik
kij
ijkij 。
由于最大的顶点编号为 n,因此任何一条最短路都是
中间顶点编号不超过 n 的一条最短路。原问题即是求 nijd 。
![Page 82: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/82.jpg)
82
动态规划表
03527301555105.02255.00675260
0D
,
03527301555105.02255.00675260
1D
![Page 83: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/83.jpg)
83
035.227301555.2105.02
255.00675260
2D
,
![Page 84: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/84.jpg)
84
035.225.43015.135.2105.02
25.15.005.25.4325.20
3D
![Page 85: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/85.jpg)
85
035.225.43015.135.2105.02
25.15.005.25.4325.20
4D
,
![Page 86: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/86.jpg)
86
035.225.43015.135.2105.02
25.15.005.25.4325.20
5D
(D(3) = D(4) = D(5)。)
单汇点最短路问题
实例:无向图 G = (V, E),顶点集合 V = {v1, v2, ..., vn}。
![Page 87: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/87.jpg)
87
边(vi, vj) E上定义有长度 cij。
目标:从 v1, v2, ..., vn – 1各个顶点到顶点 vn的最短路?
定义 f(i)为从顶点 vi到顶点 vn的距离(最短路的长度)。
则有:
ninfnijfcif ijnj
,01..1,min
1。 (5.4.1)
这是一个函数方程,而不是递推方程。
两种解法:函数空间迭代法和策略空间迭代法
![Page 88: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/88.jpg)
88
第一种解法:函数空间迭代法
例 5.4.1之前定义的 ifk 就是函数方程(5.4.1)的一个解。
定理 5.4.1 由方程(5.4.2)确定的函数列 ifk 单调下降
收敛于函数方程(5.4.1)的解 if 。
证: 11 ni , 2k ,
ififcjfcif kkiikijnjk 1111min
,因此
ifk 是单调下降序列。
![Page 89: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/89.jpg)
89
因为诸 0ijc , 0min ijk cif ,有下界。所以 ifk
有极限,设极限为 if 。
由于 if 的定义域仅有有限个 i,因此对任意 0 ,
存在正整数 k0,当 0kk 时,对所有的 i,都有
ififk 。
因此有 ififif kk ,
以及 ififif kk 11 ,其中 0kk 。
因此, jfcifif kijjk min1
![Page 90: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/90.jpg)
90
2minmin jfcjfc ijjijj ,(1)
以及, jfcifif kijjk min1
2minmin jfcjfc ijjijj 。(2)
当 0 时,(1)、(2)都 jfcijj min 。因此,
jfcif ijj min 。
![Page 91: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/91.jpg)
91
第二种解法:策略空间迭代法
称 VvVs n \: 为一个策略,其中 is 表示对于单汇
点(vn)最短路问题,从 vi到 vn的路上顶点 vi的下一
个顶点(即后继), 1..1 ni 。
is 需要是一个无回路策略,即,从任一个顶点 vi
出发,经过任意次 is 后继操作,不能再回到 vi。特
别地, iis 。
由于 s是 }{\ nvV 到 V 的函数,且 s 是无回路的,以 V
![Page 92: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/92.jpg)
92
为顶点集,以 1..1|, niisi 为边集,必构成一棵
以 vn为根的树。
给定一个策略 is ,解方程组
ninfniisfisicif
k
kkkk
,01..1,,,
得到 nfff kkk ,,2,1 ,其中 ifk 表示在策略 sk之
下,从顶点 vi到顶点 vn的路的长度。
令 jfjicis kijnjk ,minarg
,11 , 1..1 ni ,构造
![Page 93: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/93.jpg)
93
下一个策略 sk+1。
从一个初始策略 s0开始,重复上述过程,直到相邻的
两个策略 sk – 1和 sk完全相同,则 sk就是最优解,此时
fk是函数方程 (5.4.1) 的解。
例 5.4.1(2)
例 5.4.1(2) 用策略空间迭代法重解最短路问题。
初始策略 s0为:
s0(1) s0(2) s0(3) s0(4)
![Page 94: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/94.jpg)
94
5 4 5 3
解方程组
![Page 95: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/95.jpg)
95
053133,445555,334544,22
5255,11
0
000
000
000
000
fffcfffcfffcf
ffcf
,得:
f0(1) f0(2) f0(3) f0(4) f0(5) 2 11 5 6 0
构造策略 s1:
s1(1) = argmin{‐‐‐, c12 + f0(2), c13 + f0(3), c14 + f0(4), c15 +
f0(5)}
![Page 96: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/96.jpg)
96
= argmin{‐‐‐, 6 + 11, 5 + 5, 2 + 6, 2 + 0} = 5。
s1(2) = argmin{ c21 + f0(1), ‐‐‐, c23 + f0(3), c24 + f0(4), c25 +
f0(5)}
= argmin{6 + 2, ‐‐‐, 0.5 + 5, 5 + 6, 7 + 0} = 3。
s1(3) = argmin{ c31 + f0(1), c32 + f0(2), ‐‐‐, c34 + f0(4), c35 +
f0(5)}
= argmin{5 + 2, 0.5 + 11, ‐‐‐, 1 + 6, 5 + 0} = 5。
s1(4) = argmin{ c41 + f0(1), c42 + f0(2), c43 + f0(3), ‐‐‐, c45 +
f0(5)}
= argmin{2 + 2, 5 + 11, 1 + 5, ‐‐‐, 3 + 0} = 5。
![Page 97: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/97.jpg)
97
策略 s1为:
s1(1) s1(2) s1(3) s1(4) 5 3 5 5
![Page 98: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/98.jpg)
98
解方程组
![Page 99: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/99.jpg)
99
055355,445555,33
35.033,225255,11
1
111
111
111
111
fffcfffcf
ffcfffcf
,得:
f1(1) f1(2) f1(3) f1(4) f1(5) 2 5.5 5 3 0
构造策略 s2:
s2(1) = argmin{‐‐‐, c12 + f1(2), c13 + f1(3), c14 + f1(4), c15 +
![Page 100: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/100.jpg)
100
f1(5)}
= argmin{‐‐‐, 6 + 5.5, 5 + 5, 2 + 3, 2 + 0} = 5。
s2(2) = argmin{ c21 + f1(1), ‐‐‐, c23 + f1(3), c24 + f1(4), c25 +
f1(5)}
= argmin{6 + 2, ‐‐‐, 0.5 + 5, 5 + 3, 7 + 0} = 3。
s2(3) = argmin{ c31 + f1(1), c32 + f1(2), ‐‐‐, c34 + f1(4), c35 +
f1(5)}
= argmin{5 + 2, 0.5 + 5.5, ‐‐‐, 1 + 3, 5 + 0} = 4。
s2(4) = argmin{ c41 + f1(1), c42 + f1(2), c43 + f1(3), ‐‐‐, c45 +
f1(5)}
![Page 101: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/101.jpg)
101
= argmin{2 + 2, 5 + 5.5, 1 + 5, ‐‐‐, 3 + 0} = 5。
策略 s2为:
s1(1) s1(2) s1(3) s1(4) 5 3 4 5
![Page 102: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/102.jpg)
102
解方程组
![Page 103: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/103.jpg)
103
055355,444144,33
35.033,225255,11
2
222
222
222
222
fffcfffcf
ffcfffcf
,得:
f2(1) f2(2) f2(3) f2(4) f2(5) 2 4.5 4 3 0
构造策略 s3:
s3(1) = argmin{‐‐‐, c12 + f2(2), c13 + f2(3), c14 + f2(4), c15 +
![Page 104: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/104.jpg)
104
f2(5)}
= argmin{‐‐‐, 6 + 4.5, 5 + 4, 2 + 3, 2 + 0} = 5。
s3(2) = argmin{ c21 + f2(1), ‐‐‐, c23 + f2(3), c24 + f2(4), c25 +
f2(5)}
= argmin{6 + 2, ‐‐‐, 0.5 + 4, 5 + 3, 7 + 0} = 3。
s3(3) = argmin{ c31 + f2(1), c32 + f2(2), ‐‐‐, c34 + f2(4), c35 +
f2(5)}
= argmin{5 + 2, 0.5 + 4.5, ‐‐‐, 1 + 3, 5 + 0} = 4。
s3(4) = argmin{ c41 + f2(1), c42 + f2(2), c43 + f2(3), ‐‐‐, c45 +
f2(5)}
![Page 105: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/105.jpg)
105
= argmin{2 + 2, 5 + 4.5, 1 + 4, ‐‐‐, 3 + 0} = 5。
策略 s3与 s2相同,计算结束。
动态规划之策略空间迭代法计算过程:
s v1 v2 v3 v4 f v1 v2 v3 v4 v5 0 5 4 5 3 0 2 11 5 6 01 5 3 5 5 1 2 5.5 5 3 02 5 3 4 5 2 2 4.5 4 3 03 5 3 4 5 3 2 4.5 4 3 0
![Page 106: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/106.jpg)
106
例 5.4.1(3)
例 5.4.1(3) 用策略空间迭代法重解最短路问题。
初始策略 s0为:
s0(1) s0(2) s0(3) s0(4) f0(1) f0(2) f0(3) f0(4) f0(5) 5 5 5 5 2 7 5 3 0
![Page 107: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/107.jpg)
107
构造策略 s1:
s1(1) = argmin{‐‐‐, c12 + f0(2), c13 + f0(3), c14 + f0(4), c15 +
![Page 108: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/108.jpg)
108
f0(5)}
= argmin{‐‐‐, 6 + 7, 5 + 5, 2 + 3, 2 + 0} = 5。
s1(2) = argmin{ c21 + f0(1), ‐‐‐, c23 + f0(3), c24 + f0(4), c25 +
f0(5)}
= argmin{6 + 2, ‐‐‐, 0.5 + 5, 5 + 3, 7 + 0} = 3。
s1(3) = argmin{ c31 + f0(1), c32 + f0(2), ‐‐‐, c34 + f0(4), c35 +
f0(5)}
= argmin{5 + 2, 0.5 + 7, ‐‐‐, 1 + 3, 5 + 0} = 4。
s1(4) = argmin{ c41 + f0(1), c42 + f0(2), c43 + f0(3), ‐‐‐, c45 +
f0(5)}
![Page 109: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/109.jpg)
109
= argmin{2 + 2, 5 + 7, 1 + 5, ‐‐‐, 3 + 0} = 5。
策略 s1为:
s1(1) s1(2) s1(3) s1(4) f0(1) f0(2) f0(3) f0(4) f0(5) 5 3 4 5 2 4.5 4 3 0
![Page 110: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/110.jpg)
110
再计算策略 s2,将与 s1相同,求到最优解。
动态规划之策略空间迭代法计算过程:
![Page 111: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/111.jpg)
111
s v1 v2 v3 v4 f v1 v2 v3 v4 v5 0 5 5 5 5 0 2 7 5 3 01 5 3 4 5 1 2 4.5 4 3 02 5 3 4 5 2 2 4.5 4 3 0
![Page 112: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/112.jpg)
112
5.5 阶段数固定的连续变量的
优化问题
![Page 113: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/113.jpg)
113
连续变量的资源分配问题
下面讨论有限资源分配问题,它的递推公式是:
1,max
2,max
0
10
kyxhyg
kyxbayfyxhygxf
xy
kxyk
当 g(y)、h(y)是一般函数时,这个问题的解不容易找。
(但对于离散变量的该问题,有动态规划的办法求到
算法解)
![Page 114: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/114.jpg)
114
下面证明,当 g(y)、h(y)为凸函数,且 h(0) = g(0) = 0
时,在每个阶段上 y 的最优决策总是取其端点的值。
即上述递推公式可以化简为:
1,,max2,,max
1
11
kxgxhxfkaxfxgbxfxhxf kkk
凸函数(第 4.2节)
定义 4.2.1 设有函数 f: R R。若对任意的 (0,1),x1
R,x2 R,都有
![Page 115: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/115.jpg)
115
f(x1) + (1 – )f(x2) f(x1 + (1 – )x2)
则称 f 是凸函数。并且,若上述不等式以严格不等式成
立,则称 f是严格凸函数。
![Page 116: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/116.jpg)
116
若对任意的 (0,1),x1 R,x2 R,都有
f(x1) + (1 – )f(x2) f(x1 + (1 – )x2)
![Page 117: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/117.jpg)
117
则称 f 是凹函数。并且,若上述不等式以严格不等式成
立,则称 f是严格凹函数。
![Page 118: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/118.jpg)
118
![Page 119: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/119.jpg)
119
两个引理
引理 5.3.1 设 g(x)、h(y)是凸函数,则对任何固定的 x,
f(y) = g(y) + h(x – y)是 y的凸函数。
证明:由于两个凸函数的和仍然是凸函数(自证),只
需证 h(x – y)是 y的凸函数。
令 h’(y) = h(x – y)。按照定义,需证:0 1,y1,
y2,
h’(y1) + (1 – )h’(y2) h’(y1 + (1 – )y2)。
![Page 120: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/120.jpg)
120
即,0 1,y1,y2,
h(x – y1) + (1 – )h(x – y2) h(x – (y1 + (1 – )y2))。
而这是成立的,因为 h(x – (y1 + (1 – )y2)) = h((x – y1)
+ (1 – )( x – y2)) h(x – y1) + (1 – )h(x – y2),其中最
后一步是因为 h(y)是 y 的凸函数。
引理 5.3.2 设 xF1 、 xF2 是 x 的凸函数,则
xFxFxF 21 ,max 也是 x的凸函数。
![Page 121: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/121.jpg)
121
主要定理
定理 5.3.1 设 g(x)、h(y)是凸函数,g(0) = h(0) = 0。则 n
阶段资源分配问题每个阶段的最优策略 y总是在 0 y
x的端点处取得。
证明:先证 k = 1的情形。
yxhygxfxy
01 max 。由引理 5.3.1,
yxhyg 是 y 的凸函数,因此 yxhyg 在区
间[0, x]上的最大值必定在 y = 0或 y = x 处取得。即,
![Page 122: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/122.jpg)
122
xhxgxf ,max1 。
再用归纳法证 k 2 的情形。
(基本步)
yxbayfyxhygxfxy
102 max 。由引理
5.3.2, xf1 是 x的凸函数。由于 yxbay 是 y 的线
性函数,可证 yxbayf 1 是 y 的凸函数(类似于
引理 5.3.1中对 h()函数的证明)。
由于 yg 、 yxh 、 yxbayf 1 均是 y的凸函数,
![Page 123: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/123.jpg)
123
它们的和也是 y的凸函数。因此
yxbayfyxhyg 1 在区间[0, x]上的最大
值必定在其中一个端点处取得。即,
bxfxhaxfxgxf 112 ,max 。由引理 5.3.2,
f2(x)是 x 的凸函数。
(假设步)假设
bxfxhaxfxgxf kkk 221 ,max
(k 3),并且是凸函数。
(归纳步)下面证
![Page 124: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/124.jpg)
124
bxfxhaxfxgxf kkk 11 ,max ,并且是凸函
数。
由定义,
yxbayfyxhygxf kxyk 10max 。由于
yg 、 yxh 、 yxbayfk 1 均是 y的凸函数,
因此 yxbayfyxhyg k 1 在区间[0, x]上
的最大值必在端点处取得。即,
bxfxhaxfxgxf kkk 11 ,max 。
![Page 125: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/125.jpg)
125
由于 bxfxh k 1 、 axfxg k 1 是 x的凸函数,由
引理 5.3.2, xfk 也是 x 的凸函数。
定理 5.3.1的应用
当 g(x)、h(x)满足给定条件时,应用定理 5.3.1,对于
离散变量的有限阶段资源分配问题,动态规划表的每
个单元格的计算可由计算 x + 1个值
( axfxgbxfxhxf kkxyk 110,max
)简化至只
![Page 126: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/126.jpg)
126
计算 2个值
( bxfxhaxfxgxf kkk 11 ,max )。
当 g(x)、h(x)是给定的满足定理 5.3.1的显函数时,可
利用函数本身的性质对计算做进一步简化。例如,对
连续变量的有限阶段资源分配问题可给出解析解。
例 5.1.2
例 5.1.2:连续变量的资源分配问题。
今有 1000 吨油(x = 1000),投放到 A、B 两个部
![Page 127: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/127.jpg)
127
门。
若给部门 A 投放 z 吨油,则产生效益 g(z) = z2,
回收 0.8z 吨油(a = 0.8)。
若给部门 B 投放 z 吨油,则产生效益 h(z) = 2z2,
回收 0.4z吨油(b = 0.4)。
问连续投放 5 年(n = 5),每年如何投放,可使 5 年
的总收益最大?
解:
2xxg , 22xxh ,显然 xg 和 xh 都是凸函数
![Page 128: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/128.jpg)
128
且 0 xhxg ,满足定理 5.3.1的条件。因此,
2221 22,max,max xxxxhxgxf ,
05 y 。
bxfxhaxfxgxf 112 ,max
222222 22,2max xbxxax
2222 22,21max xbxa 2.28 2.32
2222 xb ,
![Page 129: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/129.jpg)
129
04 y 。
bxfxhaxfxgxf 223 ,max
22222222 222,22max xbbxxabx
2422222 222,221max xbbxbaa 2.4848 2.3712
2222 221 xbaa ,
33 xy 。
bxfxhaxfxgxf 334 ,max
![Page 130: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/130.jpg)
130
222222
222222
2212,221
maxxbbaax
xabaax
242222
22442
222,221
maxxbabab
xbaaa
2.590272 2.397568
22442 221 xbaaa ,
22 xy 。
bxfxhaxfxgxf 445 ,max
![Page 131: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/131.jpg)
131
2224422
2224422
2212,221
maxxbbaaax
xabaaax
24424222
226642
222,221
maxxbababab
xbaaaa
(2.65777408,2.41444352)
226642 221 xbaaaa
11 xy 。
![Page 132: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/132.jpg)
101 i
643 i
25 i
总收益
100002
409402
8.204 2
益 = 265
000000 ,
9600, 4i
.83886
7774.08,
132
8002 i
5124
08。
,即 f5(1
640002
524222
1000)的值
000,
288,
值。
![Page 133: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/133.jpg)
133
例 5.3.2
例 5.3.2 多阶段有限资源分配问题中, 22 xcxxg ,
2xcxxh , cx 0 , 1,0 ba 且 bab 10 。
求 xfk 。
解:
g(x)、h(x)都是凸函数,且 g(0) = h(0) = 0,满足定理 5.3.1
的条件。
2221 ,2max xcxxcxxcxxf 。
![Page 134: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/134.jpg)
134
bxfxhaxfxgxf 112 ,max
222222 ,2max xbcbxxcxxacaxxcx
2222 11,12max xbxbcxaxac
2211 xbxbc ,
因为22 11 ab ,及 ba 12 (即,需证 1 ab ,
由已知可得)。
bxfxhaxfxgxf 223 ,max
![Page 135: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/135.jpg)
135
2222
2222
11,112
maxxbbbxbcxcx
xabaxbcxcx
2422
2222
11,12
maxxbbxbbc
xbaaxabac
2422 11 xbbxbbc ,
因为22242 11 baabb ,以及
212 bbaba (即,需证 12 ababb ,需
![Page 136: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/136.jpg)
136
证 111 babb ,需证 bab
11
,由已知确实
有 bbab
111
)。
归纳可知,
21221 11 xbbxbbcxf kkk
22
2
11
11 x
bbcx
bb kk
。
(对一般项 xfk ,需证 211
kbb
ab ,而由
![Page 137: ch05 - 动态规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/...4 动态规划研究的问题 动态规划起源于1950 年代,创始人为R. Bellman。 动态规划所研究的对象是多阶段决策问题。](https://reader036.vdocuments.site/reader036/viewer/2022081419/5ed97098eb09c069957f6169/html5/thumbnails/137.jpg)
137
已知确实有 2111
kbbbab
)。