24
8.2 网网网网网 网网网网网网网网网 网网网网网网 网网网网网网网网网网网网网 一,, 网网网网网网网网 网网网网网网网网网网网网网网网网 一。 网网网网网网网网网网网网网网网网网网网

8.2  网络最大流

  • Upload
    thad

  • View
    72

  • Download
    0

Embed Size (px)

DESCRIPTION

8.2  网络最大流. 运输网络问题是很大一类网络问题,通过介绍有些运输网络问题,可以使我们建立起一些处理网络问题的基本概念和方法。 这里涉及的运输网络问题只是考虑简单情况。. 一、运输网络 1. 运输网络的定义 定义 8.7 :一个带权有向图 G=(V,E) 若满足如下条件: (1) G 是连通无自环的; (2) 每条弧 ( i,j) 的权 cij 为非负整数,称为弧的容量, cij 全体所构成的集合记为 C ; (3) 存在 2 个不同的顶点 s 和 t 。 - PowerPoint PPT Presentation

Citation preview

Page 1: 8.2  网络最大流

8.2  网络最大流

运输网络问题是很大一类网络问题,通过介绍有些运输网络问题,可以使我们建立起一些处理网络问题的基本概念和方法。

这里涉及的运输网络问题只是考虑简单情况。

Page 2: 8.2  网络最大流

一、运输网络1. 运输网络的定义定义 8.7 :一个带权有向图 G=(V,E) 若满足如下条

件: (1)G 是连通无自环的; (2) 每条弧 (i,j) 的权 cij 为非负整数,称为弧的容量,

cij 全体所构成的集合记为 C ; (3) 存在 2 个不同的顶点 s和 t 。则称该有向图为运输网络 , 简称网络,记为

N(V,E,C) 。称 s 为发点 , t 为收点 , 除 s和 t 以外其它顶点称为中间点。 C 称为容量函数。

Page 3: 8.2  网络最大流

2. 运输网络 N 中的流定义 8.8 :在网络 N(V,E,C) 的弧集 E 上定义了一个

非负整值函数 f={fij}, 称 f 为网络 N 上的流 , fij 称为弧 (i,j) 上的流量。若无弧 (i,j), 则 fij 定义为 0 。设流f 满足下列条件 :

(1) 容量限制条件:对每一条弧 (i,j), 有 fij≤cij 。 (2) 平衡条件:除 s和 t 外的每个中间点 k, 有 即流出和等于流入和。

对于 s和 t 有则称 f 为网络 N 的一个可行流 , Vf 为流 f 的值 , 或称 f 的流量。

若 N 中无可行流 f', 使 Vf'>Vf, 则称 f 为最大流。

Vj

jkVi

ki ff

fVi

tiVj

jtVj

jsVi

si Vffff

Page 4: 8.2  网络最大流

定义 8.9 :若 fij=cij, 则称弧 (i,j) 是饱和的 ; 若fij<cij, 则称弧 (i,j) 是未饱和的。若 fij=0, 则称弧 (i,j)是 f-0 的 ; 若 fij>0, 则称弧 (i,j)是 f- 正的 .

现在的关键是如何求最大流的值。

Page 5: 8.2  网络最大流

3.运输网络 N中的割 定义 8.10:设N(V,E,C)是有一个发点 s和一个收点 t的网络。若 V划分为 P和P , 使 sP,tP ,则从 P中的点到P中的点的所有弧集称为分离 s 和 t 的割,

记为(P,P )。 如图 8.6中虚线所示, P={s,a,c},P ={b,t}。 若从网络 N中删去任一个割, 则从 s到 t之间不存在有向路。 要说明的是,对同一 s,t,割不唯一.

Page 6: 8.2  网络最大流

割(P,P )的容量是它的每条弧的容量之和,记为 C(P,P )即:

PjPiijcPPC

