其他分享
首页 > 其他分享> > 理性理解网络流の笔记

理性理解网络流の笔记

作者:互联网

学习还是到本质比较好,把之前只是记住的一些结论用各种理论理性愉悦一下 :happy:。

理性愉悦

首先要引入一些基本性质,设 \(f(u,v)\) 表示 \(u\to v\) 的流量,则:

任意合法的流均满足上述性质,反之同理,如果满足上述性质就一定是合法的流

原图得到最大流 \(\Leftrightarrow\) 没有增广路

考虑反证法,设 \(f(u,v)\) 表示 \(u\to v\) 的流量,假设没有增广路但实际有更大流。

已知 \(\displaystyle \text{flow}=\sum_v f(s,v)\),如果有更大流则至少一个 \(f(s,v)\) 会变大。

则 \(f(v,s)\) 会相应变小,而为了满足流量守恒,会存在 \(u\) 使得 \(f(v,u)\) 变大,且 \(u\neq s\)。

如此传递下去,如果到了 \(t\) 就说明一定有增广路(这里实际上需要思考一下),否则无论成环还是路径“断头”,都仍不满足流量守恒。

最小割 = 最大流

首先 最大流 \(\geq\) 最小割,因为最大流必然把图分割了,否则说明仍有增广路。

其次 最大流 \(\leq\) 最小割,因为根据割的定义,所有的流都必然经过割边集中的某一条边,那么流量总和最大就是割边集总和。

二分图最小点覆盖 = 最大匹配数

从最小割角度证明。对二分图匹配建立网络流模型,发现中间一条 \(\inf\) 边的两端至少一个被割,也就是说迎合了“点覆盖”的条件。

同时根据最小割 = 最大流,也就是对应的 最小点覆盖 = 最大匹配了。

无论一般图还是二分图,都有 最大独立集 = \(n-\) 最小点覆盖,考虑补图即可,所以没什么好说的。

Hall 定理

对于二分图,左侧点集为 \(X\),右侧点集为 \(Y\),称匹配数为 \(\min(|X|,|Y|)\) 表示达到完美匹配。

不妨设 \(|X|\leq |Y|\),定义 \(N(S)\) 表示 \(X\) 的某个子集 \(S\) 连向 \(Y\) 的集合,称为 \(S\) 的“邻域”。

则二分图存在完美匹配 \(\Leftrightarrow\) \(\forall S\sub X,|N(S)|\geq |S|\)。

必要性显然,如果存在某个点集的所有出边都不及这个点集大小,那仅考虑这个点集本身都无法完美匹配。

充分性考虑反证,假设没有完美匹配但满足右侧。

首先肯定能找到左侧一个未匹配点 \(x\),根据右侧它一定有出边。如果出边到的点未匹配则矛盾,否则得到与它的匹配的点 \(y\)。

此时得到了一个大小为 \(2\) 的集合 \(S\),而此时只找到了 \(N(S)\) 中的一个点(\(y\) 的匹配点)。

根据上述规律,每次都能找到至少一条连向新增集合的新边。如果它连向非匹配点则说明找到了增广路,否则一定会继续扩展。

但 \(X\) 集合是有限的,引出矛盾。

更强的推论:二分图最大匹配数 \(=|X|-\max(|S|-|N(S)|)\)。

化为 \(\min(|X|-|S|+|N(S)|)\),将 \(|X|-|S|\) 视为割掉匹配的左侧非匹配点,\(|N(S)|\) 视为割掉右侧匹配点。

根据最小割 = 最大流 = 最大匹配就能证明了。

问题来了,既然这个简洁的模型能引出更强的推论,那么为何要引入上面的证明呢

最大权闭合子图 = 正点权和 − 最小割

实际上是很简洁明了的结论。

最小割中包含正权表示不选这个点,包含负权则表示选则这个附加代价。

因为是割,所以不会存在即保留正权点,又割掉附加代价的情况。且保有其最小性。

构造方案:未被割的正权边和已被割的正权边。

最小路径覆盖 = 总点数 − 拆点二分图最大匹配

考虑不断合并的过程,先每个点用 \(1\) 条路径覆盖,再尝试把路径串起来。

考虑将点拆成入点和出点,原图中存在的边变为出点 \(\to\) 入点。

单条路径不能分叉 同 左端点匹配唯一 相契合。

多条路径不能汇集 同 右端点匹配唯一 相契合。

而每合并一次就会导致路径数 \(-1\),所以确实是正确的。

扩展:最小路径可重复点覆盖,传递闭包再同样处理即可,没话说。

最小割树

