图论动画-网络单纯形算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
4,2
2
2, 2 4,2
3
3,0 5, 3
3,2 1, 0
沿圈发送1 个单位的流.
T L U
4
4, 0
5
下一个生成树
解是什么?
27
下一个生成树解
1
4,2
2
2, 2 4,2
3
3,0 5, 3
3,2 1, 0
4
4, 0
5
这是更新的生成树解
T L U
28
更新的乘子
0 1
0
0
2
2
1
0
32
32
0
这是当前乘子.
0
1
5
-6
-5 2
7
3
-4
-6
-2 3
6 -1
-2
1
-4 4
5
结点 5 的单纯形乘子 是什么?
15
计算生成树的单纯形乘子
0
1
5
-6
-5 2
7
3
-4
-6
-2 3
6 -1
-2
1
-4 4
5 -1
有单纯形乘子和这棵 树相关.它们不依弧 流,也不依赖非树弧 上的代价.
16
网络单纯形算法
2 1
4, $1
2 5
回忆: (i,j)的即约代 价是 cij - i + j
9
计算生成树的单纯形乘子
0
1
5
-6
2
7
3
-4
3
6
-2
1
4
5
在最小代价流问题中 ,有一个多余的限制.
1 可以被任意设置. 我们令 i = 0.
结点 2 的单纯形乘 子是什么?
10
计算生成树的单纯形乘子
0
1
5
-6
-5 2
7
3
-4
3
6
-2
depth(7) = 1;
用 pred(8) 替换结点8;
用 pred(1) 替换结点7
37
使用深度和前驱
01
8
3
6
10
11
7 2
9
12
5
结点3和5的 最小共同祖 先被找到.
38
更新乘子:使用线和深度
1
8
3
6
10
11
7 2
9
12
5
假设弧 (1,8) 将从树中删 除.以结点8 为根的子树 是什么?
T L U
我们如何使 c21 = 0 ,且让 其他树弧有 0 即约代价?
23
从 T 删除 (2,1) 把 T 分裂成两部分
0 1
0
-2
0
2
3+
0
32
34
0
-4 4
4
5 -2+
添加 到树的一侧不影响任何树
弧的即约代价,除了 (2,1). 为 什么?
T L U
应该选择什么
样的 值, 产生即约代 价 (2,1) = 0?
1
4
5
(1,2)的即约代价是 c12 - 1 + 2 = 0.
因此5 - 0 + 2 = 0.
结点 7 的单纯形乘子 是什么?
11
计算生成树的单纯形乘子
0
1
5
-6
-5 2
7
3
-4
-6
3
6
-2
1
4
5
(7,1)的即约代价是 c12 - 1 + 2 = 0. c71 - 7 + 1 = 0.
24
更新的乘子和即约代价
0 1
0
0
2
2
1
0
32
32
0
更新的乘子和即约代价.
T
L
-4
U
4
2
5
-4
这棵树的解是 最优的吗?
ห้องสมุดไป่ตู้
25
添加一条违反弧到生成树,创建圈
1
4,2
2
2, 1 4,3
3
3,0 5, 3
3,3 1, 0
T L U
4
4, 0
5
圈是什么,能
发送多少流?
添加弧 (3,4) 到生成树
26
沿圈发送流
depth(3) = 2;
用 pred(9) 替换结点9
35
使用深度和前驱
01
8
23
6
10
11
7
22
9
12
5
depth(2) = 2;
depth(3) = 2;
用 pred(2) 替换结点2;
用 pred(3) 替换结点3
36
使用深度和前驱
01
18
71
3
6
2
10
11
9
12
5
depth(8) = 1;
T
L
-4
U
4
2
5
我们如何修改
-4 乘子?
29
更新的乘子
0 1
0
0
2
2
1
0
32
32
0
这是更新的乘子.
T
L
-4 +
U
4
2
5
应该是什
-4 么值?
30
更新的乘子
0 1
0
0
2
2
1
-2
30
32
0
这是更新的乘子.
T
L
-6
U
4
4
5
当前生成树解
-4
是最优的吗?
31
最优解
0 1
0
0
2
2
1
-2
30
32
0
这是最优解.
T
L
-6
U
4
4
5
没有弧违反最
-4
优条件.
32
寻找圈
1
8
3
6
10
11
7 2
9
12
5
33
使用深度和前驱
01
8
23
6
10
11
7 2
9
12
54
depth(5) = 4;
depth(3) = 2;
用 pred(5) 替换结点5
34
使用深度和前驱
01
8
23
6
10
11
7 2
9 3 12 5
depth(9) = 3;
因此 -6 - 7 +0 = 0.
结点 3 的单纯形乘子 是什么?
12
计算生成树的单纯形乘子
0
1
5
-6
-5 2
7
3
-4
-6
-2 3
6
-2
1
4
5
结点 6 的单纯形乘子 是什么?
13
计算生成树的单纯形乘子
0
1
5
-6
-5 2
7
3
-4
-6
-2 3
6 -1
-2
1
4
5
结点 4 的单纯形乘子 是什么?
14
计算生成树的单纯形乘子
T L U
4
4, 0
5
下一个生成树
是什么?
21
旋转(pivot)之后
u14, x14
1
4,2
2
2, 1 4,3
3
3,0 5, 3
3,3 1, 0
更新的生成树
T L U
4
4, 0
5
在旋转中,一条
弧加入到 T, 而
另一条弧从 T 删
除.
22
更新乘子
0
-4
1
0
0
32
4
-2
0
34
4
2
0
5
3
-2
当前乘子和即约代价
39
跟随从结点8开始的线
1
8
3
6
10
11
7 2
9
12
5
什么是 thread(8)?
40
跟随从结点8开始的线
1
8
3
6
10
11
7 2
9
12
5
什么是 thread(3)?
41
跟随从结点8开始的线
1
8
3
6
10
11
7 2
9
12
5
什么是 thread(10)?
42
跟随从结点8开始的线
1
8
3
6
10
11
7 2
9
12
5
什么是 thread(11)?
43
跟随从结点8开始的线
1
8
3
6
10
11
7 2
9
12
5
什么是 thread(6)?
44
停止规则
1
depth = 8 1
3
6
停止规则: 当depth(当 前结点) depth(8)的时 候停止
7 depth = 1
2
10
11
9
12
5
45
3
计算生成树流
11
-6 2
13
6 -4
2
3
24
53
73
在弧(3,2)中的流是 什么?
4
计算生成树流
11
-6 2
6
13
6 -4
2
3
24
53
73
在弧(2,6) 中的流是 什么?
5
计算生成树流
11
-6 2
6 13
4 6 -4
2
3
24
53
73
在弧(7,1)中的流是 什么?
6
计算生成树流
11 3
在弧(1,6)中的流是 什么?
5 -2
什么弧是违规的?
19
添加违规弧到生成树,创建圈
u14, x14
1
4,0
2
2, 1 4,1
3
3,2 5, 3
3,3 1, 0
T L U
4
4, 0
5
圈是什么,能
发送多少流?
弧(2,1) 添加到了树中
20
环绕圈发送流
u14, x14
1
4,2
2
2, 1 4,3
3
3,0 5, 3
3,3 1, 0
沿着圈发送2 单位的流
4, $2 3, $5
2, $4
3, $4
3 1, $4
5, $5
最小代价流问题
-4 4
4, $2
5 -3
T L U
17
生成树流
2
-4
1
1
1
3
4
0
2
30
0
2
3
5
5
-3
初始生成树解
T L U
18
单纯形乘子和即约代价
0 1
0
-2 0
2 3
0
32
34
0
初始单纯形乘子和即约代价
T
L
-4
U
4
? c45 = 2
15.082 和 6.855J 网络单纯形动画
计算生成树流
11
-6 2
13
6 -4
24
53
73
有供应和需求的树 .(假设所有的其他 弧的流是0)
在弧(4,3)中的流是 什么?
2
计算生成树流
11
-6 2
13
6 -4
2
24
53
为了计算流,向上 迭代树,寻找流能 唯一确定的弧. 73
在弧(5,3)中的流是 什么?
-6 2
6
4
73
13
6 -4
2
3
24
53
7
计算生成树流
11
4
3
注释: 有两中不同的 方法计算在(1,2)的流
-6 2
6
4
73
,两种方法都给出流 为 4.这是巧合吗?
13
6 -4
2
3
24
53
8
计算生成树的单纯形乘子
1
5
-6
2
7
3
-4
3
6
-2
1
4
5
这里是有弧代价的生 成树.如何选择结点势 以便即约代价是0呢 ?