Unverified Commit 16b350ef authored by Shuhao Zhang's avatar Shuhao Zhang Committed by GitHub
Browse files

add some introduction in flow.md

parent d620c78d
Loading
Loading
Loading
Loading
+16 −17
Original line number Diff line number Diff line
网络流在 OI 中是显得尤为重要的。在《算法导论》中就用了 35 页来讲述网络流的知识,在这里,给大家介绍网络流的一些基知识。
网络流在 OI 中是显得尤为重要的。在《算法导论》中就用了 35 页来讲述网络流的知识,在这里,给大家介绍网络流的一些基知识。

## 最大流

先认识一下 $S$ ($source$) 和 $T$ ($sink$) 的概念。$S$ 就是常说的源点,$T$ 就是汇点(也就是起点和终点,这个跟最短路的概念是一样的)。我们有一张图,要求从源点流向汇点的最大流量(可以有很多条路到达汇点),就是我们的最大流问题。

求解最大流问题有三种常见算法:Edmonds-Karp 算法,Dinic 算法,ISAP 算法。
## 网络流的基本概念

## 最小费用最大流
容量:网络中的每条有向边$(x,y)$都有一个给定的权值,称为边的容量,记为$c(x,y)$。

最小费用最大流问题是这样的:每条边都有一个费用,代表单位流量流过这条边的开销。我们要在求出最大流的同时,要求花费的费用最小
源点、汇点:网络中的两个特殊节点。流量从源点产生,最后全部归于汇点。源点用$S$表示,汇点用$T$表示

最小费用最大流解法:最简单的就是 EK+SPFA,也推荐用 zkw 费用流和原始对偶匹配算法。
流量:对于网络中的每条边$(x,y)$,$f(x,y)$被称为该边的流量。流量需要满足以下三条性质:
1. 容量限制:对于每条边,流经该边的流量不得超过该边的容量,即$f(x,y) \leq c(x,y)$。
2. 斜对称性:每条边的流量与其相反边的流量之和为0,即$f(x,y)=f(y,x)$。
3. 流量守恒:从源点流出的流量等于汇点流入的流量。

## 最小割
## 网络流的常见问题

割其实就是删边的意思,当然最小割就是割掉 $X$ 条边来让 $S$ 跟 $T$ 不互通。我们要求 $X$ 条边加起来的流量综合最小。这就是最小割问题
网络流问题中常见的有以下三种:最大流,最小割,费用流

其中我们要认识一个定理: **最小割**=**最大流**
## 最大流

### 建模
我们有一张图,要求从源点流向汇点的最大流量(可以有很多条路到达汇点),就是我们的最大流问题。

在会了最大流和费用流后,建模显得尤为重要。就像 ZJOI 的 [狼与羊的故事](https://www.luogu.org/problemnew/show/P2598),就是一个例子。
## 最小费用最大流

**前期**遇到这种题目,暴搜?神奇 BFS?错误。我们首先要考虑一下会不会有**二分图匹配****最小割**的模型(一般不会有普通的最大流)。然后建立(超级)源点和(超级)汇点。什么意思?就是当很多个源点和很多个汇点的时候,我们就可以用超级源点和超级汇点代替「源点」和「汇点」的位置(也就是把超级源点连向各个源点,超级汇点连向各个汇点,方向按题意来定)
最小费用最大流问题是这样的:每条边都有一个费用,代表单位流量流过这条边的开销。我们要在求出最大流的同时,要求花费的费用最小

这是最常见的建模的方法之一,也是做二分图匹配的方法。还有很多建模方法,可以参考 [网络流建模基础](https://www.cnblogs.com/victorique/p/8560656.html)
## 最小割

来一道题练练手: [沙耶的玩偶](https://www.luogu.org/paste/z3085b8l)
割其实就是删边的意思,当然最小割就是割掉 $X$ 条边来让 $S$ 跟 $T$ 不互通。我们要求 $X$ 条边加起来的流量综合最小。这就是最小割问题