第四节最大流问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

V2
( 4 , 3)
V4
( 5 , 3)
饱和弧
VS
(5, 1)
( 1 , 1) ( 1 , 1)
(3, 0)
VT
( 2 , 1)
V1
前向非饱和弧
(2, 2)
V3
后向弧非零
注意: 1有改善潜力的链 2 对每一个节点:进 = 出 3 从VS出发总量4 = 到达VT总量4
第七章 图与网络(3)
(1)给VS标号(V0,M),(2)检查VS,弧(VS,V2)已不能标号,弧(VS,V1) 可以标号,L(v1)=min(L(vs),5-1)=min(M,4)=4.(3)检查V1,弧 (V1,V3)已不能标号,V2是后向弧,L(V2)=min(4,1)=1,给V2标号 (-v1,1).

三.标号法


从网络中的一个可行流 f 出发(如果 D 中没 有f,可以令f是零流),运用标号法,经过标号 过程和调整过程,可以得到网络中的一个最大流。 用给顶点标号的方法来定义 V1*. 在标号过程 中,有标号的顶点是 V1* 中的点,没有标号的点 不是 V1* 中的点。如果 vt 有了标号,表示存在一 条关于f 的增广链。如果标号过程无法进行下去, 并且vt 未被标号,则表示不存在关于f的增广链。 这样,就得到了网络中的一个最大流和最小截集。
重要的作用

4 .网络系统的最大流问题
v1
10 3 4 5 8 17 3 5
v3
Cij
11
vs
vt
v2
6 图8.19
v4
图8.19是一个网络。每一个弧旁边的权就是对应的容量(最大通 过能力)。要求指定一个运输方案,使得从vs 到vt 的货运量最大, 这是寻求网络系统的最大流问题。
二 基本概念
定义 8.5 设一个赋权有向图 D = ( V,A ) , 在 v 中指定一个 发点 vs 和一个收点 vt, 其他的点叫做中间点。对于 D 中的 每一个弧( vi,vj )∈ A, 都有一个权 cij 叫做弧的容量。 我们把这样的图 D 叫做一个网络系统,简称网络,记做D =(V,A,C)。
第四节 最大流问题



网络流的基本概念 求解网络最大流的基本原理 寻找网络最大流的标号法 确定网络中最大流的方法
一 引言

在许多实际的网络系统中都存在着流量和最大流问题。 例如铁路运输系统中的车辆流,城市给排水系统的水流问 题等等。而网络系统流最大流问题是图与网络流理论中十 分重要的最优化问题,它对于解决生产实际问题起着十分



2.调整过程 从vt 开始,按照标号点的第一个标号,用 反向追踪的方法,找出一条从vs 到vt 的增广链 μ,如图8.22中双箭线所示。 不 难 看 出 ,μ+={(vs,v1),(v3,vt)},μ={(v2,v1),(v3,v2)}, 取θ=1,在μ上调整f,得到 fs1+θ=1+1=2 在μ+上 f3t+θ=1+1=2 在μ+上 f*= f21-θ=1-1=0 在μ-上 f32-θ=1-1=0 在μ-上 其他的不变
V2(-v1,1)
(Cij,fij)
(5,3)
Vs
(5,1)
(3,0)
(1,1)
Vt
(2,1)
V1
(2,2)
V3
图8.21





