第四章 图论-3

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
增广链上,Vj的前一个节点是Vi
未饱和
若在后向弧(Vj,Vi)上,fji>0,给Vj标号 (-Vi,,L(Vj)),L(Vj)=min[L(Vi),fji]
增广链上,Vj的前一个节点是Vi
非零流
Vi,成为检查过的标号点,Vj为成为已经标号但没有检
查的点。
表明从发点Vs开始,到Vj,已经得到了增广链的一部分
(1). 弧 饱和弧:弧流量=弧容量 非饱和弧:弧流量<弧容量 零流弧:弧流量=0
非零流弧:弧流量≠0
前向弧(μ+)
弧的方向与链的方向相同
后向弧(μ-)
弧的方向与链的方向相反
链的方向:从发点到收点
单纯地考察一条弧是前向弧还是后向弧是无意义的, 弧的方向必须放在具体的链中考察。
V1
5
2
V3
7 Vt 9
V s 4 9 V3
S
VS VS、V2
5
6
V5 5
4 5 Vt 10
5
V4
5
割集
V6
割量
22 20
T
V2、V3、V4、V5、V6、Vt V3、V4、V5、V6、Vt
(VS,V2)、(VS,V3) (VS,V3)、(V2,V4)、(V2,V5)
VS、V3
VS、V2、V3 VS、V2、V5
V2、V4、V5、V6、Vt
V2
5
6
V5
重复该过程
V s
13
4 9 V3 5
5
4 V4
4
5 Vt 10 V6
5
V2为已经标号但未检查的点,前向弧(V2,V5)满足条件f25<C25,
给V5标号(V2,5),L(V5)=min[L(V2),C25-f25]=min[13,5-0]=5
V5为已经标号但未检查的点,前向弧(V5,Vt)满足条件f5t<C5t,
若在前向弧(Vi,Vj)上,fij<Cij,给Vj标号(Vi,,L(Vj)),
L(Vj)=min[L(Vi),Cij-fij]
Vs为已经标号但未检查的点,前向弧(Vs,V2)满足条件 fs2<Cs2,给V2标号(Vs,13) L(V2)=min[L(Vs),Cs2-fs2]=min[∞,13-0]=13
容量3 L3
容量4 L4
制约整个管道流量的是最细的管道 如果管道中已经有流量,那么管道中流量增长的上限, 就是所有管道的最大流量(弧容量)与当前流量(弧流 量)差值(Li)中的最小值。
2、检查与标号
取一个已经标号的未检查点Vi,对于一
切未标号点Vj: 若在前向弧(Vi,Vj)上,fij<Cij,给Vj标号 (Vi,,L(Vj)),L(Vj)=min[L(Vi),Cij-fij]

其余的弧流量不变
求解过程
V2
13 Vs 9 V3 6
5
5
V5
5 4 Vt
4 5
V4
4
10 V6
5
1、初始化
对Vs点进行标号 Vs—(0,∞)
V2 13 Vs 9 V3 2、检查与标号 4 5
5
V5 5 4 5 Vt 10 V6
6
V4
4
5
取一个已经标号的未检查点Vi,对于一切未标号点Vj:
给Vt标号(V5,5),L(Vt)=min[L(V5),C5t-f5t]=min[5,5-0]=5
已经找到一条增广链,Vs-V2-V5-Vt,当前可行流不是最大流
V2 13 V s 4 9 V3 6
5 5
V5 5 4 Vt 10 V6
5
V4
4
5
已经找到一条增广链,Vs-V2-V5-Vt,当前可行流不 是最大流
V4为已经标号但未检查的点,前向弧(V4,Vt)满足条件f4t<C4t,
给Vt标号(V4,4), L(Vt)=min[L(V4),C4t-f4t]=min[4,4-0]=4
已经找到一条增广链,Vs-V3-V2-V4-Vt,当前可行流 不是最大流
V2 13,5 6,0 4,0 9,0 V3 5,0 5,5 5,0 4,0 V5 5,5 Vt 10,0
重复上述过程,如果收点Vt被标号,说明找到了一
条从发点Vs到收点Vt的增广链,当前的可行流不是最 大流。
重复上述过程,如果所有标号都已经检查过,而标
号进行不下去时,表明不存在增广链,当前可行流 为最大流。
3、调整可行流
对增广链上每一段弧流量进行以下调整:
f ij L(Vt ) f ij f ij L(Vt ) (Vi , V j ) (Vi , V j )
………
……… ……… ………
解法2 根据最大流的充要条件
采用标号法
标号过程:寻找增广链
最大流充要条件
当且仅当不存在增广链时,可行流为最大流
增广链判别条件
前向弧—非饱和 后向弧—非零流
是否能找到一条从Vs到Vt的链, 链上的每一条前向弧都不饱和, 后向弧非零流?
应用标号法:构造标号(Vi,T)
Vs
V4
4,0 5,5 V6
继续重复寻找增广链
V2 13,5 Vs 9,9 V3 4,4 5,0 V4 4,0 5,5 V6 10,5 6,4 5,5 5,0 4,4 V5 5,5 Vt
找到增广链,Vs-V2-V4-V6-Vt,当前可行流不是最大流
L(Vt)=2
调整流量
V2 13,7 Vs 9,9 V3 4,4 6,6 V4 4,2 5,5 V6 10,7 5,5 5,0 4,4 V5 5,5 Vt
图的定义:点与边的集合 网络的定义:特殊的图 G=(V,E)
指定发点(Vs)、收点(Vt)
有向图—边有方向,称为弧
弧有容量—弧容量

