网络最大流问题

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

(7,2)
Vt
(2,2)
如图1(a)中,在路P={Vs , V1 , V2 , V4 , Vt}中 P+={(Vs , V1), (V2 , V4), (V4, Vt)} P-={(V2, V1)}
同一条弧可能在某条路中是前向弧,而在另外一条路中是 后向弧。如弧(V2, V1)在路P1={Vs , V1 , V2 , V4 , Vt}是后向 弧,而在路P2={Vs , V2 , V1 , V3 , Vt}是前向弧。 V2 (4,3) (4,0) (1,1) V4 (7,2) Vt (9,3) V3
V2
(4,0)
V4 (5,0) (3,0) (2,2) Vt
(3,0)
Vs (5,2) V1 (1,0)
(1,0)
(3) 调整
(2,2)
V3
(Vs,3) V2 (4,0)
(3,0) Vs (0,+∞) (5,2) (1,0) (1,0)
(V2,3) V4
(5,0)
(3,0)
(2,2)
Vt (4) (V4,3) 标号 (2,2)
(2,2) V1 (Vs,4)
V3
V2
(4,2) (1,0)
V4
(3,3)
Vs (1,1)
(5,2)
(3,0) Vt (3) 调整
(5,1)
V1 (2,2) V3
(2,2)
(-V1,1) V2 (4,2) (3,3) (1,0) (1,1) (5,1) (2,2) V1 (Vs,4)
V2 (4,3) Vs
(4,0)
V4 (7,2) (6,0) Vt (9,3) V3 (b)
(1,1)
(4,2)
(8,2) V1 (2,2) (2,2)
运输方案应满足: 1) 实际运输量不能是负的; 2) 每条弧的实际运输量不能大于该弧的容量; 3) 除了起点Vs和终点Vt外,对其它顶点来说,所有流入Vi的弧上 的运输量的和应该等于所有从Vi出发的弧上的运输量的和。
(4,0) (1,0)
V4 (3,0)
初始流为零流 (5,0) Vt (1)
(1,0)
(2,0)
Vs (0,+∞)
(1,0) (5,0) Vs的标号始 V1 终是(0,+∞) (Vs,5)
(3,0)
Vt (2) (V3,2) 标号 (2,0) Vt有标号了, 可以调整了
0表示VS 是起点
(2,0)
V3 (V1,2)
3 求网络最大流的标号法(2F,1957)
基本概念
设D=(V,A,C)中,有一可行流F={fij},按每条弧上流量的 多少,可将弧分四种类型: – 饱和弧, 即fij=Cij – 非饱和弧,即fij<Cij
– 零流弧, 即fij=0
– 非零流弧,即fij>0 V2 (4,0) (1,1) (6,0) V4 (7,2) Vt (9,3) V3
V1 (Vs,3)
V3
V2
(4,3) (1,0)
V4
(3,3)
Vs (1,0)
(5,3)
(3,0) (2,2) Vt (5) 调整
(5,2)
V1 (2,2) V3
V2
(3,3) Vs (0,+∞) (5,2) V1 (Vs,3) (1,0)
(4,3)
(1,0)
V4
(5,3) (3,0)
Vt
(6)
(2,2) 到这一步Vt的 (2,2) V3
(2,2) (2,2)
V2
(4,3) Vs (4,0) (8,4) V1
(4,2)
(1,1)
(2,2) (2,2)
现在的问题是:怎样检查一个流是不是最大?这里有一 个重要的结论: 设F是网络D的一个流,如果不存在从Vs到Vt关于F可 改进路P,那么F一定是最大流。(2F,1957) 因此求最大流的基本思路是: 取F={0}作为初始流 F存在可改进路? F是最大流 将F改为一个更大的流
0fijcij
(vi,vj)A
式中V(F)为该可行流的流量,即源点的净输出量,或汇 点的净输入量。 对于网络的流,可行流总是在存在的。如F={0}。
2) 最大流 在容量网络D=(V,A,C)中,满足以下条件的最大容量的 可行流,称为最大流:
(vi , v j ) A 0 f ij cij is V ( F ) f 0 f i s, t ij ji j j V ( F ) i t
下面我们具体地给出一种方法,利用这种方法就可以把 F改进成一个更好的流F1。这种方法是: (1)不属于可改进路P的弧(Vi,Vj)上的流量一概不变,即 F1ij=Fij (2)可改进路P上的所有弧(Vi,Vj)上的流量按下述规则变 化:(始终满足可行流的2个条件) 在前向弧(Vi,Vj)上,F1ij=Fij + α 在后向弧(Vi,Vj)上,F1ij=Fij – α 称α为可改进量,它应该按照下述原则确定: (1)α既要取得尽量大, (2)又要使变化后F1ij仍满足可行流的两个条件-容量限 制条件和平衡条件。 不难看出,按照这个原则,α既不能超过每条前向弧的 Cij-Fij,也不能超过每条后向弧的Fij。因此α应该等于前向弧 上的Cij-Fij与后向弧上的Fij的最小值。
网络流问题
网络流及其应用
网络最大流 容量有上下界的网络的最大流和最小流 最小费用最大流 容量有上下界的网络的最小费用最大流 图的顶点连通度 图的边连通度
一、网络最大流问题
例子:运输方案的设计: 图(a)是连接产品产地Vs和销售地Vt的交通网,每一条 弧(Vi,Vj)代表从Vi到Vj的运输线,产品经这条弧由Vi输送到 Vj,弧旁的数字表示这条运输线的最大通过能力(以后简称 容量)。产品经过交通网从Vs输送到Vt。现在要求制定一个 运输方案,使Vs运到Vt的产品数量最多。 V2 4 Vs 8 4 2 1 6 9 2 (a) 4 V4 7 Vt
(4,3)
Vs (4,2)
(8,2)
V1
(2,2)
(2,2)
设P是D中从Vs别Vt的一条链(有向路径),沿此方向, 各弧可分为两类: – 前向弧(与链的方向一致的弧),其集合记为P+ – 后向弧(与链的方向相反的弧),其集合记为P前向弧和后向弧是相对(相对指定的链)的。 V2 (4,3) Vs (4,2) (8,2) V1 (2,2) (4,0) (1,1) (6,0) (9,3) V3 V4
(1,1) (6,0)
(2,2) V1 (2,2)
S Vs ,V1 ,V2 ,V3 S V4 , Vt
Vs
(4,2)
(8,2)
C S , S C24 C14 C34 C3t 4 2 6 9 19

