二分图与网络流 学习笔记
作者:互联网
二分图最大匹配 可行边和必经边
交错路径、交错环,取反可以得到新的方案。
考虑反向边,残量网络 scc 内的边为可行边。
必须边:\((u,v)\) 满流,并且在残量网络上 \(u,v\) 属于不同的 scc;
可行边:\((u,v)\) 满流,或者在残量网络上 \(u,v\) 属于相同的 scc。
最小割 可行边和必经边
残量网络存在路径 \(S\rightsquigarrow u\), \(v\rightsquigarrow T\),并且 \((u,v)\) 满流,\((u,v)\) 一定会割否则 \(S,T\) 连通。
小结论:最小割可行边在任何一个方案中一定是满流的。
必须边:\((u,v)\) 满流,并且残量网络中存在路径 \(S\rightsquigarrow u\), \(v\rightsquigarrow T\);
可行边:\((u,v)\) 满流,并且残量网络中 \(u,v\) 不在同一 scc 内;
二分图相关
- 最小点覆盖
- 最大独立集
- 最小边覆盖
定理:
- 最小点覆盖 = 最大匹配
- 最大独立集 = 点数 - 最大匹配 = 最小点覆盖的补集
- 最小边覆盖 = 点数 - 最大匹配 = 最大独立集
链覆盖
以下都在 DAG 中定义:
链:一个点集满足满足任意两点间存在路径;
反链:一个点集满足任意两点间没有路径。
最小可相交链覆盖通过传递闭包可以转化为最小不可相交链覆盖问题。
最小不可相交链覆盖中,因为每个点至多有一个入度和一个出度,所以这是个二分图最大匹配问题。
拆点 \(u_1,u_2\) 分别表示 \(u\) 的入点和出点,建立二分图 \(S\to u_2\), \(u_1\to T\)。
- 不可相交最小链覆盖
若存在边 \(\langle u,v\rangle\),则二分图中 \(u_2\) 向 \(v_1\) 连边。
- 可相交最小链覆盖
若 \(u\) 能够到达 \(v\),则二分图中 \(u_2\) 向 \(v_1\) 连边。
Dilworth 定理
最长反链 = 最小可相交链覆盖 = 总点数 - 二分图匹配数。
建图
- 拆点!
- 按时间建分层图
- 序列问题,串起来,考虑左右端点
- 满足不了数量限制,二分 / 枚举
最大权闭合子图
二分图最大权闭合子图
左部点权值为正,右部点权值为负,选一个左部点必须同时选择与其连边的右部点。求最大权闭合子图。
如果有边 \(u\to v\),那么闭合子图必须满足以下两个限制之一:
- \(u\) 不在闭合子图;
- \(v\) 在闭合子图;
二分图的最小割(中间为不可割边)恰好有“不割 \(S\to u\),则必须割 \(v\to T\)”的性质。
那么 \(S\to u\) 边不割代表 \(u\) 在,\(v\to T\) 边割代表 \(v\) 在。中间 \(u,v\) 以不可割边连接。
\(S\to u\) 边权为 \(-\mathrm{val}_u\),\(u\to T\) 边权为 \(\mathrm{val}_v\)。\(\sum\mathrm{val}_{\text{左部点}}\) + 最小割 即为答案。
一般图最大权闭合子图
以权值为正的点为左部点,以权值为负的点为左部点,转化为二分图最大权闭合子图问题。
上下界网络流
- 无源汇上下界可行流
强制满足下界,然后对流量不平衡的点,源汇给予流量,边权变为 \(r-l\),判断是否满流。
- 有源汇上下界可行流
源汇相连。
- 有源汇上下界最小 / 大流
第一遍跑 \(S\), \(T\) 可行流;
第二遍不考虑 \(s\to t\),跑 \(t\) 到 \(s\) 最大流,尽量退流。
- 有源汇上下界最小费用流
第一遍跑 \(S\) 到 \(T\) 最小费用最大流;
第二遍跑 \(s\) 到 \(t\) 最小费用流。
- 无源汇无下界最小费用流
每次找一个负环,使满流,做至多 \(m\) 次 SPFA。
- 无源汇上下界最小费用流
不可做。
如果有特殊限制:有流量上下界的边没有费用、有费用的边没有流量上下界。
那么按照无源汇上下界可行流建边,然后跑最小费用最大流。
费用流解决单点费用单调增的问题
费用为平方的形式,差分一下,费用呈 \(1,3,5,7\dots\) 增长,拆开建边,可以保证走的是一个前缀的和(必须保证差分后单调增)。
标签:二分,满流,可行,子图,网络,笔记,下界,最小 来源: https://www.cnblogs.com/renamoe/p/15017820.html