G=(V,E)
点集 边集
V1
5
2
V3
7 Vt
网络: D=(V,A,C)
弧容量 集合 弧集
Vs
8
10
6 V2 3
4
9
V4
点集
2、可行流与最大流
可行流的四个条件
(1)对于中间点Vi,有
计算过程 (1). 标号 找增广链,确定流量调整值 (2). 流量调整
V2
13 Vs 9 V3 6
5
5
V5
5 4 Vt
4
5 V4
4
10 V6
5
某城市道路网络经抽象简化后形成的网络如图所示。 弧旁的数字代表该路段的容量。 试求从Vs到Vt之间的最大交通量(最大流)
解法1 根据最小割集确定
V2 13
f i ,l f k , i 0
(2)对于发点Vs,有
f s , j f k ,s V ( f )
(3)对于收点Vt,有
f j,t ft ,i V ( f )
(4)弧流量限制
0 f ij Cij
Vf —可行流的流量
最大流—max(Vf)
3、增广链(增值链)
5,0
V2
13,7 Vs 9,9 V3 4,4 5,0
5,5 6,6 V4
5,0
V4、V5、V6、Vt V3、V4、V6、Vt
(VS,V2)、(V3,V2)、(V3,V4)、(V3,V6)
(V2,V5)、(V2,V4)、(V3,V4)、(V3,V6) ………
27
21 ………
VS、V3、V6
……… ……… ………
V2、V4、V5、Vt
……… ……… ………
………
……… ……… ………
V2
5,5 6,0
V5 5,5 4,0 Vt
13,5
Vs
5,0
4,0 9,0
V3 5,0 V4 4,0 5,0 V6
10,0
V2为已经标号但未检查的点,前向弧(V2,V5)不满足条件f25<C25,
前向弧(V2,V4)满足条件f24<C24,给V4标号(V2,4), L(V4)=min[L(V2),C24-f24]=min[4,6-0]=4
调整流量
对增广链上每一段弧流量进行以下调整:
f ij L(Vt ) f ij f ij L(Vt )
(Vi , V j )

