- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vV
(f f )(u, v) (f (u, v) f (u, v)) f (u, v) f (u, v))
vV vV vV vV vV
0 0 0. | f f | (f f )( s, v) (f ( s, v) f ( s, v)) f ( s, v) f ( s, v)) | f | | f |.
xX
f ( x, y)
yY
将流守恒性表示为对所有u∈V-{s,t},有f(u,V)=0 同时,为方便起见,f(s,V-s)=f(s,V),项V-s就是 指集合V-{s}.
26.1 流网络
引理 26.1 设G=(V,E)是一个流网络,f是G中的 一个流。那么下列等式成立:
1) 对于所有X V, f(X, X) 0. 2) 对所有X,Y V,f ( X , Y ) f(Y, X). 3) 对所有X, Y, Z V , 其中X Y , 有 f(X Y, Z) f(X, Z) f(Y, Z)且 f(Z, X Y) f(Z, X) f(Z, Y).
但是,在运输和流之间有一点细微差别。Lucky Puck公司可以将球从Edmonton运输到Calgary,也可 以从Calgary运输到Edmonton.假设每天运输8箱从 Edmonton到Calgary,每天有3箱从Calgary到 Edmonton。而将这些运输线路直接表示成网络流似 乎很自然,但是实际上不能这样做。因为这样做违 背反对称性的要求。
26.2 Ford-Fulkerson方法
设G=(V,E)是源点为s,汇点为t的流网络,且 f1,f2是G中的流。对于所有u,v∈V,定义 (f1+f2)(u,v)=f1(u,v)+f2(u,v) (*) 引理 26.2 设G=(V,E)是源点为s,汇点为t的流 网络,且f是G中的一个流。设Gf是由f导出的残 留网络,且f’是Gf中的一个流.则f+f’是G中 的一个流,其值为| f+f’|=|f|+|f’|.
26.1 流网络
根据流守恒性,除了源点和汇点外,对于所有顶 点而言,进入顶点的总的正流量等于离开该顶点 的总的正流量.根据定义,源点顶点总的净流量 大于0;而汇点是唯一一个其总的净流量小于0的 顶点. | f | f ( s, V ) f (V , V ) f (V s, V ) f (V s, V ) f (V , V s ) f (V , t ) f (V , V s t ) f (V , t )
26.1 流网络
Lucky Puck公司可能会意识到每天从Edmonton运8 箱至Calgary以及3箱从Calgary到Edmonton没有意 义的。因为这与他们每天从Edmonton运5箱到 Calgary,从Calgary运0箱到Edmonton的效果是一样 的。这样做可以节省成本。用流f(v1,v2)=5和 f(v2,v1)=-5来表示后一种情形。从效果看,从v1 到v2每天8箱中的3箱被从v2到v1每天的3箱抵消了。
26.2 Ford-Fulkerson方法
本节将讨论解决最大流问题的Ford-Fulkerson 方法。之所以称为“方法”而不是“算法”, 是因为它包含具有不同运行时间的几种实现。 Ford-Fulkerson方法依赖于三种重要思想,它 们与该算法以外很多有关流的算法和问题密切 相关。这三种思想是:残留网络、增广路径和 割。这些思想是最大流最小割定理的精髓,该 定理用流网络的割来描述最大流的值。本节中 给出Ford-Fulkerson方法的特定实现,并分析 它的运行时间。
26.1 流网络
流网络是一个有向图G=(V,E),其中每条边(u,v) 均有一非负容量c(u,v)≥0.如果(u,v)不是E中的边, 则假定c(u,v)=0。流网络中有两个特别的顶点:源 点s和汇点t。为方便起见,假定每个顶点均处于从 源点到汇点的某条路径上。
26.1 流网络
现在对流给出形式化定义。设G=(V,E)是一个流网 络,其容量函数为c。设s为网络的源点,t为汇点。 G的流是一个实值函数f:V×V→R,且满足下列三个 性质: 容量限制:对所有u,v∈V,要求f(u,v)≤c(u,v) 反对称性:对所有u,v∈V,要求f(u,v)=-f(v,u) 流守恒性:对所有u∈V-{s,t},要求 f (u, v) 0 称f(u,v)是从顶点u到顶点v的流。 vV f(u,v)可以为正、为零、为负。 流f的值定义为: f | | f ( s, v ) vV 即从源点出发的 总流(|·|表示流的值,并不表示绝对值或势)
26.1 流网络
通常,用抵消处理,可以将两城市间的运输用一个 流来表示。该流在两个顶点之间至多一条边上是正 的。也就是说,任何在两城市间相互运输球的情况 都可以通过抵消将其转化成一个相等情形,球只在 一个方向上运输:沿正向流的方向。 以后我们在讨论算法时将隐式地利用抵消处理。
26.1 流网络
对流的处理: 如果X和Y是顶点的集合,则 f ( X , Y )
26.2 Ford-Fulkerson方法
(u,v)的残留容量。由下式定义:
c f (u, v) c(u, v) f (u, v)
例如:c(v1,s)=0,f(v1,s)=-11,则 cf(v1,s)=c(v1,s)-f(v1,s)=0-(-11)=11.
26.2 Ford-Fulkerson方法
26.2 Ford-Fulkerson方法
Ford-Fulkerson-Method(G,s,t) 1 Initialize flow f to 0 2 While there exists an augmenting path p 3 do augment flow f along p 4 Return f
vV vV
26.2 Ford-Fulkerson方法
增广路径及其残留容量:
已知一个流网络G=(V,E)和流f,增广路径p是残 留网络Gf中从s到t的一条简单路径. 根据残留网络的定义,在不违反边容量限制下, 增广路径上的每条边(u,v)可以容纳从u到v的某 额外的正网络流.定义增广路径p的残留容量为 沿一条增广路径p的每条边传输的网络流的最大 量,由下式定义: cf(p)=min{cf(u,v)|(u,v)是p上的边}
第26章 最大流
主讲:杨智应 zyyang@ 上海海事大学信息工程学院
最大流问题是关于流网络的最简单问题:在不 违背容量限制的条件下,把物质从源点传输到汇点 的最大速率是多少? 这个问题可以由有效的算法来解决。本章介绍 最大流问题的两种求解方法。分别是FordFulkerson方法、压入与重标记方法。
给定一流网络G=(V,E)和流f,由f压得的G的残留 网络Gf=(V,Ef),其中 Ef={(u,v)|cf(u,v)>0} 也就是说,在残留网络中,每条边(称为残留 son方法
26.2 Ford-Fulkerson方法
Ef中的边既可以是E中的边,也可以是它们的反 向边。 •如果(u,v)是E中的边f(u,v)<c(u,v),那么 cf(u,v)=c(u,v)-f(u,v)>0,因此(u,v)是残留边。 •如果f(u,v)>0,则f(v,u)=-f(u,v)<0, cf(v,u)=c(v,u)-f(v,u)>0,因此(v,u)是残留边。 •如果(u,v)和(v,u)都不是G中的有向边,则 c(u,v)=c(v,u)=0,从而f(u,v)=f(v,u)=0, cf(u,v)=cf(v,u)=0,因此(u,v)和(v,u)都不是残 留边。于是有|Ef|≤2|E|.
26.1 流网络
在最大流问题中,给定一个具有源点s和汇点t的流 网络G,希望找出从s到t的最大值流。
26.1 流网络
下面我们看看关于流的三个性质: (1)容量限制说明从一个顶点到另一个顶点的网 络流不能超过设定的容量。 (2)反对称性说明从顶点u到顶点v的流是其反向 流的取负。 (3)流守恒性说明从非源点或非汇点的顶点出发 的总网络流为0. 由此得: f (u, v) 0
26.2 Ford-Fulkerson方法
解决最大流问题的Ford-Fulkerson方法是一种 迭代方法。开始时,对所有u,v∈V,有f(u,v)=0 即初始状态时流的值为0.在每次迭代中,可通 过“增广路径”来增加流值。增广路径可以看 作是从源点s到汇点t之间的一条路径。沿该路 径可以压入更多的流,从而增加流的值。反复 进行这一过程,直到增广路径都被找出为止。 最大流最小割定理将说明在算法终止时,这一 过程可产生出最大流。
26.2 Ford-Fulkerson方法
残留网络:直观上,给定流网络和一个流,其 残留网络由可以容纳更多网络流的边所组成。 假设有一个流网络G=(V,E),其源点为s,汇 点为t,f是G中的一个流。考察一对顶点u,v∈V。 在不超过容量c(u,v)条件下,从u到v之间可以 压入的额外网络流量,就是(u,v)的残留容量。 c 由下式定义: f (u, v) c(u, v) f (u, v) 。 例如:c(s,v1)=16,f(s,v1)=11,则 cf(s,v1)=c(s,v1)-f(s,v1)=16-11=5. 在不超过边(s,v1)的容量限制的条件下,可以 再传输5个单位的流量来增加f(u,v).
uV
即进入一个顶点的总流为0.
26.1 流网络
当(u,v)和(v,u)都不在E中,则u,v之间不可能有网 络流。即f(u,v)=f(v,u)=0. 正网络流: f (u , v) 进入一个顶点v的总的正网络流定义为:
uV f ( u ,v ) 0
离开某个顶点的正网络流定义为:
uV f ( v ,u ) 0
26.1 流网络
网络流的一个实例: 从表面看,将运输“流”模拟成网络流是非常合式 的。因为每天从一个城市运输到另一个城市的箱数 受到容量限制。此外必须遵守流守恒性质。在一种 稳定状态下,球进入运输网络中间某个城市的速度, 要等于它们离开该城市的速度,否则就会有球堆积 在中间城市中。