最近两个月在做《线性规划与网络流24题》这套题,加深了对网络流的理解。
涵盖到的模型有:二分图匹配、二分图的最大独立集、最大权闭合图、有向无环图的最小路径覆盖、最多不相交路径、最大权不相交路径、区间k覆盖、最短路。第13题涉及到与二分法的结合(其实也可以逐层枚举)。
二分图匹配
设二分图G=(V, E)的两个顶点集为X, Y。
- s->Xi,费用为0,按需赋容量。
- Xi->Yj,(Xi, Yj)属于E,费用为边权,按需赋容量。
- Yj->t,费用为0,按需赋容量。
求(最小费用)最大流。
二分图的最小覆盖集
点权之和最小的覆盖集
- s->Xi,容量为点权。
- Xi->Yj,(Xi, Yj)属于E,容量为inf。
- Yj->t,容量为点权。
求最小割,由最大流最小割定理,求解最大流即可。
定义不包含容量为inf的边的割为简单割。本网络中,最小割是简单割。
什么叫覆盖集?对于每条边,其两端点至少有一个被选中。割的性质是不连通:任何一条s-t路径上,至少有一条边属于割集。这里所有的s-t路径由3段构成,中间的Xi->Yj容量为inf,不属于简单割。因此,二分图的覆盖集和简单割一一对应。最小割是容量最小的简单割,也是点权之和最小的覆盖集。
对于不带权的二分图图,令所有点点权=1。以这种方式我们求出的是其最小覆盖集,也是其最大