(Vi , V j )
其余的弧流量不变
3段前向弧(Vs,V2)、 (V2,V5)、(V5,Vt),每段弧的
流量增大5个单位(从0增加到5)。
V2
5,5 6,0
V5
13,5
Vs
5,0
4,0
5,5 Vt
4,0 9,0
V3 5,0 V4 4,0 5,0 V6
10,0
弧容量
弧流量
继续重复进行寻找增广链的工作
V2 13,5 6,0 4,0 9,0 V3 5,0 5,5 5 4,0 V5 5,5 Vt 10,0 5,0 V6
Vs
V4
1、初始化
对Vs点进行标号 Vs—(0,∞)
5,0 V6
V2 13,5 Vs 6,4
5,5 5,0wk.baidu.com
V5 5,5 4,4 Vt
4,4 9,4
V3 5,0 V4 4,0 5,0 V6
10,0
找到增广链,Vs-V3-V6-Vt,当前可行流不是最大流
L(Vt)=5
调整流量
V2 13,5 6,4 4,4 9,9 V3 5,0 5,5 5,0 4,4 V5 5,5 Vt 10,5
5
2
V3
7 Vt 9
Vs
8
10
6 V2 3
4
V4
割量与割集对应:
[(V1,V3)、(V2,V3)、(V2,V4) ]—割量为11
弧割 的量 容: 量构 之成 和割 集 的 所 有
[(Vs,V1)、(V2,V1)、(V2,V3)、(V2,V4)]—割量为24
[(V3,Vt)、(V4,Vt)] —割量为16
Vs
8
10
6 V2 3
4
V4
如:
弧(V2,V1)
Vs→V1→V2→V4→Vt Vs→V2→V1→V3→Vt
后向弧μ
-
前向弧 μ+
(2).增广链判别条件 前向弧—非饱和
0≤fij<Cij 弧流量小于弧容量
后向弧—非零流
0<fij≤Cij 弧流量大于0
4、割集与割量
割集:弧的集合
将网络中的节点分别归入两个集合:S、T
第四节 最大流问题
例:
下图为某一城市道路网络,路段均为双向,图中 数据(a )为道路通行能力(容量)。
(10) (30)
求:从A、C两点到B点的最大网络运输能力(最大流量)。
(40)
A
(20) (30) (20) (10)
(10)
B
(60)
(30)
(20)
C
(40)
(20)
一、基本概念
1、网络与流
每段弧的流量增大4个单位。
V2 13,5 Vs 9,4 V3 4,4 5,0 6,4
5,5 5,0
V5 5,5 4,4 Vt 10,0
V4
4,0
5,0 V6
继续重复寻找增广链
V2 13,5 Vs 9,4 V3 4,4 5,0 V4 6,4 5,5 5,0 4,4 V5 5,5 Vt 10,0
4,0
增广链上,Vj的前一个节点是Vi
未饱和
若在后向弧(Vj,Vi)上,fji>0,给Vj标号 (-Vi,,L(Vj)),L(Vj)=min[L(Vi),fji]
增广链上,Vj的前一个节点是Vi
非零流

1
管道1
L=min(L1、L2、L3、L4 )
2
管道2
3
管道3
4
管道4
5
容量1 L1
容量2 L2
V2 13,5 Vs 9,0 V3 6,0
5,5 5,0
V5 5,5
4,0
5,0 V4 4,0 5,0 V6
4,0
Vt
10,0
Vs为已经标号但未检查的点,前向弧(Vs,V3)满足条件 fs3<Cs3,给V3标号(Vs,9) L(V3)=min[L(Vs),Cs3-fs3]=min[∞,9-0]=9 V3为已经标号但未检查的点,前向弧(V3,V2)满足条件f32<C32, 给V2标号(V3,4),L(V2)=min[L(V3),C32-f32]=min[9,4-0]=4
增广链上流量 可以增大的量
增广链上的前一个节点
标号法步骤
1、初始化
对Vs点进行标号 Vs—(0,∞)
第一个节点, 前边无节点 认为发点产生流量 的能力无限
2、检查与标号
取一个已经标号的未检查点Vi,对于一
切未标号点Vj: 若在前向弧(Vi,Vj)上,fij<Cij,给Vj标号 (Vi,,L(Vj)),L(Vj)=min[L(Vi),Cij-fij]
Vs
V4
4,0 5,0 V6
对增广链上每一段弧流量进行以下调整:
f ij L(Vt ) f ij f ij L(Vt )
(Vi , V j ) (Vi , V j )
其余的弧流量不变
4段前向弧(Vs,V3)、 (V3,V2)、(V2,V4)、( V4,Vt) ,
VsS,VtT,且S∩T=,S∪T=V
割集:所有起点S、终点T的弧的集合
V1
5
2
V3
7 Vt 9
Vs
8
10
6 V2
4
3
V4
割集不唯一:
[(Vs,V1)、(V2,V1)、(V2,V3)、(V2,V4)] [(V1,V3)、(V2,V3)、(V2,V4)]
[(V3,Vt)、(V4,Vt)]
V1
基本定理
1、最大流量—最小割量定理
任一网络中,发点Vs到收点Vt的最大流的流量,
等于分离Vs与Vt的最小割量。
寻找最大流的一个方法:找到网络的所有割集, 比较其割量,确定最小的割量,该割量就是网络 的最大流量
2、最大流充要条件
当且仅当不存在增广链时,可行流为最
大流。
二、求解最大流问题的标号法
二、求解最大流问题的标号法
相关文档
最新文档