有上下界的网络流——全家桶详解,后附例题

本文探讨了网络流问题中的上下界约束,包括无源汇的可行流、有源汇的最大流、最小流及最小费用最大流等问题。通过构建新图和引入虚拟边的方式解决了这些复杂问题。

引言

⌊ \lfloor 给定一个网络图与其源点、汇点,每条边都有其流量的上限。请你求出它的网络最大流。 ⌉ \rceil

这一道题目大家一定可以看出——这不是裸的最大流吗!跑一遍 Dinic 就完事啦!

但是,如果我们将题目进行一个转化:

⌊ \lfloor 给定一个网络图与其源点、汇点,每条边都有其流量的上限以及下限。请你求出它的网络最大流。 ⌉ \rceil

这时,每条边都有了其流量的上下界,使用 Dinic 直接做似乎较为困难。

于是,本篇文章主要解决边流量有上下界的问题。

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

Description

n n n 个点, m m m 条边,每条边都有一个流量下界和流量上界 。求一条可行流,使得在所有点满足 ⌊ \lfloor 流量平衡 ⌉ \rceil 的前提下,所有边满足流量限制。

1 ≤ n ≤ 200 , 1 ≤ m ≤ 10200 1 \le n \le 200,1 \le m \le 10200 1n200,1m10200

Solution

一种初步的想法是:将旧网络图中每条边的流量,定义为其上界减去下界;从而组成新网络图。然后直接在新网络图搜出可行流即可。

但是这么做会出现一个致命的问题:旧图中对应的 ⌊ \lfloor 实际流量 ⌉ \rceil 不满足 ⌊ \lfloor 流量平衡 ⌉ \rceil 。例如:

在这里插入图片描述
原图中 1 → 2 → 3 1 \to 2 \to 3 123 不是可行流,但在新图中它却成为了一条可行流。

仔细分析一下这一个反例,我们会发现:在新图中 1 → 2 1 \to 2 12 流了 20 20 20 个单位,在原图中对应着 40 40 40 2 → 3 2 \to 3 23 流了 20 20 20 个单位,在原图中对应着 70 70 70 ,不满足流量平衡,从而出现了上面的反例。

考虑通过建立一些 ⌊ \lfloor 虚边 ⌉ \rceil 使得对应的原图满足流量平衡。

令第 i i i 个点的点权 a i a_i ai 为其 ⌊ \lfloor 所有入边的下界和 ⌉ \rceil 减去 ⌊ \lfloor 其所有出边的下界和 ⌉ \rceil

  1. a i > 0 a_i >0 a
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值