网络流简介
网络流
网络
区分两个概念:网络(或者流网络 Flow Network)与网络流(Flow)的概念。
网络是指一个有向图\(G = (V,E)\)。
每条边\((u,v) \in E\) 都有一个权值\(c(u,v)\),称之为容量,当\((u,v) \notin E\)时有\(c(u,v)=0\)。
其中有两个特殊的点:源点\(s \in V\)和汇点\(t \in V\),\((s \not= t)\)。
流
设\(f(u,v)\)定义在二元组\((u \in V,v \in V)\) 上的实数函数且满足以下性质:
-
容量限制:对于每条边,流经该边的流量不得超过该边的容量,即,\(f(u,v) \leq c(u,v)\)
-
斜对称性:每条边的流量与其相反边的流量之和为0,即\(f(u,v) = -f(v,u)\)
-
流守恒性:从源点流出的流量等于汇点流入的流量,即
\[\forall x \in V - (s,t),\sum_{(x,v) \in E}f(u,x) = \sum _{(x,v) \in E}f(x,v) \]
那么\(f\)称为网络\(G\)的流函数。对于\((u,v) \in E,f(u,v)\)称为边的流量,\(c(u,v) - f(u,v)\)称为边的剩余容量。整个网络的流量为\(\sum _{(s,v) \in E}f(s,v)\),即从源点出发的所有流量之和。
一般而言可以把网络流理解为整个图的流量。而这个流量未必满足上述三个性质。
流函数的完整定义为
网络流常见问题
网络流问题中常见的有以下三种:最大流,最小割,费用流
最大流
我们有一张图,求从源点流向汇点的最大流量(可以有很多条路到达汇点),就是我们的的最大流。
最小费用最大流
最小费用最大流问题是这样的:每条边都有一个费用,代表单位流量流过这条边的开销。我们要在求出最大流的同时,要求花费的费用最小。
最小割
割就是删边的意思,当然最小割就是删掉\(X\)条边来让\(S\)跟\(T\)不互通,我们要求从\(X\)条边加起来的流量综合最小。这就是最小割问题。