Loading

上下界网络流

上下界网络流

上下界流就是在普通的网络中加了下界。却还是要对于非源汇点,满足入流=出流,于是可能存在不合法的情况。

基础款

无源汇可行流

就是:

  • 对于每个点,入流 = 出流

  • 对于每条边,流量 $\in $ 合法区间

我们先满足其下界,但这样可能出现入流 \(\ne\) 出流的情况,于是在差网络上调整。

在强制满足下届后,对于一个点 \(x\),设其入流总和为 \(in\),出流总和为 \(out\) 可能有三种情况:

  • \(in=out\):这是好的,不用在处理了。

  • \(in<out\):即在差网络上需要额外的入流,可以将 \(x\) 与人造汇点 \(T'\) 相连,边权为 \(out-in\),这样当 \(x\) 在差网络上流量平衡时,就恰好满足了额外流入。

  • \(in>out\):即在差网络上需要额外的出流,同理将人造源点 \(S'\)\(x\) 相连,边权为 \(in-out\),即可。

建好后跑 \(S'\to T'\) 的最大流,使得所有与 \(S',T'\) 相连的边都满流即可。

如果 \(S',T'\) 存在未满流的边,则不存在。

综上我们可以得到若干性质:

  • 一个网络存在可行流要求这个网络必须强连通。

  • \(a\to b\) 的流 = \(b\to a\) 的流

有源汇可行流

就是可以存在一个源点 \(S\) 与汇点 \(T\) 不满足流量守恒定律。

因为 \(S\) 只能出, \(T\) 只能进,连一条 \(T\to S\) 边权为 \([0,+\infin)\) 的边即可转化为无源汇的情况,这条边的流量即为 \(S\to T\) 的流量。

提高款

有源汇最大流

\(S\to T\) 满足条件的最大流量。

由于最大流增广路的选择是不可控的,最后差网络(不包括人造源汇点)的流量是不可控的也就不能保证差网络的其中两点的流量是最大的。

于是,我们在参量差网络上跑 \(S\to T\) 的最大流即可,这是因为最大流的每次增广不影响网络的流量平衡关系(即对于每个点 \(x\),不影响 \(in_x-out_x\) 的值,这是因为每次增广都是进 \(x\) 多少流量,出多少流量,除了 \(S,T\) 这两个点)。

答案就是原来 \(S\to T\) 的流量加上这个最大流。

这种方法适用于网络中任何两个点作为 \(S,T\),但是要注意 \(S,T\) 本身不满足流量平衡定律。

有源汇最小流

\(S\to T\) 满足条件的最大流量。

同理跑 \(T\to S\) 的最大流即可,答案就是原来 \(S\to T\) 的流量减去这个最大流。

可以发现 \(S\to T\) 满足条件的可行流的流量是一个区间,最小流与最大流就是其左右端点。

最小费用可行流

下界网络满流的费用,加上在差网络上跑MCMF后得到的费用之和。有没有源汇都可以。

消去负权边

在求最小费用可行流的时候,可能会出现负环导致亖掉,注意到将原网络分离出的”下界网络“不一定全部选用”下届“,加入有负权边 \((a,b)\),在”下界网络“中强制使其满流,然后加入其反边,这个反边权值一定为正,于是就消去了所有负权边。

在处理一般网络流问题时也可以使用这个方法。

进阶款

最小费用最大流

先跑出最小费用可行流,在跑出 \(S\to T\) 的最小费用最大流,答案为其和。

posted @ 2025-03-27 17:44  lupengheyyds  阅读(50)  评论(0)    收藏  举报