6.04-网络的最大流
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3(1) 增广链
B
(A,1) 1(1)
2(1)
(B,1)
D
1(1)
A
2(1)
1(1) K
C
1(0)
F
1(1) K
最小割为{(D,F), (A,E), (D,E)}, 应至少炸断编号 为7、9、10的三座桥。
运筹学
E
3(2)
4-5 应用举例
例8 匹配问题. 有三根相同的轴(编号为1、2、3),又有三个相同 的齿轮(编号为4、5、6),由于精度不高,不能做到任意互配.根 据图纸工艺要求,已知轴1能和齿轮4、5配合,轴2能和齿轮5 、6配合,轴3能和齿轮4、5配合.要求合理选择装配方案,以得 到轴与齿轮的最大匹配数.
③如果某未标号点 k有两个以上相邻的标号 点, 为了减少迭代次数 , 可按①和②中所述规则 分 别计算出 ( k )的值, 并取其中最大的一个标 记.
运筹学
3) 重复第二步 , 可能出现两种结局:
①标号过程中断 , t得不到标号 , 说明该网络中 不存在增广链 , 给定流量即为最大流 .记已标号 点的集合为V , 未标号点集为 V , (V ,V )为网络的 最小割; ②t得到标号, 这时可用反向追踪法在 网络中找 出一条从s t的由标号点及相应的弧 连接而成 的增广链.
-Ford-Fulkerson标号算法
给发点s标号(0,ɛ(s)). 注意:括弧中第一个数字是使这个点得到 标号的前一个点的代号; 括弧中第二个数字表示从上一标号点到这 个标号点的流量的最大允许调整值,其中 ɛ(s)=+∞。
1)
运筹学
2)列出与已标号点相邻的 所有未标号点:
一般地, 对vi (标号未检查点 ) ①对( vi , v j ) 前向弧, 若f ij cij , 不给点v j标号; 若f ij cij , 给v j标号( vi , ( v j )),其中 :
( v j ) min{ ( vi ), cij f ij }
②对( v j , vi ) 后向弧, 若f ji 0, 不给点v j标号; 若f ji 0, 给v j标号( vi , ( v j )),其中 :
( v j ) min{ ( vi ), f ji }
运筹学
4.2-4.3 割和流量
割的定义: 将容量网络中的发点和收点分割成两 个集合V和V ,并使s到t的流中断的一组弧的集合 ,记为割(V,) V . 割的容量是组成它的集合中的各弧的容量之和, 用c(V,V )表示。
v1
K
9(4)
v3
8(8)
s
7(5)
5(4)
5(5) 2(0) 6(1) 10(8)
v ( f ) c (V ,V )
* *
运筹学
增广链:
对可行流
f { fi } f i ci 饱和弧;f i ci 非饱和弧
f i 0 零流弧;f i 0 非零流弧 网络中的一条链
(vs ,..., vt )
弧的方向与链的方向一致 - -前向弧 - -其全体记为 对f i , 存在f i ci ; 弧的方向与链的方向相反 - -后向弧 - -其全体记为 对f i , 存在f i 0;
*
s
t
图6-13
运筹学
7(6)
v (s,1) 2
*ቤተ መጻሕፍቲ ባይዱ
v4
v ( f ) c (V ,V ) 14
4-5 应用举例
例7 某河流中有4个岛屿,从两岸至各岛屿及各岛屿之间的桥梁 编号如图所示.在一次敌对的军事行动中,问至少应炸断哪几 座桥梁,才能完全切断两岸的交通联系? A 1 B 2 4 D 10 11 5 C 8 6
t
运筹学
v2
K
9(9)
图中弧旁数字cij(fij) 图6-13
v4
找出全部不同的割:
v1
8(8)
K
9(4)
v3
5(5) 6(1) 10(8)
s
7(5)
5(4)
2(0)
t
V
s s,1 s,2 s,1,2 s,1,3 s,2,4 s,1,2,3 s,1,2,4
V
1,2,3,4,t 2,3,4,t 1,3,4,t 3,4,t 2,4,t 1,3,t 4,t 3,t
f4<c4 f5<c5
t
运筹学
s→t的流量v(f)增大了一个θ值
几点结论
1) v ( f ) c(V ,V ) 2) 可行流f *是最大流 不存在关于f *的增广链 3) 最大流最小割定理 : 最大流量 最小割容量 v ( f ) c (V ,V )
* *
运筹学
4.4 求网络最大流的标号法
1 2 3
4 5 6
运筹学
增加一个假想发点与假想收点,问题转化为求该网络上的最大流.
1
1 1 1
4 5 6
1 1 1
s
1 1
2
1
1 1
t
3
1
任意给一个可行流,用标号算法求出网络的最大流
1
1(1) (s,1) (0,∞) 1(0) 1(0) 1(1) 1(0) 1(0) 1(0) 1(0) (2,1) (3,1)
运筹学
例6 用标号算法求下图中s→t的最大流量,并找出
该网络的最小割。
v1
8(8)
9(4) 5(4)
v3
5(5) 6(1) 10(8)
s
7(5)
2(0)
t
图6-13
运筹学
v2
9(9)
v4
例 6 (续 ) 。
(v2,1)
v1
(v1,1)
9(5) 5(3)
v3
8(8)
(0,+∞)
5(5) 2(0) 6(0) 10(9) 9(9)
v4
图6-13
运筹学
s,1,2,3,4
t
(3,t)(4,t)
15
几点结论
1)从s→t的流量实际上等于通过割的从V 到V 的流量减去V →V的流量,即
v( f ) f (V ,V ) f (V ,V )
2)若用v*(f)表示网络中从s→t的最大流, 用c*(V, V )表示网络中最小割的容量,则有
7
3
9
E 12
13
运筹学
F
例7等价于求网络中的最小割,弧旁数字相当于容量
B
2
2
D
2
A
1
1
C
1
1
F
3
E
运筹学
任意给一个可行流,用标号算法求出网络的最大流
(A,1) 2(1) (0,∞)
B
(A,1) 1(1)
2(1)
(B,1)
D
1(1)
A
2(1)
1(1)
C
(A,1)
1(0)
F
(E,1)
1(0)
E
(A,1) 2(1) (0,∞)
j j
运筹学
网络的最大流:满足容量限制条件和中间 点平衡的条件下,使v(f)值达到最大。
max v ( f ) )对所有弧有: 1 0 f ( v , v ) c( v , v ) i j i j s.t. 2)对中间点vi , i s, t有 : f (v , v ) f (v , v ) 0 i j j i
1)容量限制条件 : 对( vi , v j ) A 0 f ( vi , v j ) c( vi , v j ) 2)中间点平衡条件 :
流入量=流出量
对vi , i s, t有 : f ( vi , v j ) f ( v j , vi ) 0 以v ( f )表示网络中从s t的流量,则有 v ( f ) f ( vs , v j ) f ( v j , vt )
§4 网络的最大流
4.1网络最大流的有关概念 定义: 对有向图D=(V,A): vs --发点 vt -- 收点 其余 -- 中间点 c(vi,vj) -- 弧(vi,vj)的容量, 最大通过能 力,简写为cij D=(V,A,C) -- 网络 fij -- 弧(vi,vj)上的流量
运筹学
流与可行流 可行流满足:
s
2 3
t
1(1)
(2,1) 1(0)
增广链
1
1(1) (s,1) (0,∞) 1(1)
1(0) 1(1) 1(0) 1(1) 1(1) 1(0)
4
(2,1)
1(1) (6,1) 1(1)
s
2 3
5 6
t
运筹学
1(1)
(2,1) 1(1)
运筹学
4) 修改流量 : 设图中原有可行流为 f ,令
f (t ), 对增广链上所有前向弧 f f - (t ), 对增广链上所有后向弧 f, 所有非增广链上的弧 这样又得到网络上的一 个新的可行流 f ;
, 重复第一到第四步 , 直到图中 5) 抹掉图上所有标号 找不到任何增广链 ,即出现第三步的结局 (1)为止, 这时网络中的流量即为 最大流.
4 5 6
1(0) (4,1) 1(1)
s
2 3
t
运筹学
1(0) (s,1)
(2,1) 1(0)
增广链
任意给一个可行流,用标号算法求出网络的最大流
1
1(1) (s,1) (0,∞) 1(0) 1(0) 1(1) 1(0) 1(0) 1(1) 1(0) (2,1)
4 5 6
1(1) (6,1) 1(1)
割 (s,1)(s,2) (s,2)(1,2)(1,3) (s,1)(2,4) (1,3)(2,4) (s,2)(1,2)(3,2)(3,t) (s,1)(4,3)(4,t) (2,4)(3,t) (1,3)(4,3)(4,t)
v 2 割的容量
15 21 17 18 19 24 14 25
K
9(9)
运筹学
增广链 当有增广链存在时,找出
可增加流量的链
( ci f i ), 对 min 0 对 fi , f i , 对所有 再令 f f i - , 对所有 f , 对非增广链上的弧 i
s
f2>0 f1<c1 f3>0