有上下界网络流

本文详细介绍了网络流问题的四种类型:无源汇上下界可行流、有源汇上下界可行流、有源汇上下界最大流及最小流的定义、建图方法与解法,并给出了判断解的存在性和求解的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

下面写得只是一些十分基础的东西,是给我以后自己看的,想要彻底弄明白这个内容,推荐去看liu_runda
注:为了方便,下面所有的(x,y,L,R)都表示一条从x连向y,流量下界为L,流量上界为R的边。

1、无源汇上下界可行流:

问题简述:

给出一个有向图,每条边有流量上下界,没有源点和汇点,要求找到一种流的方法,使得每个点流入的流量与流出的流量相等,且每条边的流量都要满足上下界。

建图方法:

用一个数组 v v 储存每个点流入流量与流出流量的差.。对于(x,y,L,R),建一条x到y,流量为R-L的边,v[x]=L,v[y]+=L;之后扫一遍点,若 v[x]>0 v [ x ] > 0 ,建一条超级源点 SS S S x x 流量为v[x]的边;否则建一条 x x 到超级汇点TT,流量为 v[x] − v [ x ] 的边,然后跑一遍最大流。

判断是否有解:

扫一遍超级源点连出去的所有边,若全部满流则有解,否则无解。

2、有源汇上下界可行流:

问题简述:

给出一个有向图,每条边有流量上下界,有源点 S S 和汇点T,要求找到一种流的方法,使得源点 S S 的流出量等于汇点T的流入量,除源点汇点之外每个点流入的流量与流出的流量相等,且每条边的流量都要满足上下界。

建图方法:

注意到源点的流出量等于汇点的流入量,那么可以建一条 T T S的流量为inf的边,那么就转化为上面的无源汇上下界可行流的问题,按照上面的方法建图即可。

判断是否有解:

同上。

3、有源汇上下界最大流:

问题简述:

给出一个有向图,每条边有流量上下界,有源点 S S 和汇点T,要求找到一种流的方法,使得源点 S S 的流出量等于汇点T的流入量,除源点汇点之外每个点流入的流量与流出的流量相等,且每条边的流量都要满足上下界,满足这些前提的情况下,要求流量最大。

建图方法:

对于(x,y,L,R),建一条超级源点 SS S S y y 的流量为L的边,一条x到超级汇点 TT T T 的流量为L的边,一条 x x y的流量为R-L的边,最后建一条汇点 T T 到源点S流量为inf的边。

判断是否有解及求最大流:

判断是否有解的方法与前面的一样。
找最大流有两种方法:
首先一开始都要跑一次 SS S S TT T T 判断是否有解,以下都是在进行了第一次网络流的情况下进行的。
1、把最大流的初始值设为 T T S这条边的流量,把 SS S S 连出去的边清掉,把 T T S的边删掉,再在残量网络上跑一次 S S T的最大流,初始最大流加上这次的最大流就是答案。
2、直接跑一次 S S T的最大流即为答案。

4、有源汇上下界最小流:

问题简述:

给出一个有向图,每条边有流量上下界,有源点 S S 和汇点T,要求找到一种流的方法,使得源点 S S 的流出量等于汇点T的流入量,除源点汇点之外每个点流入的流量与流出的流量相等,且每条边的流量都要满足上下界,满足这些前提的情况下,要求流量最小。

建图方法:

与有源汇上下界最大流一样。

判断是否有解及求最小流:

判断是否有解的方法与前面的一样。
找最小流:
把最小流的初始值设为 T T S这条边的流量,把 SS S S 连出去的边清掉,把 T T S的边删掉,再在残量网络上跑一次 T T S的最大流,初始最小流减去这次的最大流就是答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值