第五章 图与网络分析-最大流
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
t
( 3 1 , 19 )
,9)
3
(2,3)
(4,4)
4
8
SEU
多收发点的网络最大流
• 网络中存在多个发点和收点时:虚拟发点和收
点,虚拟发点和收点到各发点的弧的容量、各
收点的弧的容量为无穷大(不破坏发点、收点 产生、吸引流量能力无限的条件)
9
Vs1
Vt1 V2 13 6 4 9 V3 5 5 4 V4
弧旁注释(a,b)对应(弧容量,弧流量)
SEU
6.4.5 最小费用最大流
• 双权网路:每条弧不但有容量,还有单位流量的通过费用 • 两种解法:一种基于最小费用路径算法;一种基于可行弧集 的最大流算法 • 基于最小费用路径算法:总是在当前找到的最小费用的路径 上增广流;缺点是每次增广后要改变弧的费用,且出现负权 值费用的弧 • 基于可行弧集的最大流算法:从 0 费用弧集开始应用最大流 算法,然后根据计算信息提高费用的限界 P,使可行弧集增 大,再应用最大流算法,直至所有弧都进入可行弧集。这种 算法是一种主-对偶规划的解法。使用这种方法的还有运输 问题、匹配问题
(2)节点 t 获得标号,找到一条增广链,由节点 t 标号回溯可找出该增 广链;到第二步
5
SEU
最大流最小截的标号法步骤
第二步:增广过程
1、对增广链中的前向弧,令 f=f+q(t),q(t) 为节点 t 的标记值 2、对增广链中的后向弧,令 f=fq(t) 3、非增广链上的所有支路流量保持不变
iV jV
(3,0) s (5,0)
2
(4,0) (1,0) (2,0)
4
(5,0) t
(1,0) 3
(3,0) 5 (2,0)
• 福特-富克森定理:网路的最大流等于最小截集容量
3
SEU
3 确定网路最大流的标号法
• 从任一个初始可行流出发,如 0 流 • 基本算法:找一条从 s 到 t 点的增广链(augmenting path)
第三步:抹除图上所有标号,回到第一步 • 以上算法是按广探法描述的,但在实际图上作业时,按深 探法进行更快捷 • 一次只找一条增广链,增广一次换一张图 • 最后一次用广探法,以便找出最小截集
6
SEU
最大流最小截集的标号法举例
(1 4) 1 , 4
1
(16,15)
(6,
(5,
5)
6)
(7,5)
(s+,)
B(vi)
vi
A(vi)
• 定义网路上支路的容量为其最大通过能力,记为 cij , 支路上的实际流量记为 fij • 图中规定一个发点s,一个收点t • 节点没有容量限制,流在节点不会存储 • 容量限制条件:0 fij cij • 平衡条件:
v j A ( vi )
fij
v j B ( v i )
前向弧非饱和弧; 后向弧非零流弧。
• 最大流充要条件: 当且仅当不存在增广链时,可行流为最大流。
• 增广链中与 s 到 t 方向一致的弧称为前向弧,反之后向弧
s (5,1) (1,1) (1,1) (3,0) (5,3)
c ij f ij 前向弧 增广量 q = min qij q ij f ij 后向弧 = min (4,1,1,3,2)= 1 (5,2) (1,0) (1,0) (3,1) (5,4) s 2 3 4 5 t
qs2=4
2
q32=1
3
q43=1
4
q45=3
5
q5t=2
t
• 增广过程:前向弧 fij=fij +q , 后向弧 fij=fij q
• 增广后仍是可行流
4
SEU
最大流最小截的标号法步骤 第一步:标号过程,找一条增广链 1、给源点 s 标号[s+,q(s)=],表示从 s 点有无限流出潜力
SEU
下图为某一城市道路网络,路段均为双向,图中 数据(a )为道路通行能力(容量)。
求:从A、C两点到B点的最大网络运输能力(最大流量)。
(40) (10) (30)
A
(20) (10) (30) (20) (10)
B
(60)
1
(30)
(20)
C
(40)
(20)
SEU
1 网络与流
• 网路流一般在有向图上讨论
)
2 (12,10)
)
(1
3,1
(22
,2 2
)
+,2) (2 (5, 5
5
3) (6,
t (4+,2)
( 1 1 , 19 )
3
5)
,9)
(4,4)
4
(5,2)
7
SEU
最大流最小截集的标号法举例
) 4 1 4,
1
(16,15)
(3,1 )
(1 3,1
(1
6 ) 2
(7,5)
(22
,22
)
s
(15,10)
(4) (j, i)是后向弧,若 fji>0,则节点 j 标号为[i,q(j)],表示从节点 j 流 向 i,可增广 q(j)=min[q(i), fji] ;
3、重复步骤 2,可能出现两种情况:
(1) 节点 t 尚未标号,但无法继续标记,说明网路中已不存在增广链, 当前流 v(f) 就是最大流;所有获标号的节点在 V 中,未获标号节 点在 V 中,V 与 V 间的弧即为最小截集;算法结束
2、找出与已标号节点 i 相的连所有未标号节点 j,若
(1) (i, j)是前向弧且饱和,则节点 j 不标号; (2) (i, j)是前向弧且未饱和,则节点 j 标号为[i+,q(j)],表示从节点 i 正 向流出,可增广 q(j)=min[q(i), cijfij] ;
(3) (j, i)是后向弧,若 fji=0,则节点 j 不标号;
s
,9) (9
(15,9)
(s+,6)
(3,1
)
2 (12,10)
(1
3,1
6 2)
(22
,2 2
)
5
(6, 3)
t (4+,1)
( 0 1 , 19 )
3
(2,6)
4) 1 , 4
(4,3)
4
(3+,1)
6 2)
(7,5)
1
(16,15)
(1
(s+,)
s
(9
(15,10)
(6,
(s+,5)
(3,1
4
V5 5 Vt3 10 V6 Vt2
Vs3
5
5wk.baidu.com
Vs2
Vs
∞ ∞ Vs ∞
1
V2 Vs3 V3 Vs2 V4
V5
Vt1
∞ ∞
Vt3
Vt ∞
V6
Vt2
多收发点的最大流问题转化为单收发点的最大流问题
最大流问题作业
V2 (3,2) Vs (5,1) V3 (2,2) V6 (1,1) (1,1) (3,0) (2,1) (4,2) V5 (5,2) Vt
is v( f ) f ji 0 i s, t v( f ) i t
• 满足上述条件的网路流称为可行流,总存在最大可行流
• 当支路上 fij = cij ,称为饱和弧
• 最大流问题也是一个线性规划问题
2
SEU
2 截集与截集容量
定义:把网路分割为两个成分的弧的最小集合,其中一 个成分包含 s 点,另一个包含 t 点 。 • 一般包含 s 点的成分中的节点集合用V表示,包含 t 点 的成分中的节点集合用V表示 • 截集容量是指截集中正向弧的容量之和 C (V ,V ) cij
13
5)
2 (12,10)
(5, 5)
5
(6, 3)
t
( 1 1 , 19 )
最小截集
(1
,9) (9
3 1
(6,
(4,4) (16,15)
4
4) 1 , 4
(6,
(5,
5)
5)
(7,5)
(s+,)
s
(9
(15,12)
(s+,3)
(3,1
)
2 (12,12)
(1
3,1
6 2)
(22
,22
)
5
1) (6,