4网络最大流问题

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

(在 v5,v4) 是 链 (v 1 ,v 饱 2,v 3 ,v 和 4,fv 55 4, v 弧 6 c)中 54 v 1 (10,5)
(3,2) (4,1)
v5 (11,6) v 6
(3,3)
前向弧集合
(8,3)
(5,1)
{v(1,v2)(,v2,v3)(,v3,v4)(,v5,v6)}
(6,3) v3
Contents
图的基本概念 最小支撑树问题 最短路问题 最小费用最大流问题 中国邮递员问题 旅行售货员问题 匹配问题
To be continued
网络最大流问题
引例 基本概念 最大流算法 算例
Back
continued
引 例 假设某公路网的每条公路只允许单向行驶,
这样的公路网称为单行公路网.为了保证道路畅
c(V1,V2)
cij
(vi,vj)(V1,V2)
定理 1 可行流 f 是最大流的充要条件是不存 在关于f的增广链. 定理2 任一个网络D=(V,A,C)中,从vs到vt的 最大流的流量等于分离vs与vt的最小截集的容 量.
Back
二、求最大流的标号法(Ford,Fulkerson) 1 、标号过程
Back
一、基本概念
(一)、网络与流
一个有向图D=(V,A,C)称为一个网络.其中, V 是D的顶点集;A是弧集;C是各弧上容量集 {cij:cij=c(vi,vj)} .在V中指定了两个顶点vs,vt,分别 称为发点和收点,其余的顶点称为中间点.
定义弧集A上的一个函数
f:(vi,vj)→f(vi,vj) 简为记网为络f的ij. (一10个,5)流v,并2 称((3f5,(,2v2)i,)vj)为弧v 5((1v1i,,6v)j)上v 6的流量,
s.t.
v(f ),(i s)
fij fji 0,(is,t)
(vi,vj)A (vj,vi)A v(f),(i t)
(三)、增广链
1 、给定一个可行流f={fij},
fij cij的弧称为非饱和;弧fij cij的弧称为饱和弧 ; fij 0的弧称为非零流;弧fij 0的弧称为零流弧 .
(2)调整量:θ=l(vt),即vt的第二个标号;
(3)流的调整。令
fij fij
, ,
若(vi 若(vi
, ,
v v
j j
) )
,
fij,若(vi ,vj ).
去掉所有的标号,对新的可行流f’={fij’} 重新进入 标号过程。
通,交管部门对每条公路在单位时间内通过的车辆
数目要作一个限制.如图为一单行公路网.
问:单位时间内最多能有多少辆车从甲地(v1)出发 经过该公路网到达乙地(v6)?
v 2 (5,2)
(10,5)
(3,2)
Fra Baidu bibliotek
v5 (11,6) v 6
v1
(4,1)
(3,3)
(8,3) v3
(5,1) (6,3)
(17,2) v4
v1
(4,1)
(3,3)
(8,3)
(5,1)
(17,2)
(二)、可行流与最大流
1、可行流
一个流称为一个可行流,如果满足以下条件:
(1) 容量限制条件.
a ij (v i,v j) A 0 fij c i;j
(2) 平衡条件.
对中间点:流出量=流入量,即
i(is,t) fij fji0; (vi,vj) A (vj,vi) A
(17,2) v4
(四)、截集 1 、设S,T是V的真子集,S∩T= Ф,把始点在S,终 点在T中的所有弧构成的集合,记为(S,T).
2 、给定网络D=(V,A,C) ,若点集V被剖分为两个 非空集合V1,V2,使vs∈V1,vt∈V2,则弧集(V1,V2)称 为分离vs和vt的截集.
3 、截集(V1,V2)中所有弧的容量之和称为此截 集的容量,记为c(V1,V2),即
对于发点vs,
fsj fjsv(f);
(vs,vj)A (vj,vs)A
对于收点vt,
ftj fj tv(f).
(vt,vj) A (vj,vt) A
式中 v(f) 称为一个可行流的流量,即发
点的净输出量(或收点的净输入量)
2、最大流问题
maxv( f ) f
0fijcij,(vi,vj)A
2 、若μ是网络中联结发点vs和收点vt 的一条链,定 义链的方向是从vs到vt,则链上的弧被分为两类:一 类是弧的方向与链的方向一致,称为前向弧,前向弧 的全体记为μ+ ,另一类弧与链的方向相反,称为后 向弧,后向弧的全体记为 μ-。
3 、设f是一个可行流,μ是从vs到vt的一条链,称μ 为一条增广链,如果满足
2 、调整过程
(1)寻找以vt为终点的增广链----(反向追踪法):
若vt的第一个标vk号 (或为 vk),则弧(vk,vt )
(相应地 (vt ,vk ))是链 上的弧 。接下来检 vk的 查 第一个标 ,若 号为 vi (或vi ),则找(出 vi ,vk )(相应 地(vk ,vi ))。再检v查 i的第一个标 ,依 号此下,去 直到 vs为止 。此时被找的弧就增 构广 成链 了 。
(1)(vi,vj ) 0 fij cij,
即正向弧集中每一 是条 非弧 饱和; 弧
(2)(vi,vj ) 0 fij cij,
是一条增广链
即反向弧集中每一是条非弧零流后 弧 向弧 集 {合 v(5,v4
c 1 21,c 0 2 43 ,c 1 38 ,c 3 45 容量
f12 5 ,f24 2 ,f1 33 ,f34 1 流v 2量 (5,2)
开始:先给vs标上(0,+∞),此时vs是标号而未检查 的顶点,其余都是未标号顶点。一般地,取一个标 号而未检查的点vi,对一切未标号点vj: (1)若在弧(vi,vj)上fij<cij,则给vj标号(vi,l(vj)) ,这里 l(vj)=min(l(vi),cij-fij)。此时,点vj成为标号而未检 查的点。
(2)若在弧(vj,vi)上fji>0,则给vj标号(-vi,l(vj))。这 里l(vj)=min(l(vi),fji)。此时,点vj成为标号而未检 查的点。
于是,vi成为标号且已检查过的点。重复上述 步骤,一旦vt被标上号,表明得到一条从vs到vt 的增广链μ,转入调整过程。
若所有标号都已经检查过,而标号过程进行 不下去时,则算法结束。此时的可行流就是最 大流。
相关文档
最新文档