网络流基础模型小记 Ⅰ
这篇博客主要记录我这周学习网络流基础的心得,有一些基本的模型。
二分图、DAG、无向图 上的那些经典模型可能会放在之后的博客。咕。
技巧
1. 拆点、点边互化
我理解的拆点指:拆成入点和出点;原图边为出点向入点,点内边为入点向出点,入点出点分别连源汇或汇源。
拆点可以将入点和出点看做二分图的两部分,也可以不看成二分图。
流量限制(割:割去的代价)
流量限制(上限 / 下限 / 上下界)针对边,拆点、点边互化对点限制。
例如:拆点限制点的经过次数、数轴区间模型中点边互化可以限制两边中间的点。
拼合路径
DAG 最小路径覆盖及变种。出点作为左部点,入点作为右部点,形成二分图。
若路径起点需要额外费用,则由源点向入点连边,跑费用流。
2. 按费用拆点、拆边
通常是每次经过的费用不同,比如“修车”中的“师傅点”,又如边“第一次经过”才有贡献。
此时可以按费用的不同拆成不同的点和边。
通常费用流的贪心会保证正确性,而手动贪心可以动态加边加点减小网络规模(存疑)。
3. 动态加边加点
流量和费用在过程中累加(比如 Dinic() 的结果累加)。
第一种:见 \(2\) 中内容,这样贪心不会破坏费用流凸性(存疑),就不会生成负环(存疑)。
第二种:伴随枚举。如:“魔术球问题”。
4. 绑定(割)
建权值为 \(\inf\) 的边。
5. 求一方案
通常会在跑完网络流的图上考虑,判断边是否未流过/是否流经/是否满流。
对于最小割,要分别从 \(S,T\) 出发染两种颜色,从而定下关键割边(颜色 \(S\to T\))。(存疑)
模型——流
1. 流模拟路径
用流模拟多条路径,源点连起点,终点连汇点,流量限制途径路径条数。
通常需要精细分析点、边经过次数的限制,从而正确地赋流量,否则可能需要进行一些奇怪的特判。也许有时网络流和题目要求不符,不得不特判。
2. 激活流量
本质:流模拟路径。
即向某个点通入流后,它会激发出某大小的流。同时要求每个点都被经过。
-
对每个点建立流量供应点,先从源点输送对应大小的流。直接用这些流去更新其他点,并限制每个点都被经过。唯一的问题是自己的流激活自己,此时要求无环(DAG),由题目保证或缩点。若拆点,则流量供应点连向出点。
-
可以搭配“强行激活”的操作,即用本该被激活的流“走到自己”。若拆点,则流量供应点连向入点。
也就是说我们当成所有流一开始就被激活了,但是真正应当被激活的流量无法满足“走到”的限制;强行激活可以走到自己。
限制的方式:
- 不吞流量:拆点,用点内边限制。
- 吞流量:不拆点,用到汇点的边限制(针对这吞掉的流量)。
例题:P2469 [SDOI2010] 星际竞速、D. For the Emperor!。前者不拆点(用点到汇点的边限制,即用最大流限制;从流量供应点连向原图边所连向的点),后者的题解(正确性存疑):link。
另外,如果激活的流量都是 \(1\) 且 每个点吞 \(1\) 的流量,这其实就是 DAG 最小路径覆盖(或其变种),如前一道例题(此题可以用“激活流量”、“拼合路径”两种方式理解)。
3. 区间覆盖
本质:流模拟路径。
二种模型的思想都是用流模拟覆盖,想象一下流沿数轴从左向右推进的过程。
区间路径划分(区间集合划分)
不交区间之间连边,限制路径数,用流模拟选择路径。
数轴区间
可以看做前者的优化。建出数轴,区间表示为数轴上的额外连边。数轴上的流量表示未被覆盖,区间上的流量表示覆盖次数。若限制多个区间的流量和较难,不妨转化为数轴上流量的限制。
对于开区间可以直接连边,对于闭区间点边互化为开区间。可以离散化。
- 覆盖次数 \(\leq\) 的限制:限制总流量。
- 覆盖次数 \(\geq\) 的限制:限制数轴上的容量。
4. 自动机
本质:流模拟路径。
基于自动机建图跑网络流,自动机:字符串或 DP(对 DP 的有效转移建自动机)。
例题:P2766 最长不下降子序列问题。
5. 流量平衡
即用流量模拟运输(可以就是流量的运输),对于要运出 \(x\) 的点 \(u\),连边 \((S\to u,x)\);对于要运入 \(y\) 的点 \(v\),连边 \((v\to T,y)\),即容量为需要的减量/增量。
原图边正常建,容量根据意义定。可以加费用。
或许也可以通过数学式子建模。
模型——割
最小割的建模和网络流关系不大,但实现和求方案都和网络流密切相关。
技巧:绑定即建权值为 \(\inf\) 的边,表示无法切断;否则可以切断。
二集合划分。
1. 连通性
割掉边有代价,有的边不能割。要求 \(S,T\) 不连通,求最小割。
注意边是有向边还是无向边。(非常存疑)
平面图最小割
等于对偶图最短路。
这里的对偶图和通常的不一样,外围的平面是分开的。(没仔细想,存疑)
割断路径
即处理“不存在某种路径”的限制。
让可能作为路径开头的点连源点,可能作为路径结尾的点连汇点,路径中的点正常连边。
使用要求:每条源点到汇点的路径和每条不能存在的路径一一对应(或许可以在特殊情况下放宽:错解不优)。因而常与同余染色相结合。
2. 贡献取舍
通常是:最大贡献 \(=\) 总贡献 \(-\) 最小割。
要将贡献的加减转换成二集合划分,就需要找到类似二分图的结构(关系)。
这一部分内容较为灵活和巧妙。(也许)
黑白染色
两种理解:二分图染色、\(\bmod 2\) 同余染色。
打包奖励
“奖励模型”,特征为“且”(若干点划分进同一某集合)才有贡献。此时让它们和一个奖励点绑定,奖励点再按点权连源点或汇点即可。奖励贡献也先加进 sum。
经典例题:“文理分科”。
2025.6.5
浙公网安备 33010602011771号