483 字
2 分钟
上下界网络流笔记
2018-01-16

无源汇可行流#

将上下界的网络流转化为普通网络流。

建图:

  • 添加源点 SS 与汇点 TT
  • 对于原图中的边 aba \to b 流量限制为[c,d][c, d], 则连边 aba \to b, 流量为 dcd-c
  • 对于原图中的每一个点 ii , 记 d(i)d(i) 为流入这个点的所有边的下界 - 流出这个点的所有边的下界
    • d(i)>0d(i) > 0SiS \to i, 流量为 d(i)d(i)
    • d(i)<0d(i) < 0iTi \to T, 流量为 d(i)-d(i)

在新图上跑 STS \to T 的最大流
若新图满流则原图存在可行流
原图中边流量为新图中对应边的流量加下界。

有源汇可行流#

建图:

  • 在原图中加一条 tst \to s 的边流量为 [0,INF][0, INF]
  • 用无源汇求解

有源汇最大流#

建图 同上

在新图上跑 STS \to T 最大流 记此时 f(s,i)=sum1\sum{f(s, i)} = sum1
tst \to s 的边拆掉, 跑 sts \to t 的最大流
记此时 f(s,i)=sum2\sum{f(s, i)} = sum2
则答案为 sum1+sum2sum1+sum2

有源汇最小流#

建图方法同无源汇可行流
STS \to T 最大流
连边 ts,INFt \to s,INF
STS \to T 最大流
答案为 tst \to s 的实际流量

有源汇费用流#

将上下界的网络流转化为普通网络流。

建图:

  • 添加源点 SS 与汇点 TT
  • 对于原图中的边 aba \to b 流量限制为 [c,d][c, d], 费用为 vv , 则连边 aba \to b , 流量为 dcd-c , 费用为 vv
  • 对于原图中的每一个点 ii, 记 d(i)d(i) 为流入这个点的所有边的下界 - 流出这个点的所有边的下界
    • d(i)>0d(i) > 0SiS \to i, 流量为 d(i)d(i), 费用为 00
    • d(i)<0d(i) < 0iTi \to T, 流量为 d(i)-d(i), 费用为 00

连边 tst \to s,流量为 INFINF,费用为 00

STS \to T 的最小费用最大流
答案为 ans+ans+原图中边的下界×\times边的费用

上下界网络流笔记
https://www.nekomio.com/posts/122/
作者
NekoMio
发布于
2018-01-16
许可协议
CC BY-NC-SA 4.0