网络流学习笔记摘要
一.流函数的性质
1.容量限制:
\(f(x,y)<=c(x,y)\)。
2.斜对称:
\(f(x,y)=-f(y,x)\)。
3.流量守恒:
除源点和汇点外,任何节点流入总量等于流出总量。
网络流:在不超过容量限制的前提下,“流”从源点源源不断地产生,流经整个网络,最终全部归于汇点。
二.最大流
1.定义:
使得整个网络的流量(也可以理解为从源点流出来量)最大的流函数。
2.用途:
可解决二分图最大匹配/多重匹配问题。
3.Edmonds-Karp增广路算法
(1)算法思想:不断用 BFS 寻找增广路,直至网络中不存在增广路为止。
(2)重点:反向边的用途:给程序“反悔”的机会。
(3)时间复杂度:\(O(nm^2)\)。一般能处理\(10^3\)~\(10^4\)规模的网络。
(4)代码
4.Dinic算法
三.最小割
1.定义:
边的容量之和最小的割。
2.最大流最小割定理:
任何一个网络的最大流量等于最小割中边的容量之和。
3.构造:
求出最大流后,从源点开始沿残量网络 BFS,标记能够到达了点。E 中所有连接“已标记的点 \(x\)”和“未被标记的点 \(y\)”的边\((x,y)\) 构成网络的最小割。
四.费用流
1.定义:
总花费最小的最大流被称为最小费用最大流;
总花费最大的最大流被称为最大费用最大流。
(前提是最大流,然后再考虑费用)。
2.用途:
可解决二分图带权最大匹配。
3.Edmonds-Karp增广路算法
“用 BFS 寻找一条包含边数最少的增广路”改为“用 SPFA 寻找一条费用之和最小的增广路”。
注:反向边权应为\(-w(x,y)\)。

浙公网安备 33010602011771号