例8.8: 求图8.21的网络最大流,弧旁的权数 表示(cij,fij)。 解.用标号法。 1.标号过程。 (1)首先给vs 标号(0,+∞) (2)看vs:在弧(vs,v2)上,fs2=cs3=3,不具备标号 条件。在弧 (vs,v1) 上 ,fs1=1<cs1=5, 故给 v1 标号 (vs, l(v1)), 其中 l(v1)=min[l(vs),(cs1-fs1)]=min[+∞,51]=4. (3)看v1:在弧(v1,v3)上,f13=c13=2,不具备标 号条件 . 在弧 (v2,v1) 上 ,f21=1>0, 故给 v2 标号( -v1, l(v2)),其中l(v2)=min[l(v1),f21]=min[4,1]=1.
V2
(3,3)
(4,3) (1,0)
V4
(Cij,fij)
(5,3)
Vs
(0,+∞)
(3,0)
(1,0)
Vt
(5,2)
(2,1)
V1
(vs,3)
(2,2)
V3
图8.23
第七章 图与网络(3)
有一个运输网络(单行道),已知道路的运输能力和运量,如何发挥最大运力
(最大运量Cij , 实际运量Fij) ( 3 , 3)
网络系统上流的特点: (1)发点的总流出量和收点的总流入量必相等; (2)每一个中间点的流入量与流出量的代数和等于零; (3)每一个弧上的流量不能超过它的最大通过能力(即 容量)。
定义8.6 网络上的一个流 f叫做可行流,如果f满足以下 条件 (1)容量条件:对于每一个弧(vi,vj)∈A,有 0 fij cij . (2)平衡条件: 对于发点vs ,有∑fsj -∑fjs =v(f) 对于收点vt ,有∑ftj -∑fjt =-v(f) 对于中间点,有∑fij -∑fji =0 其中发点的总流量(或收点的总流量)v(f)叫做这个 可行流的流量。

网络D上的流,是指定义在弧集合A上的一个函数 f={f(vi,vj)}={fij } f(vi,vj)=fij 叫 做 弧 在 (vi,vj) 上 的 流量。
v1
(5)
(2) (2)
v3
fij
(6)
vs
(1) (1) (3)
(3)
vt
(2)
v2
(3)
v4
图8.20网络上的一个流(运输方案) 每一个弧上的流量fij 就是运输量 例如fs1=5,fs2=3,fFra Baidu bibliotek3=2等等
4.网络系统的最大流问题

定义8.8 设一个网络D=(V,A,C)。如果点集V被剖 分为两个非空集合V1和V2,发点vs∈V1,收点vt∈V2,那 么将弧集(V1,V2)叫做是分离vs 和vt 的截集。 定义8.9 设一个截集(V1, V2).将截集(V1,V2) 中所有的弧的容量的和叫做截集的截量,记做 s(V1,V2),亦即s(V1,V2)=∑cij 。 (vi,vj)∈(V1,V2) 下面的事实是显然的:一个网络 D 中,任何一个可行 流 f 的流量 v(f) 都小于或等于这个网络中任何一个截 集(V1,V2)的截量。并且,如果网络上的一个可行流f* 和 网 络 中 的 一 个 截 集 ( V1*,V2* ) , 满 足 条 件 v*(f*)=c(V1*,V2*), 那 么 f* 一 定 是 D 上 的 最 大 流 , 而 ( V1*,V2* )一定是 D 的所有的截集中截量最小的一个 (即最小截集)。




任意一个网络上的可行流总是存在的。例如零流 v(f)=0,就是满足以上条件的可行流。 网络系统中最大流问题就是在给定的网络上寻求一个 可行流f,其流量v(f)达到最大值。 设 流 f={fij} 是 网 络 D 上 的 一 个 可 行 流 。 我 们 把 D 中 fij=cij 的弧叫做饱和弧, fij<cij 的弧叫做非饱和弧, fij>0的弧为非零流弧,fij=0的弧叫做零流弧。 设μ是网络D中连接发点νs和收点vt 的一条链。定义 链的方向是从vs 到vt ,于是链μ上的弧被分为两类: 一是弧的方向与链的方向相同,叫做前向弧,前向弧 的集合记做μ+。二是弧的方向与链的方向相反,叫做 后向弧,后向弧的集合记做μ-。
在下图(图8.19与8.20合并图)中,(v4,v3)是饱和弧, 其他的弧是非饱和弧,并且都是非零流弧。
v1
(10,5)
(5,2)
v3
fij
(11,6)
(3,2) (4,1)
vs
(3,3)
vt
(5,1) (17,2) (6,3)
(8,3)
v2
v4
如图,在链(vs,v1,v2,v3,v4,vt)中, μ+={(vs,v1),(v1,v2),(v2,v3),(v4,vt)}, μ-={(v4,v3)}.
2.调整过程
首先按照 vt 和其他的点的第一个标号,反向追踪, 找出增广链。例如,令vt 的第一个标号是vk,则弧 (vk,vt )在μ上。再看vk 的第一个标号,若是vi, 则弧(vi,vk )都在μ上。依次类推,直到vs 为止。这 时,所找出的弧就成为网络D的一条增广链μ。取调 整量θ= l(vt) ,即vt 的第二个标号,