对于一张图,任选两个点 \(u,v\),跑最小割,使得原图分割成两个集合 \(S,T\)。

路边 \((u,v,\text{cut}(u,v))\),并对 \(S,T\) 分别递归下去,知道集合大小为 \(1\)。

不难发现最终得到了一个树形结构,并且同时带来了一个很强的结论:

任意两点间最小割 = 在最小割树上两点间路径边权最小值

首先不难发现这个值是一个上界。

因为对于任选的 \(u,v\) 跑最小割分出 \(S,T\),对于 \(x\in S,y\in T\),显然有 \(\text{cut(x,y)}\leq \text{cut}(u,v)\)。

给出定理:

任取三点 \(a,b,c\),则 \(\text{cut}(a,b),\text{cut}(b,c),\text{cut}(a,c)\) 中最小值至少出现两次。

不妨设 \(\text{cut}(a,b)\) 最小,不妨设 \(c\) 在 \(S\) 这边,根据第一个结论和 \(\text{cut}(a,b)\) 的最小性就能得到 \(\text{cut}(b,c)=\text{cut}(a,b)\) 了。

随之得到一个重要结论:\(\text{cut}(a,b)\geq \min(\text{cut}(b,c),\text{cut}(a,c))\)。

针对一条树上路径,反复用上述结论就能得到 \(\text{cut}(u,v)\geq \min(\text{cut}(u,o_1),\text{cut}(o_1,o_2),\cdots,\text{cut}(o_k,v))\) 了。

再根据上面的 \(\leq\) 就证毕了。

最小割的可行边与必经边

定理:

  • 边 \((u,v,w)\) 是可行边,当且仅当满流且 \(u,v\) 在不同的强连通分量中。
  • 边 \((u,v,w)\) 是必经边,当且仅当满流且 \(s,u\) 在同一强连通分量中,\(v,t\) 在同一强连通分量中。

首先要明确最朴素的定义:

考虑可行边:

针对必经边:

还需要证明存在 \(u\to v,s\to u,v\to t\) 的路径 \(\Leftrightarrow\) 两点在同一 SCC 中。

第一个比较好证明,因为 \((u,v)\) 满流,所以存在反向边 \((v,u)\),而又存在 \(u\to v\) 则相当于成环了。

对于 \(s\to u\),因为 \(u\to v\) 满流,说明 \(u\) 有入流量,因此有 \(s\to u\) 的一条流,对应残量网络中 \(u\to s\) 的路径,同样成环。

对于 \(v\to t\) 是同理的。

根据之前用最小割证明二分图最小点覆盖的模型,能够顺势得出很多关于二分图的结论:

模拟费用流

参考《模拟费用流小记 - command_block》。

默认为最小费用流,最大费用流也类似,把相关名词(如负环 -> 正环)替换即可。

经典结论:

实际上,大部分模拟费用流模型都同时被贴上反悔贪心的标签,个人认为两者是内涵和外表的关系。

很多贪心使用增量的方法求解,很可能理论基础就是费用流模型新增点边的时候不会出现负环。(如 「NOI2017」蔬菜

很多贪心使用 wqs 二分优化,前提是答案具有凸性,而理论基础也很可能是有对应的费用流模型。

大概一个例题能解决很多问题:P4694 [PA2013] Raper

费用流建模为:

求 \(s\to t'\) 的最小费用最大流就是答案,同时也证明了答案的凸性。

注意到该模型是不满足最小费用任意流模型的,因为最后一条边必须满流。但既然有凸性,就可以 wqs 二分解决掉 \(k\)。

所以有所谓的 wqs 二分 + 反悔贪心(考虑从 \(n\to 1\) 天每次新增一个点)的做法。

相比较而言,直接模拟费用流有更好的普适性(可以求解 \(1\sim k\) 的答案)和更优秀的时间复杂度。

方法也比较简单,直接在原图上找出 \(k\) 条增广路,根据上述结论 \(3\),不会发生源汇边的退流!

表现到题目中,将 \(a,b\) 的选做视作括号匹配,那么每次无非增广是加入两种括号:

每次加入括号 \((l,r)\) 就将在 \(l\) 处 \(+1\),\(r\) 处 \(-1\),那么括号序列合法的条件是所有前缀和 \(\geq 0\)。

第二种括号加入的条件也就是区间 \([l,r)\) 的前缀和最小值 \(>0\)。

综上可以得到一个线段树快速找到两种括号中全局较优的一种,具体实现方法与本文无关。

标签:二分,cut,匹配,text,路径,最小,笔记,网络,理性
来源: https://www.cnblogs.com/lpf-666/p/16447481.html