最大流问题ppt课件
前向弧集:与同向 后向弧集:与反向,
第11页
•可增广链
非饱和弧 f 是可行流,
f1 c1 f2 c2
非0流弧
8(8) v1 vfs3 05(4)
9(4) 2(0)
7(5)
v2 fn1 0
9(9)
若
0 0
fij fij
cij cij
每一个(vi , v j ) 每一个(vi , v 3
v2
(v1,v2)是不饱和的 间隙为12=c12-f12=5-3=2 第9页
弧关于流的分类
设f { fij}是网络D=(V,A,C)的一个可行流
3、如果fij=0,该弧是0流弧;
v1
cij=5 fij=0
v2
(v1,v2)是0流弧
4、如果fij>0,该弧是非0弧;
v1
cij=5 fij>0
则称为关于可行流f 的从vs到vt的可增广链。
v3 5(5)
6(1) vt
fn cn
v4 10(8)
ij
cij
fij
fij
(vi , v j ) (vi , v j )
min{ij} 0
f
'
fij fij
fij
v( f ') v( f )
(vi , v j ) (vi , v j )
的A中弧的集合记为 (V1 ,V1 )
则称这个弧的集合是分离点vs与点vt的割集(又称截集)。
割集的容量是割集中各弧的容量之和,用 c(V1,表V1示) 。
V1 {s, v1, v2},V1 {v3, v4, vt} V18(8)
K 9(4)
v1
v3 5(5)V1
割集 {(v1, v3), (v2 , v4 )}
9(4)
8(8) v1
v3 5(5)
2(0)
vs 5(4)
6(1) vt
7(5)
v2
v4 10(8)
9(9)
网络最大流问题
在容量网络中,寻求一个流 fij 使其流量v( f )最大
且满足 0 fij cij
(vt , vj ) A
v( f )
fi j
f ji
0
v( f )
(i s) (i s,t) (i t)
v2
(v1,v2)是非0弧
第10页
链及可增广链
9(4)
8(8) v1
v3 5(5)
•链
2(0)
vs 5(4)
6(1) vt
在的最方大 法流中问,题则中要,使研用究无的向是网有络向中7(5网的) 络链图。v。2 但是在求最v4大流10(8)
9(9)
D中,若为从vs到vt的一条链,给定向为从vs到vt ,
9
v1
5
2
v3 5
6
vt
容量 发点(源)
7
v2
v4 10
c D的每条弧(vi , v j )上有9 非负数 ij
一个入次为0的点 vs
收点(汇) 一个出次为0的点 vt
中间点
其余点
容量网络 D (V , A,C) 第6页
流
对D中任一弧(vi , v j )都给定一个实际流量fij
集合f { fij }
第八章 图与网络分析
• 图的基本概念与模型 • 树图和图的最小部分树 • 最短路问题 • 网络最大流问题 • 最小费用最大流问题
第1页
第八章 图与网络分析
• 图的基本概念与模型 • 树图和图的最小部分树 • 最短路问题 • 网络最大流问题 • 最小费用最大流问题
第2页
网络最大流问题
如同我们可以把一个实际的道路地图抽象成一个有向 图来计算两点之间的最短路径,我们也可以将一个有向图 看作一个流网络来解决另一类型的问题。
非增广链上的弧
割集的意义:若把某一割集的弧从网络中丢去,则 从vs到vt便割不集存和路割,集即的割容集量是从vs到vt的必经之道! 这里设(v有3,v网2)络不D=属{V于,此A,割C}集,点vs与点vt的是集合V中的任意
两点,若点集V被剖分成两个非空集合V1和V1( V \,V1使) vs V1 ,vt V1,记以 V1 中的点为始点,V1 中的点为终点
分析:就输油管网络问题,可用顶点表示油井、油 库和中间泵站,用有向边表示输油管,用有向边上 的权表示单位时间沿相应的输油管可以输送石油的 最大数量(容量)。
第4页
管道网络中每边的最大通过能力即容量是有限的,实际流
量也不一问定等题于的容提量,出上述问题就是要讨论如何充分利用
装置的能力,以取得最好效果(流量最大),这类问题通
2(0)
vs 5(4)
6(1) vt
割集的容量为 9+9=18
7(5)
v2 K
v4 10(8)
9(9)
第13页
考虑KK的不同画法
9(4)
8(8) v1
v3 5(5)
2(0)
vs 5(4)
6(1) vt
由合于C(有V1,限V1)网是络有的限割的集实只数有集有合7限(5,)多令个v,C2 0则 m截9(i9n)集{C容(Vv量14,V的1)1}0集(8)
常称为如最果大我流们问把题图。看做输油管道网,v为t 起点, v为s 终点,
为中v转1, v站2,,v3,边v4上的数表示该管道的最
大输油能力,问应该如何安排各管道输油量,才能
使从 v到s 的vt总输油量最大?
9
8
v1
2
vs 5
v3 5
6
vt
7
v2
v4 10
9
第5页
网络上流的基本概念
8
网络有向图D=(V,A,C) vs
此为一个特殊的线性规划问题,将会看到利用图的特点, 解决这个问题的方法要比单纯形法较为直观方便。
第8页
弧关于流的分类
设f { fij}是网络D=(V,A,C)的一个可行流
1、如果fij=cij,该弧是饱和弧;
v1
cij=5 fij=5
v2
(v1,v2)是饱和的
2、如果0≤fij<cij,该弧是非饱和弧;
流网络比较适合用来模拟液体流经管道、电流在电路 网络中的运动、信息网络中信息的传递等等类似的过程。
50年代福特(Ford)、富克逊(Fulkerson)建立 的“网络流理论”,是网络应用的重要组成部分。
第3页
问题的提出
在一个输油管网中,有生产石油的油井、储存石油的油库、 转运石油的中间泵站,同时,还有各种口径不同的输油管。 当一个输油管网给定后,单位时间内最多可把多少石油从油 井输送到油库?具体方案如何?
运输问题中,每个运
可行流 满足下面条件的流:
输方案就是一个流
(1)容量限制条件
0 fij cij
(2)中间点平衡条件 fki fij
k
j
用v( f )表示网络中从s 中t间的流 点量的输v(入f ) 量 输fsj 出 量f jt
j
j
任何网络必存在可行流,如流量为0的可行流:f {0}
合集下载
5-4 最 大 流 问题
(2)标号过程 标号过程
给起点v 标上标号( , 1给起点 s标上标号(-,+∞); ); (表示 s是源点(起点),能够得到任意多的量。 表示v 是源点(起点),能够得到任意多的量。 ),能够得到任意多的量 表示 vs称为已标记的点。让S表示已标记点的集合 S 表示 称为已标记的点。 表示已标记点的集合, 表示已标记点的集合 未标记点的集合, 未标记点的集合 VS ∈ S ) 2考察起点的所有相邻未标号点: 考察起点的所有相邻未标号 所有相邻未标号点 若存在以S中的点为起点, 若存在以 中的点为起点,以 S 中的点为终点的非饱 中的点为起点 [vi+ , ε j ] ,否则不加标记。 和弧( 否则不加标记。 和弧(vi,vj)则vj可标记为
从S出发到 S 终止的所有边的集合即割集。 终止的所有边的集合即割集。
v2
e1
e3 e6
v4
e8
v1
e2
e4 e7
v6
e5
v3
v5
e9
不包括从 S 出发到S终 止的边!
4、弧的分类
(1)在可行流X={xij}中,按流量的特征 在可行流X 分有: 分有: ①饱和弧——xij=bij 饱和弧 ②非饱和弧——xij<bij 非饱和弧 ③零流弧——xij=0 零流弧 ④非零流弧——xij>0 非零流弧
顶点3的标记化 顶点 的标记化: 的标记化 ∵ x s 3 = bs 3 , 但
正向饱和 弧 ∴不能从v 不能从
得到标记; 标记 s得到标记;
x
32
得到标记 标记。 > 0,故可从v2得到标记。
反向非零流
于是
ε ε3 = min { 2 , x 32 } = min {6 , 4 } = 4
8.4 网络最大流问题
所有指向为vs→vt的弧,称为前向弧,记作μ +;
所有指向为vt →vs的弧,称为后向弧,记做μ
-,
增广链:设 f 是一个可行流,μ是从vs 到 vt 的一条链,若μ满 足下列条件,称之为(关于可行流 f 的)增广链。
1)在(vi , vj)∈μ+上,0≤fij<cij,即μ+中的弧都是非饱和弧。
2)在(vi,vj)∈μ-上,0<fij≤cij,即μ-中的弧都是非零流弧。
§8.4 网络最大流问题
Page 22
(3) 检查与v3点相邻的未标号的点,因f3t<c3t,故对vt 标 l(vt)=min{l(v3), c3t-f3t } =min{1, 1}= 1 找到一条增广链 vs→v1→v2 →v3 →vt ( v , 1) 2 (-v v12, 1) (4,3) v4 (3,3) (5,3) (1,1) (1,1) (3,0)
v ( f ) f s1 f s 2 f 4 t f 3 t 5
§8.4 网络最大流问题
Page 25
例8.10 用标号算法求下图中vs→vt的最大流量,并找出最小 截。 v1 9(3) v3 8(7)
5(4) 5(4)
2(0)
vs
7(5)
6(1)
●
vt
10(8) v2 9(9) v4
§8.4 网络最大流问题
基本方法: (1)找出第一个可行流(例如所有弧的流量fij =0);
Page 14
(2)用标号的方法找一条增广链:
首先给发点vs标号(0,+∞),第一个数字表示标号从哪一点得到;
第二个数字表示允许的最大调整量。
选择一个点 vi 已标号且另一端未标号的弧沿着某条链向收
运筹学 第八章 图论 - 全
(a)明显为二部图,(b)也是二部图,但不明显,改画为(c) 时即可看出。
2017/7/13 11
图与网络的基本知识
次,奇点,偶点,孤立点 与某一个点vi相关联的边的数目称为 点vi的次(也叫做度),记作d(vi)。 右图中d(v1)=4,d(v3)=5,d(v5)=1。次 为奇数的点称作奇点,次为偶数的
2017/7/13
18
图与网络的基本知识
有向图 无向图
道路
回路
链
圈
道路(边的方向一致)
2017/7/13 19
图与网络的基本知识
连通图
定义10 一个图中任意两点间至少有一条链相连,则称此图为 连通图。任何一个不连通图总可以分为若干个连通子图,每 一个称为原图的一个分图(连通分支)。
连通图
2017/7/13
边,对余下的图重复这个步骤,直至无圈为止。
2、避圈法:每次增加一条边,且与已有边不构成圈,直至恰 有n-1条边为止。
2017/7/13
24
树
例1、下图是某建筑物的平面图,要求在其内部从每一房间都能走到 别的所有的房间,问至少要在墙上开多少门? 试给出一个开门的方案。
三
七
Байду номын сангаас
三 八 一 四 二 五
七 八 九 六
无向图
2017/7/13
有向图
8
图与网络的基本知识
环, 多重边, 简单图 如果边e的两个端点相重,称该边为 环。如右图中边e1为环。如果两个点 之间边多于一条,称为多重边,如右
v2 e5
多重边
e2
e1 v1
环
e3 v3
e4
图中的e4和e5,对无环、无多重边的
网络流——求网络最大流
4 1 4 8
4 2 2 6
7
9
(1,4) V2 (0,+∞) V1
(2,4) V4 (4,4) V6
(1,8)
V3
V5 (2,1)
4 1 4 8
4 2 2 6
7
9
(-4,2) V2 (0,+∞) V1 4 4
(3,2) V4 4
(4,2) V6
(1,8)
V3
V5 (3,2)
4 1 4 8
4 2 2 6
7
9
(5,2) V2 (0,+∞) V1 2 4 4 V4 6
(5,2) V6
2
(1,6)
V3
V5 (3,2)
4 1 4 8
4 2 2 6
7
9
V2 (0,+∞) V1 4 4
4
V4
6 V6 2
2 2
(1,4)
V3
V5
存储结构
const maxn=100; type nodetype=record{可改进路顶点类型 可改进路顶点类型} 可改进路顶点类型 l,p:integer;{标号、检查标志 标号、 标号 检查标志} end; arctype=record{网顶点类型 网顶点类型} 网顶点类型 c,f:integer;{容量、流量 容量、 容量 流量} end; gtype=array[0..maxn,0..maxn] of arctype; ltype=array[0..maxn] of nodetype; var lt:ltype; g:gtype; n,s,t:integer;{顶点数、源点、汇点 顶点数、 顶点数 源点、汇点} f:text;
增广后的F
5-5 最小费用最大流问题-xfj
v2
v3
(10, 0) ①流量调整量 总流量v(f 总流量v(f(1))=5
v2
v3
=min{8-0,5-0,7ε1=min{8-0,5-0,7-0}=5 ②最小费用增广链的费用 ∑bij=1+2+1=4 ③新的可行流为f(1),总费 新的可行流为f =4× 用b1=4×5=20
vs →v2 →v1 →vt
2、最小费用流 对于一个费用容量网络,具有相同 对于一个费用容量网络, 流量 v(f) 的可行流中,总费用b(f)最小的 的可行流中,总费用b(f)最小的 可行流称为该费用容量网络关于流量 v(f) 的最小费用流,简称流量为 v(f) 的最小 的最小费用流,简称流量为 费用流。 费用流。
3、增广链的费用 当沿着一条关于可行流 f 进行调整,得到新的可行流 f 进行调整, 称 b( f ) − b( f ) 的增广 ,则 链(流量修正路线)µ,以修正量 流量修正路线) ,以修正量ε=1 增广链µ的费用。 为增广链µ的费用。
v2
v3
即是f 的最小费用增广链。 即是f(1)的最小费用增广链
第3次迭代
-4 4
v1
-2 6
பைடு நூலகம்
-1
(10, 2)
v1
(7, 7) (2, 0)
vs
-1
1
vt
2 (8, 8)
vs
(5, 5)
vt
(4, 3)
v2
3
v3
①零流弧保持原边,非饱和非 零流弧保持原边, 零流弧增添后向弧, 零流弧增添后向弧,饱和弧去 掉原边增添后向弧 ②用列表法求得最短路
增广费用网络图的 增广费用网络图的构造方法 将流量网络中的每一条弧( 将流量网络中的每一条弧(vi,vj)都看 作一对方向相反的弧,并定义弧的权数如 作一对方向相反的弧, 下: vi (cij,fij) c vj
运筹学最大流问题
最小割是这些路中的咽喉部分, 其容量最小,
它决定了整个网络的最大通过能力。
四、最大匹配问题
|M |表示集合M中M的边数。
一个图的最大匹配中所含边数是确定的, 但匹配方案可以不同。
定义23 二部图G=(X,Y,E), M是边集E的子集, 若M中的任意
若不存在另一匹配M1, 使得|M1|>|M|, 则称M为最大匹配.
x5
y1x3y2x2y3x1
y4
x4
y5
x5
y1
x3
y2
x2
y3
x1
y4
x4
y5
vs
vt
1
1
1
1
1
1
1
1
1
1
1
1
如图,要求设计一个方案,使量多的人能就业。
(1,3)
(2,4)
(4,3)
(1,2)
(3,2)
(3,t)
(2,4)
(3,t)
(4,3)
(4,t)
(1,3)
(3,t)
15
(4,t)
21
17
18
19
24
14
25
15
割
容量
4-3、最大流-最小割定理
定理
定理2 (最大流-最小割定理) 任一网络G中, 从vs 到 vt 的
定义
设 f 为网络G=(V, E, C)的任一可行流, 流量为W ,
未标号点集合为 S = {v1, v2, v4, v5, v6, v7}
割集(S, S )= {(vs, v1), (vs, v2), (v3, v6)}
割集容量
可得到一个最小割. 见图中虚线.
它决定了整个网络的最大通过能力。
四、最大匹配问题
|M |表示集合M中M的边数。
一个图的最大匹配中所含边数是确定的, 但匹配方案可以不同。
定义23 二部图G=(X,Y,E), M是边集E的子集, 若M中的任意
若不存在另一匹配M1, 使得|M1|>|M|, 则称M为最大匹配.
x5
y1x3y2x2y3x1
y4
x4
y5
x5
y1
x3
y2
x2
y3
x1
y4
x4
y5
vs
vt
1
1
1
1
1
1
1
1
1
1
1
1
如图,要求设计一个方案,使量多的人能就业。
(1,3)
(2,4)
(4,3)
(1,2)
(3,2)
(3,t)
(2,4)
(3,t)
(4,3)
(4,t)
(1,3)
(3,t)
15
(4,t)
21
17
18
19
24
14
25
15
割
容量
4-3、最大流-最小割定理
定理
定理2 (最大流-最小割定理) 任一网络G中, 从vs 到 vt 的
定义
设 f 为网络G=(V, E, C)的任一可行流, 流量为W ,
未标号点集合为 S = {v1, v2, v4, v5, v6, v7}
割集(S, S )= {(vs, v1), (vs, v2), (v3, v6)}
割集容量
可得到一个最小割. 见图中虚线.
运筹学05.6最大流
前向弧(forward arc):与P的方向一致的弧 后向弧(backward arc):与P的方向相反的弧
2011-3-10
7
运筹学
Operations Research
(S Th1 设f是任一可行流, , S )是任一割,则 (1)val ( f ) ≤ c( S , S ) (2)val ( f ) = c( S , S ) ⇔ ( S , S )中的前向弧均为饱和弧, 后向弧均为零弧. ▌
5
运筹学
Operations Research
零流(zero flow):弧的流量都是0的流. 零流是可行流,且流值为0.
最大流(maximum flow):流值最大的可行流. N 最大流问题:在网络N 中找一个最大流.
弧的分类: (1)按流量和容量的大小关系分:
f 饱和弧(saturated arc): ( a ) = c(a )
不饱和弧(unsaturated arc):f ( a ) < c ( a )
2011-3-10
6
运筹学
Operations Research
(2)按流量和0的大小关系分: 零弧(zero arc): f ( a ) = 0 非零弧(nonzero arc,positive arc):f (a ) > 0 (3)按流量和有向路的关系分: 设P是一条有向(s,t)-路,其方向为s→ t.
可行流(feasible flow):
(1)∀a ∈ A,有0 ≤ f (a) ≤ c(a);
(2) f + ( s) = f − (t );∀v ∈ I,有f + (v) = f − (v).
流值(flow value):val ( f ) = f + ( s ) = f − (t )
最大流PPT课件
未标号,则给v j
(i,
一个标号
(
j)
min{x ji ,
(i)})
.
2.3 如果t已被标号,转3,否则转2.1.
.
12
Ford-Fulkerson算法
3. 根据得到的增广路上各顶点标号来增加流 量,抹去s外所有顶点标号,转2. 4. 此时当前流是最大流,且把所有标号点集 记为 S,则(S, S) 就是最小割.
0,f,vvi i
s s,
t
v jV
v jV
f,vi t
• 目标: max f xs*j x*jt
j
j
.
3
• 最大流问题的线性规划模型:
max f
s.t. xij f , vi t
vj
vj
xij x ji 0, vi s,t
.
5
3,1 s
2,2
3,2 s
2,2
v1 2,1 1,0
v3 2,2 v1 2,2
1,0 v3 2,2
v2 3,2
1,1
t
2,1 v4 v2
3,2
1,0
t
2,2 v4
.
6
• 一个弧割 (S, S) 若满足s S,t S ,则称为(s,t) 割,其
容量定义为C(S, S) cij . viS v jS
• 标号过程中,增加先标号先检查的原则.
.
16
• 整数假设 • 实数包含有理数和无理数. • 有理数就是分数,扩大若干倍可以变成整
数. • 而对于无理数,Ford和Fulkerson[1962]证
明了算法会收敛到一个不是最大流的流值. • 现实中流量是不会出现无理数的.
最大流算法
问题1:奶牛的新年晚会
奶牛们要举办一次别开生面的新年晚会。每头奶牛会做 一些不同样式的食品(单位是盘)。到时候他们会把自己最 拿手的不超过k样食品各做一盘带到晚会,和其他奶牛一起 分享。但考虑到食品太多会浪费掉,他们给每种食品的总盘 数都规定了一个不一定相同的上限值。这让他们很伤脑筋, 究竟应该怎样做,才能让晚会上食品的总盘数尽量的多呢? 例如:有4头奶牛,每头奶牛最多可以带3盘食品。一 共有5种食品,它们的数量上限是2、2、2、2、3。奶牛1会 做食品1…4,奶牛2会做食品2…5,奶牛3会做食品1、2、4, 奶牛4会做食品1…3。那么最多可以带9盘食品到晚会上。 即奶牛1做食品2…4,奶牛2做食品3…5,奶奶3做食品1、2, 奶牛4做食品1。这样,4种食品各有2、2、2、2、1盘。
网络流初步
◆ 最大流算法
◆ 最小费用最大流
◆ 最大流最小割定理
网络流之一
最大流算法
实例:
有一自来水管道输送系统,起点是S,目标是T, 途中经过的管道都有一个最大的容量。
4 7 4 1S 6 2 4 6 3 3
4
t
2
8 5
• 问题:问从S到T的最大水流量是多少?
4 7 1S 6
3 2
3 4 4
2 2-1=1
3
4
2
5
2
4
3
2 1
1
6
2 1
2
4
5
2 1
4、一条增广路径:
13 5
d=min{6-1,4-2} =2
2 2-1=1
3
4
2 2 1
5
增加流量: 2
Sum=5+2=7
2
4
3
网络最大流问题
以经过调整,得到一个新的可行流,其流量比原来的可
行流要大,重复这个过程,直到不存在关于该流的增广 链时就得到了最大流。
寻求最大流的思路:利用定理1中对V1*定义,根据vt是 否属于V1*来判断D中有无关于f的增广链。 实际计算时,可以用给顶点标号的方法来确定属 于V1*的点。
在标号过程中,有标号的顶点表示是V1*中的点,
l(v3) = min[l(v2), f32]=min[1, 1]=1
v2 (-v1,1) (4,3) (3,3) (0,+∞) vs (5,1) v1 (vs,4) (2,2) v4 (v2,1) (5,3) (3,0) (2,1) v3 (-v2,1) vt
(1,1)
(1,1)
(5) 在v3, v4中任选一个进行检查。
v4 (v2,1) (5,3)
(3,0) (2,1) v3 (-v2,1) vt (v4,1)
(二) 调整过程 (1) 按点的第一个标号找到一条增广链。
v2 (-v1,1) (4,3) (3,3) v4 (v2,1) (5,3)
(0,+∞) vs
(5,1)
(1,1)
(1,1)
(3,0)
(2,1)
vt (v4,1)
(2)未标号点。
标号过程: (1) 给发点 vs 标上 (0 , +∞) ;这时 vs 是标号而未检查
的点,其余都是未标号点。
(2) 取一个标号而未检查的点 vi,对于vi的所有未给 标号的相邻点vj按下列规则处理: (a)若在弧(vi,vj) 上,fij<cij,则给vj标号(vi,l(vj))。这 里l(vj)=min[l(vi), cij-fij]。这时点vj成为标号而未检查的点。 (b) 若在弧 (vj,vi)上, fji>0 ,则给 vj 标号 (-vi , l(vj)),这 里l(vj)=min[(l(vi),fij]。这时点vj成为标号而未检查的点。 这样,vj成为标号而已检查过的点。
