网络流(一)基础知识篇
传送门:
网络流(一)基础知识篇
网络流(二)最大流的增广路算法
网络流(三)最大流最小割定理
网络流(四)dinic算法
网络流(五)有上下限的最大流
网络流(六)最小费用最大流问题
转载自:https://blog.csdn.net/txl199106/article/details/64441994
网络流入门
基本概念(从书上摘抄,可以直接跳过不看)
容量网络和网络最大流
容量网络: 设 G(V, E)
是一个有向网络, 在 V 中指定了一个顶点, 称为源点(记为 Vs ), 以及另一个顶点, 称为汇点(记为 Vt); 对于每一条弧 <u, v>∈E
, 对应有一个权值 c(u, v)>0, 称为弧的容量
, 通常把这样的有向网络 G 称为容量网络。
也就是指: 一个拥有源点、汇点并且可以容纳流量的图.
弧的流量: 通过容量网络 G 中每条弧 <u, v>
上的实际流量(简称流量), 记为 f(u, v)
。
网络流: 所有弧上流量的集合 f = { f(u, v) }
,称为该容量网络 G 的一个网络流。
可行流: 在容量网络 G(V, E)
中, 满足以下条件的网络流 f, 称为可行流:
- 弧流量限制条件:
- 平衡条件: 除了 Vs, Vt 外, 其余的点流入的流量总和等于流出的流量总和, 其中
Vs 流出的流量总和 - 流出的流量总和 = f
,Vt 流入的流量总和 - 流出的流量总和 = f
, 并且称f
为可性流的流量.
也就是指: 在图中有一条从 Vs 到 Vt 的路径, 这条路径上起点 , 终点 , 其他的点 , 并且所有的边的当前流量小于等于最大流量.(其中 代表流入流量, 代表流出流量)
伪流: 如果一个网络流只满足弧流量限制条件, 不满足平衡条件, 则这种网络流称为伪流, 或称为容量可行流。
最大流: 在容量网络 G(V, E)
中, 满足弧流量限制条件和平衡条件、且具有最大流量的可行流, 称为网络最大流, 简称最大流。
链与增广路
在容量网络 G(V, E)
中, 设有一可行流 f
= { f(u, v) }
, 根据每条弧上流量的多少、以及流量和容量的关系,可将弧分四种类型:
- 饱和弧, 即 ;
- 非饱和弧,即 ;
- 零流弧, 即 ;
- 非零流弧, 即 。
链: 在容量网络中,称顶点序列为一条链,要求相邻两个顶点之间有一条弧,
如 <u, u1>
或 <u1,
u>
为容量网络中一条弧。沿着 Vs 到 Vt 的一条链, 各弧可分为两类:
- 前向弧: 方向与链的正方向一致的弧, 其集合记为
P+
; - 后向弧: 方向与链的正方向相反的弧, 其集合记为
P-
;
增广路: 设 f 是一个容量网络 G 中的一个可行流, P 是从 Vs 到 Vt 的一条链, 若 P 满足下列条件:
- 在 P 的所有前向弧
<u, v>
上, , 即P+
中每一条弧都是非饱和弧; - 在 P 的所有后向弧
<u, v>
上, , 即P–
中每一条弧是非零流弧。
则称 P 为关于可行流 f 的一条增广路, 简称为 增广路(或称为增广链、可改进路)
。沿着增广路改进可行流的操作称为增广
残留容量与残留网络
残留容量: 给定容量网络 G(V, E)
及可行流 f, 弧 <u,
v>
上的残留容量记为 。每条弧的残留容量表示该弧上可以增加的流量。因为从顶点
u 到顶点 v 流量的减少, 等效于顶点 v 到顶点 u 流量增加, 所以每条弧 <u, v>
上还有一个反方向的残留容量 。
一个容量网络中还可以压入的流量称为残留容量
残留网络: 设有容量网络 G(V,
E)
及其上的网络流 f,G 关于 f 的残留网络(简称残留网络)记为 G'(V',
E')
, 其中 G’的顶点集 V’和 G 的顶点集 V 相同,即 V’=V, 对于 G 中的任何一条弧 <u,
v>
, 如果 ,
那么在 G’中有一条弧 <u, v>∈E'
, 其容量为 ,
如果 ,则在
G’中有一条弧 <v, u>∈E'
, 其容量为 ,
残留网络也称为剩余网络
.
由残留的容量以及源点汇点构成的网络。
割与最小割
割: 在容量网络 G(V, E)
中, 设 E'⊆E
,
如果在 G 的基图中删去 E’ 后不再连通, 则称 E’ 是 G 的割。割将 G 的顶点集 V 划分成两个子集 S 和 T = V - S。将割记为(S, T)。
s-t 割: 更进一步, 如果割所划分的两个顶点子集满足源点 Vs ∈ S
,汇点 Vt
∈ T
, 则称该割为 s-t 割
。 s-t 割(S, T)中的弧 <u,
v>(u∈S, v∈T)
称为割的前向弧, 弧 <u, v>( u∈T, v∈S)
称为割的反向弧。
割的容量: 设 (S, T)
为容量网络 G(V,
E)
的一个割, 其容量定义为所有前向弧的容量总和, 用 c(S, T)
表示。
最小割: 容量网络 G(V, E)
的最小割是指容量最小的割。
相关定理
残留网络与原网络的关系
设 f 是容量网络 G(V, E) 的可行流, f’ 是残留网络 G’ 的可行流, 则 f + f’ 仍是容量网络 G 的一个可行流。(f + f’ 表示对应弧上的流量相加)
网络流流量与割的净流量之间的关系
在一个容量网络 G(V, E) 中, 设其任意一个流为 f, 关于 f 的任意一个割为(S, T), 则有 ,即网络流的流量等于任何割的净流量。
网络流流量与割的容量之间的关系
在一个容量网络 G(V, E) 中, 设其任意一个流为 f, 任意一个割为(S, T), 则必有 ,即网络流的流量小于或等于任何割的容量。
最大流最小割定理
对容量网络 G(V, E), 其最大流的流量等于最小割的容量。
增广路定理
设容量网络 G(V, E) 的一个可行流为 f, f 为最大流的充要条件是在容量网络中不存在增广路。
几个等价命题
设容量网络 G(V, E)的一个可行流为 f 则:
- 1) f 是容量网络 G 的最大流;
- 2) | f |等于容量网络最小割的容量;
- 3) 容量网络中不存在增广路;
- 4) 残留网络 G’中不存在从源点到汇点的路径。