,

),(

对于不同的割, 它的容量显然是不同的。

对网络中 N 中的割 (P, P ),若不存在割 (P', 'P )使C(P', 'P )< C(P,P ),则称(P,P )为最小割。 讨论网络中流与割的关系

Page 7: 8.2  网络最大流

4 . 运 输 网 络 中 流 和 割 的 关 系定 理 8 . 4 : 对 于 给 定 的 网 络 N = ( V , E , C ) , 对 任一 可 行 流 f 和 任 一 割 ( P , P ) , 成 立 V f C ( P , P ) 。证 明 : 因 为 f 是 可 行 流 , 根 据 流 的 平 衡 条 件可 知 :对 于 发 点 s P 有

fVj

jsVi

si Vff

( 1 )

对 于 P 中 不 是 发 点 s 和 收 点 t 的 中 间 点 k 有

Vj

jkVi

ki ff

0 Vj

jkVi

ki ff ( 2 )

Page 8: 8.2  网络最大流

此定理给出了流 f的上界 C(P,P )。 由于对任意的流和割都有 Vf

C(P,P ),

因此一定有 VfmaxCmin(P,P )。

Page 9: 8.2  网络最大流

二、最大流最小割定理引理:对于给定的网络 N=(V,E,C), 若可

行 流 f 和 割 (P,V-P), 成 立 Vf=C(P,V-P) ,则 Vfmax=Vf , Cmin(P,V-P)=C(P,V-P)。

因此求最大流的一个想法就是构造流和割,使得流量和割容量相等。

Page 10: 8.2  网络最大流

福 特 , 富 克 逊 (Frod,Falkerson) 于 1956 年给出的最大流最小割定理

基本思想:1 )对任意网络构造初始流。零流 , 或其他可行流。2 )在初始流基础上寻找可增加流的路,

这样的路称为增广路。并在寻找增广路的同时,计算在该路上可增加多少流。

3 )若找到了从 s到 t 的可增加流的路,则修改流,得到新的可行流。然后转回2 )

Page 11: 8.2  网络最大流

(1) 怎样找增广路(2) 如果找不到这样的增广路,是否此时

的流就是最大流?

Page 12: 8.2  网络最大流

1. 寻找增广路的方法设 u为 s到 t 的路(不考虑弧的方向)(1) 先考察该路上与路方向一致的弧 ( 称

为向前弧 ) 。若路上所有弧均为向前弧,且每条弧的

流量 < 相应弧的容量,则可增加流的路。对于向前弧 (i,j), fij 是否 <cij。可增加流的通路,采用标号法。

Page 13: 8.2  网络最大流

1) 对源点 s 标号 (-)2) 设点 i 已经标号, j 点没有标,对于向

前弧 (i,j) ,若 fij<cij ,则点 j 标号 i+ ;若fij=cij ,则点 j 不标号。

3) 若收点 t 最后被标号,如 t 点被标号c+ ,则找到了从 s到 t 的增广路。

还需要知道这条路可增加多少流量,以便修改流。

Page 14: 8.2  网络最大流

1) 对源点 s 标号 (-),令 Δs=+∞。2) 设点 i 已经标号,增量为 Δi, j 点没有

标,对于向前弧 (i,j) ,若 fij<cij ,则点 j 标号 i+,

Δj=min{Δi, cij- fij}

若 fij=cij ,则点 j 不标号。3) 若收点 t 最后被标号,如 t 点被标号

c+, Δt=min{Δc, cct- fct} ,这就找到了从s到 t 的增广路,可增加的流量是 Δt。

修改流时,为满足平衡条件,对该路上所有弧流量 +Δt。

Page 15: 8.2  网络最大流

若按此方法找不到增广路,是否就结束?否还可采用下面的方法(2) 如果 u 中部分弧的方向与路的方向相反

( 称这样的弧为向后弧 ) 。如下图所示。

s到 t 的路 s,b,c,t ,这里弧 (c,b) 与路的方向相反。按前面的方法无法解决,对于这类情况需要新的方法

如果在这路上的向前弧 (s,b), (c,t) 都已经饱和,则显然该路不可能是增广路。如果 (s,b), (c,t) 没有饱和,且在前面的的标号过程中, b 点已经标号, s+, Δb.是否有增广路,取决于向后弧 (c,b) 的流 fcb,

