无源汇

上下界可行流

每条边都存在下界 b(u,v),c(u,v)b(u,v),c(u,v) 分别表示这条边的流量至少、至多为多少。

  1. 我们先直接假设每条边已经流了 b(u,v)b(u,v) 的流量,设为初始流量
  2. 然后构造新图 HH,其中的每一条边 eH(u,v)e_H(u,v) 满足其容量为 c(u,v)b(u,v)c(u,v)-b(u,v)
  3. 然后对 HH 中的节点 ii 进行调整,假设 HH 中两个额外的点 S,TS,T 分别作为 HH 中的源汇点
    1. 如果初始流量中 ii 的收支平衡,则不用添加边
    2. 如果 ii 的入流多于出流,差值为 dd,则 SSii 连边,容量为 dd
    3. 如果 ii 的出流多于入流,差值为 dd,则 iiTT 连边,容量为 dd
  4. 然后以 SS 为源点,TT 为汇点跑最大流。
  5. 如果 SS 出发的边都满流,则存在可行流;否则不存在
正确性证明

有源汇

上下界可行流

设源点为 SS,汇点为 TT,则我们连 TST\to S 的边,其下界为 00,上界为 \infin。于是问题转化为无源汇上下界可行流。

此时若有解,STS\to T 的可行流的流量就等于 TST\to S 的附加边的流量。

上下界最大流

上下界最小流