Uuuuuur

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

对网络的定义进行扩展,我们可以得出一堆奇奇怪怪的网络。

上下界

Maxe 为边 e 的流量上界,Mine 为边 e 的流量下界,一条边的流量 fe 要满足 MinefeMaxe,除此之外和普通网络流定义相同,可以发现,普通的网络就是下界为 0 的网络。

无源汇

顾名思义,如果抛弃源汇点的设定,对每一个点,都要满足流量守恒,即入流等于出流,那么这就是无源汇的网络流。

有源汇的网络可以通过添加 TS,下界为 0,上界为 INF 的边,变成无源汇网络。

这是一张无源汇上下界网络。

解决扩展网络流的核心就是:转化为普通网络流问题。

无源汇上下界可行流

这个模版是之后的基础,我们也借此来探究如何将带下界的网络流转化成普通的(下界为0)网络流。

首先,每一条边得流满下界,我们就让网络的流量为下界。得到一张下界网络

但是这个下界网络很可能不满足流量守恒(如果守恒,就结束了),所以我们在原图的基础上,令流量上限为 MaxeMine,得到一张增量网络。通过对增量网络的调整,来让下界网络+增量网络达到平衡。

如果在下界网络中,一个点入流大于出流,说明在增量网络中这个点需要补偿出流,出流 > 入流,那么就需要超级源点提供入流来平衡。具体提供的入流是,这个点在下界网络中的出入流量差。(这段话可能有点绕,但还是可以形象理解的)。同理,出流大于入流,向超级汇点连边。

总的来说,差量网络中缺什么,增量网络中补什么,通过源汇点反方向的补偿来达到增量网络平衡。

形式化地讲,设 Degi=IniOuti(下界网络中)。并令 MaxeMine 为增量网络中每条边的容量。

Degi>0,则 Si,容量为 Degi

Degi<0,则 iT,容量为 Degi

在这样一张增量网络中跑最大流,如果每条新增边(连接超级源汇店的边)达到满流,说明原问题存在可行流,反之不存在。

为什么不求具体流量?为什么没有最大流?因为每一个点流量都不一样啊()。

有源汇上下界可行流

这个就很简单了吧,ts 连一条 INF 边,就是上面的问题了。而且我们还能得出可行流的流量是 ts 边上的流量。

注意这里要分清楚原来的源汇点,和新建的超级源汇点。s,t 是原网络中的源汇点,S,T 是为了解决无源汇问题新增的超级源汇点,s,t 加边后,它们就是普通的结点了。

有源汇上下界最大流

我们先跑出一条可行流,然后撤掉 ts 的边,以 s,t 为源汇点,再跑一遍最大流。把可行流和最大流相加。

这个原理也很好理解,计算出可行流后原网络相当于最大流算法里的残量网络,直接在它上面跑就可以。

S,T 连的边不用撤,因为它们的边已经满流,不会产生影响。

有源汇上下界最小流

这个就很玄学精妙,和最大流一样,只不过从 t 点开始跑最大流,然后可行流减去最大流。这个操作其实是让原网络的反图达到最大流(还记得网络流中是有反向边的吧)。原图自然最小了。

好了,上下界的网络流基本介绍完了,还有费用流,其实万变不离其宗。

无源汇上下界最小/大费用可行流

是在太帅了这个标题。其实很简单啦,把下界网络中的费用一算,然后在增量网络中跑费用流就行了,注意超级源汇点连的边费用为 0,因为它们的流本质是补偿下界网络,这部分已经算过了。

其他也是一模一样,把所有最大流改成费用流就行了,所以真的很简单啊。(就是模版容易打错)

posted on   Uuuuuur  阅读(691)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
 
点击右上角即可分享
微信分享提示