最近学习了有上下界网络流,在总结之前先说一些约定:
用
S,T
表示原图中的源点和汇点(如果有),用
SS,TT
表示虚拟的超级源点和超级汇点,用
l(i,j),r(i,j)
分别表示边
(i,j)
的流量下界和流量上界,用四元组
(u,v,w,z)
表示一条边
u→v
,流量为
w
,费用为
主要有以下四类:
无源汇上下界可行流
概念:无源汇上下界可行流就是在一个流量网络中,没有源点和汇点,每条边有流量上下界,要求一种合法的方案,并保证流量守恒。
建模方法:
定义
du=∑l(i,u)−∑l(u,j)
,对于
du>0
的点,连边
(SS,u,du)
,对于
du<0
的点,连边
(u,TT,−du)
,然后求
SS
到
TT
的最大流,当最大流等于
∑di>0di
时有合法解,每条边的流量为残余网络中反向边的流量+下界流量。
有源汇上下界可行流
概念:有源汇上下界可行流就是在一个流量网络中,有源点和汇点,每条边有流量上下界,要求一种合法的方案,并保证流量守恒。
建模方法:连边 (T,S,+∞) ,转化为无源汇上下界可行流。
有源汇上下界最大流
概念:有源汇上下界可行流就是在一个流量网络中,有源点和汇点,每条边有流量上下界,要求一种合法的方案,保证流量守恒,并使得流量最大。
建模方法:先转化为有源汇上下界可行流,跑一遍
SS
到
TT
的最大流,再跑一遍
S
到
有源汇上下界最小流
概念:有源汇上下界可行流就是在一个流量网络中,有源点和汇点,每条边有流量上下界,要求一种合法的方案,保证流量守恒,并使得流量最小。
建模方法:先不连边
(T,S,+∞)
,跑一遍
SS
到
TT
的最大流,然后连边
(T,S,+∞)
,跑一遍
T
到