(二)最大流量最小割切定理
在一个给定的容量网络上,流的最大值等于割切容量的 最小值。
可改进量为0, 停止检查
标号法求可改进路径的实例2
V2
(3,2) Vs (5,1) V1 (2,2) V3 (V2,1) V4 (3,0) (5,1) (V4,1) Vt (2) 标号 (2,2) (1,1)
(4,1)
(1,0)
V4
(3,0)
初始流为非零流 (5,1)
Vt (1)
(2,2)
(Vs,1) V2 (4,1) (3,2) Vs (0,+∞) (5,1) (1,1) (1,0)
V2 (4,3) Vs (4,2) (8,2) V1
(4,0) (1,1)
V4 (7,2) (6,0) Vt
(2,2) (2,2) V3
(9,3)
现在的问题是: 1) 从Vs到Vt的运输量是否可以增多? 2) 从Vs到Vt的最大运输量是多少?
1 基本概念
(一)容量网络和网络流
1) 容量网络:D=(V,A,C) 设D是一个简单有向图( D=(V,A) )。在V中指定了一个 顶点,称为源点(记为Vs)和另一个顶点,称为汇点(记为 Vt),对于每一条弧(Vi,Vj)∈A,对应有一个Cij>0,称 为弧的容量。通常我们就把这样的D叫做一个容量网络, 记作D=(V,A,C)。 2) 网络流 – 流量:通过D中弧(Vi,Vj)的物流量fij,称为弧(Vi,Vj)上 的流量。 – 网络流:所有弧上流量的集合f={fij}称为该网络D的 一个网络流。
寻找可改进路是本算法的关键。(标号法)
标号法求可改进路径的实例1
V2 (3,0) Vs (5,0) (2,0) V V3 1 每个顶点的标号包含两个部分: +∞表示Vs可
以流出任意 第一标号指明它的标号从哪个顶点得到,以便找出可改进 (Vs,3) (V2,3) 多的流量 量; V2 (4,0) V4 (只要从它 发出的弧可 第二个标号是为确定可改进量 α用的。 (5,0) (3,0) 以接受) (1,0)
V2
(4,0) (1,1)
V4
(4,3)
Vs (4,2) (8,2) V1
(7,2)
(6,0) Vt (b) (9,3) V3
(2,2) (2,2)
在图(b)中,弧旁边括号中的两个数字(Cij,fij),第1个数字 表示弧容量,第二个数字表示通过该弧的流量。弧(Vs,V1)上 的(8,2),前者是弧容量,表示可通过该弧最大流量的能力 为8,后者是目前通过该弧的实际流量为2。 从图(b)中可见:1)通过每弧的流量均不超过弧容量;2) 源点vs流出的总量为3+2=5,等于流入汇点vt的总量2+3=5; 3)各中间点的流出量等于其流入量。中间点v2的流出量减去 其流入量等于0,即3-(2+1)=0
Vs
(4,2)
(8,2) V1 (2,2) (2,2)
(6,0)
这一点在最小费用最大流里要用到。
可改进路(增广链) 设F是一个可行流,P是从Vs到Vt的一条路,若P满足 下列条件:
1) 在P的所有前向弧(Vi,Vj)上,0≤fij<Cij,即 P+ 中的每 一条弧都是非饱和弧;
2) 在P的所有后向弧(Vi,Vj)上,0<fij≤Cij,即 P- 中的每 一条弧是非零流弧。 则称P为关于可行流F的一条可改进路。 那么,为什么将具有上述特征的路P叫做可改进路,原 因是可以通过修正P路上所有流量fij来把现有的可行流F 改进成一个值更大的流F1。
V2
(4,3) Vs (4,2) (8,2பைடு நூலகம் V1
(4,0)
(1,1)
V4
因此α至多取2, Vt 这样既可以使 (6,0) (9,3) 改进后的前向 弧上的流量有 V3 所增加,又可 以使改进后的 V4 后向弧上的流 (7,4) 量在减少α之后 不变负数。这 V (6,0) t 个改进过程见 (9,3) 左图,改进后 V3 的流的值为7。 (7,2)
2 最大流最小割切定理(2F定理)
Ford, Fulkerson, 1956 (一)割切
容量网络(V,A,C),S是V的一个子集,满足:起点Vs S, 终点Vt S,令 S V S 。起点在S,终点在 S 的所有弧的 集合,称为割切,用 ( S, S ) 表示。容量用 C(S, S ) 表示。 V2 (4,3) (4,0) V4 (7,2) Vt (9,3) V3
(二)可行流与最大流
1) 可行流 在容量网络D=(V,A,C)中,满足以下条件的网络流F, 称为可行流: (1)弧流量限制条件 (2)平衡条件 流入量 流出量
当i s V ( F ) 0 f f 当i s, t ij ji j j V ( F ) 当i t
V1
V3
可行的运输方案: 1) 2百吨物资沿着有向路径P1(Vs,V2,V1,V4,Vt)运到销售地 2) 2百吨物资沿着有向路径P2(Vs,V1,V3,Vt)运到销售地 3) 1百吨物资沿着有向路径P3(Vs,V2,V3,Vt)运到销售地 (在下图中每条边旁边两个数字如(4,3)分别代表容量和实际流量)
即:
min minCij Fij , min Fij
P P


V4 (7,2) (6,0) Vt (9,3)
V2 (4,3) Vs (4,2) (8,2)
(4,0)
(1,1)
(2,2)
(2,2) V1 V3 图(b)给出了一条可改进路P(Vs,V1,V2,V4,Vt)。现在就按 照上面讲的方法将流F改进成一个更好的流。首先应该定出改 进量α,先看P的前向弧集合 P+={(Vs,V1),(V2,V4),(V4,Vt)}: Cs1-Fs1=8-2=6,C24-F24=4-0=4,C4t-F4t=7-3=4 再看P的后向弧集合 P-={(V2,V1)},在这条弧上F21=2。
相关文档
最新文档