如果 b 点已经标号,(s+,Δb) ,且 fcb>0 ,则c 点标号 (b-,Δc),这 里 Δc=min{Δb, fcb}。

Page 16: 8.2  网络最大流

0) 对任意网络构造初始流。 1) 对源点 s 标号 (- , +∞) 。 2) 设点 i 已经标号,增量为 Δi, j 点没有标, i) 对于向前弧 (i,j) ,若 fij<cij ,则点 j 标号 (i+,Δj), 这里 Δj= min{Δi, cij- fij}若 fij=cij ,则点 j 不标号。 ii) 对于向后弧 (i,j) ,若 fji>0 ,则 j 点标号 (i-,Δj), 这里 Δj=min{Δi, fji}。若 fij=0 ,则点 j 不标号。 (3) 重复第 2 步,直到 i) 若收点 t 最后被标号 (x+,Δt) ,这就找到了从 s到 t 的

增广路,可增加的流量是 Δt。 修改流时,对该路上所有向前弧流量 +Δt ,向后弧上的

流量减少 Δt ,并以此结果作为新的流,转向 1) 。 ii) 若不再有新的顶点被标号,且 t 仍没有被标号,则说

明网络中的流为最大流

Page 17: 8.2  网络最大流

定理:用上述标号法在算法停止时得到的一定是最大流。

证明:算法停止时 , 已经标号的点构成集合 P ,没有标号的构成 V-P ,则 (P,V-P)构成割。然后证明网络中的流的值就等于该割的容量。

关于算法有 2 点要说明:1) 在某点有多种标号选择时,可任意选

择 1 种进行标号。2) 初始流不一定是零流,只要是可行流

即可。

Page 18: 8.2  网络最大流
Page 19: 8.2  网络最大流
Page 20: 8.2  网络最大流

8.3 图与二分图的匹配一、匹配的概念定义 8.11 :在图 G=(V,E) 中 , M 是边集

E 的子集 , 并且 M 中没有两条边相邻 , 称M是 G 的一个匹配。

定 义 : 若 M 中 的 一 边关联于顶点 v, 则称 v为关于 M 饱和的。M 中的边的两端点称为在M 下配对。

定义 :若 G 中每一个顶点是关于 M 饱和的 , 则称 M为 G 的完美匹配。

一个图不一定存在完美匹配

Page 21: 8.2  网络最大流

完美匹配不一定唯一 .定理 : 无自环的图 G, 若它有完美匹配 ,

则 |V(G)| 为偶数 .定义:若 G 中不存在匹配 M', 使 |M'|>|

M|, 则称 M为 G 的最大匹配。

图可能有许多不同的最大匹配。完美匹配必是最大匹配 , 反之不一定。如果 G 有完美匹配 , 则它的任一最大匹配是否一定为完美匹配 ?

Page 22: 8.2  网络最大流

二、匹配的基本定理首先引进 2 个定义。定义 8.12 :设 M是 G 的一个匹配 , (1) 若在 G 中有一条路 , 它的边在 E-M和M 中交错地出现 , 则称该路为关于 M 的交错路。

(2) 若关于 M 的交错路的起点和终点不是关于M 饱和的 , 则称该路为关于 M 的增广路。

Page 23: 8.2  网络最大流

定理:关于 M 的增广路中属于 E-M 的边数比属于 M 的边数多 1 。

定理 8.8 :在图 G 中 ,M 是最大匹配当且仅当G 中不包含关于 M 的增广路。

证明:用反证法。假设 G 中存在关于 M 的增广路 p,

构造 M’=Mp证明( 1)M’ 是匹配 (2)|M’|=|M|+1假设 M 不是最大匹配 , 则存在匹配 M', 使 |

M'|>|M| 。设由 MM’导出的图 G(MM’) 记为 H, 它的每个分支或者是交错路 , 或者是交错回路。由此证明 H 中存在关于 M 的增广路

Page 24: 8.2  网络最大流

作业 :P188 12,14,15,16