调整后的可行流 f*,如图8.23所示,再 对这个可行流从新进行标号过程,寻找增广 链。 首先给vs 标号(0,+∞),看vs ,给v1 标 号 ( vs,3 ) 。 看 v1, 在 弧 ( v1,v3 ) 上 , f13=c13,弧(v2,v1)上,f21=0,均不符合条件。 因此标号过程无法进行下去,不存在从VS到 Vt 的增广链,算法结束。 这时,网络中的可行流 f*即是最大流, 最大流的流量V(f*)=fs1+fs2=5.同时,也找出 D的最小截集(V1,V2),其中V1是标号的集合, V2是未标号的集合。
1. 标号过程
在标号过程中,网络中的点或者是标号点(分为已 检查和未检查两种)。或者是未标号点。每个标号点 的标号包含两部分:第一个标号表示这个标号是从那 一点得到的。以便找出增广链。第二个标号是为了用 来确定增广链上的调整量θ。 标号过程开始,先给 vs 标号( 0 , +∞ )。这时 vs 是 标号未检查的点,其他都是未标号点。一般地,取一 个标号未检查点vi,对一切未标号点vj:
增广链,如果链μ满足以下条件: 1.在弧(vi,vj)∈μ+上,有0<=fij<cij,即μ+中的每一条弧是 非饱和弧。 2.在弧(vi,vj)∈μ-上,有0<fij<=cij,即μ-中的每一条弧是 非零流弧。
例如在图 8.20 中,链 μ= ( vs,v1,v2,v3,v4,vt )就是一条增广链。 设图D=(V , A,C),点集 S,TV,S∩T=ф中。将起点在 S ,终点 在T 的所有弧作成集合,记做(S,T)。


定理8.8:网络中的一个可行流f*是最大流的充分必要条 件是,不存在关于f*的增广链。 定理8.9:在一个网络D中,最大流的流量等于分离vs和vt 的最小截集的截量。 定理8.8实际上提供了一个寻求网络系统最大流的 方法:如果网络D中有一个可行流f,只要判断网络是否 存在关于可行流f的增广链 。如果没有增广链,那么f 一定是最大流。如有增广链,那么可以按照定理8.9, 不断改进和增大可行流f的流量,最终可以得到网络中 的一个最大流。
fij ,当(vi v j ) , 令fij fij , 当(vi v j ) 其他不变
再去掉所有的标号,对新的可行流f’={f’ij},重新 进行标号过程,直到找到网络D的最大流为止。
V2 (4,3)
(3,3) (1,1)
V4
1 ) 如 果 在 弧 ( vi,vj ) 上 , fij<cij, 那 么 给 vj 标 号 ( vi,l(vj) ) . 其中 l(vj)=min[l(vi),cij-fij]. 这时, vj 成为标号未检查的点。 2 )如果在弧( vj,vi )上, fij>0, 那么给 vj 标号( -vi, l(vj) ) . 其中 l(vj)=min[l(vi),cij-fij]. 这时, vj 成为 标号未检查点。 于是vi成为标号已检查的点。重复以上步骤,如果 所有的标号都已经检查过,而标号过程无法进行下去, 则标号法结束。这时的可行流就是最大流。但是,如 果 vt被标上号,表示得到一条增广链 μ ,转入下一步 调整过程。



( 4 )看 v2: 在弧( v2,v4 )上, f24=3<c24=4, 故给 v4 标 号 ( v2 ,l(v4) ) 其 中 l(v4)=min[l(v2),(c24f24)]=min[1,1]=1.在弧(v3,v2)上,f32=1>0, 故给v3标号(-v2,l(v3)), 其(l(v3)=min[l(v2),f32]=min[1,1]=1。 ( 5 )在 v3,v4 中任意选一个,比如 v3, 在弧( v3,vt ) 上 , f3t=1<c3t=2, 故 给 vt 标 号 (v3,l(vt)), 其 中 l(vt)=min[l(v3),(c3t-f3t)]=min[1,1]=1. 因为 vt 被 标上号,根据标号法,转入调整过程。
相关文档
最新文档