[学习笔记]上下界网络流
概述
上下界网络流本质上是给流量网络的每一条便设置了流量上界\(c(u,v)\)和下界\(b(u,v)\)
无源汇上下界可行流
给定无源汇流量网络\(G\) 。询问是否存在一种标定每条边流量的方式,使得每条边流量满足上下界同时每一个点流量平衡。
不妨假设每条边已经流了\(b(u,v)\)的流量,设其为初始流。同时我们在新图中加入\(u\)连向\(v\)的流量为\(c(u,v) - b(u,v)\)的边。考虑在新图上进行调整至满足流量平衡关系。
考虑设初始流入流量减初始流出流量为\(M\):
若\(M > 0\),此时入流量过量,其向 \(T'\) 连流量为\(|M|\)的附加边。
若\(M < 0\),此时出流量过少,\(S'\) 向其连流量为\(|M|\)的附加边。
然后跑\(S' \to T'\)的最大流,若\(S'\)的出边均满流,则存在可行流。
有源汇上下界可行流
把\(T\)到\(S\)设一条\([0,\infty]\)的边即可转为无源汇的上下界可行流问题。
有源汇上下界最大流
给定有源汇流量网络\(G\)。询问是否存在一种标定每条边流量的方式,使得每条边流量满足上下界同时除了源点和汇点每一个点流量平衡。如果存在,询问满足标定的最大流量。
我们找到网络上的任意一个可行流。如果找不到解就可以直接结束。
否则我们考虑删去所有附加边之后的残量网络并且在网络上进行调整。
我们在残量网络上再跑一次 \(S\)到\(T\)的最大流,将可行流流量和最大流流量相加即为答案。
有源汇上下界最小流
改为跑\(T\)到\(S\)的最大流退流即可。