网络流技术

最大流/最小费用最大流

这里不再讨论,使用 Dinic 即可。板子是可以感性理解然后背下来的。

无源汇上下界可行流

随便来一张网络,边上的流量有上下界,求一种所有点都满足流量平衡和上下界限制的方案。

首先有一个想法是把上下界转换成只有上界,那么为了清除下界的障碍,我们就先把所有边都填充到下界,然而显然这样流量不平衡有的点出水了有的点吸水了。但是我们现在可以搞出来一个转化:

每个点上有一个权值 \(W_i\) 表示这个点上生出来的或者是吸进去的流量(下面存在 \(W_i=in_i-out_i\)),同时每条边的流量限制改写为只有上界 \(R_i-L_i\),要求出一种满足流量限制的方案,把每个点生出来或者吸进去的流量用完。

对于 \(W_i>0\),我们认为这是吸收了流量,进去的比出来的多。由于现在图的基础是那张每条边都达到流量下界的图,所以我们需要从 \(S\to i\) 连一条 \(W_i\) 流量的边在新图里至少要去把那些吸收掉的流量补上(想办法扩大出流的流量,避免吸收);反之我们认为生出来了流量,那就从 \(i\to T\) 连一条 \(-W_i\) 流量的边在新图里至少要去把那些生出来的流量给填上(想办法扩大入流的流量,避免无中生有)。

然后我们跑一遍最大流,此时整个网络应当是流量平衡状态,然后我们再考虑撤掉那些和 \(S,T\) 相连的边。很明显一条边能够被撤掉当且仅当它连接的那个点已经通过调整出入流完全补齐了吸收的流量或者无中生有的流量,也就是这条边满流了。

那么此时每条原图边的流量就是下界加上新图中那些原图边最大流后的流量,与 \(S,T\) 向图上连的边的边权无关。因为我们是要让下界加上现在的流量达成平衡,而这种附加边的意义就是干掉下界带来的差量,让“只看现在的流量无法平衡”,但“加上下界之后就平衡了”,所以加上下界相当于补充了 \(S,T\) 向图上连边的部分,也还是平衡的。

Template link:https://loj.ac/p/115

有源汇上下界可行流

这里需要保证原图没有边指向源点,没有边从汇点出发。

我们发现这个东西好像条件还要弱一点啊!我们只要想个办法破坏掉无源汇上下界可行流上某两个点的平衡就行了。

考虑原先需要的源点汇点是 \(s,t\),那么我们连一条无穷大边权的 \(t\to s\),然后进行一个无源汇上下界可行流。如果存在可行流,离开 \(t\) 的就是所有汇聚到 \(t\) 处的流量,进入 \(s\) 的也是汇聚到 \(t\) 处的流量,由于这是一个无源汇上下界可行流,所以这又等于离开 \(s\) 的流量。那么在撤掉这条边之后,\(s\) 处只输出它需要给出去的流量,\(t\) 处接收等大的它需要接收的流量,这样这两个点就起到了源点汇点的功效,而且其他点还是流量平衡的。

于是有一个推论:那条 \(t\to s\) 的边上的流量就是这个可行流的大小。

有源汇上下界最大流

一个很可以理解的方案:先来一个有源汇上下界可行流,然后在残量网络上从 \(s\)\(t\) 再来一遍最大流,就是有源汇上下界最大流。

可行流的大小是 \(t\to s\) 那条边的流量,再加上这个在残量网络上的最大流,就可以得到答案。

(事实上在一个流上面叠另一个流的盾,或者抽一个流的盾,只要不超出容量限制都是不改变流性质的。)

这里对残量网络的处理需要注意:要先拆掉所有附加边再跑 \(s\to t\) 的最大流。这个操作不难理解,毕竟我们已经让整个图满足普通网络流的条件了,附加边已经失去了它的功效,在原图上随便跑网络流怎么都是对的,有些附加边反倒会破坏残量网络系统:其中那些从 \(S,T\) 延伸出来的附加边不删也无所谓(源点和汇点之间的所有路径都不可能经过它俩和那些边,但是注意如果懒得删的话一定要记得修改源点汇点);而 \(t\to s\) 那条边里残余的流量,会在第二次跑最大流的时候先被退掉,给现在的最大流多加一个它原来的流量,所以删掉这条边原来的流量再跑最大流就可以了。

注意删边要把原来有的流量清掉,容量也要改成 \(0\) 防止参与到流当中(此处可以不做这一步)。

Template link:https://loj.ac/p/116

有源汇上下界最小流

当然还是先来一个有源汇上下界可行流,然后考虑怎么把这东西搞得越小越好。

我们像有源汇上下界最大流一样,那个是在残量网络上跑个最大流,叠加在一起把所有边撑满不影响网络流性质,那我们就在残量网络上反着跑一次最大流,搞一个“能反悔的最大流”,然后把这个“反悔流”给抽掉,不影响网络流性质。因为砍掉的是最大流,那么得到的就是最小流。

注意这里删边要把原来有的流量清掉,容量也要改成 \(0\) 防止参与到流当中(此处必须做这一步,因为从 \(t\) 出发会遇到那条 \(t\to s\) 的边然后把它先填满)。

Template link:https://loj.ac/s/2000565

posted @ 2024-02-06 11:05  Shunpower  阅读(29)  评论(0)    收藏  举报