对网络的定义进行扩展,我们可以得出一堆奇奇怪怪的网络。
上下界
令
无源汇
顾名思义,如果抛弃源汇点的设定,对每一个点,都要满足流量守恒,即入流等于出流,那么这就是无源汇的网络流。
有源汇的网络可以通过添加
这是一张无源汇上下界网络。
解决扩展网络流的核心就是:转化为普通网络流问题。
无源汇上下界可行流
这个模版是之后的基础,我们也借此来探究如何将带下界的网络流转化成普通的(下界为0)网络流。
首先,每一条边得流满下界,我们就让网络的流量为下界。得到一张下界网络。
但是这个下界网络很可能不满足流量守恒(如果守恒,就结束了),所以我们在原图的基础上,令流量上限为
如果在下界网络中,一个点入流大于出流,说明在增量网络中这个点需要补偿出流,出流 > 入流,那么就需要超级源点提供入流来平衡。具体提供的入流是,这个点在下界网络中的出入流量差。(这段话可能有点绕,但还是可以形象理解的)。同理,出流大于入流,向超级汇点连边。
总的来说,差量网络中缺什么,增量网络中补什么,通过源汇点反方向的补偿来达到增量网络平衡。
形式化地讲,设
若
若
在这样一张增量网络中跑最大流,如果每条新增边(连接超级源汇店的边)达到满流,说明原问题存在可行流,反之不存在。
为什么不求具体流量?为什么没有最大流?因为每一个点流量都不一样啊()。
有源汇上下界可行流
这个就很简单了吧,
注意这里要分清楚原来的源汇点,和新建的超级源汇点。
有源汇上下界最大流
我们先跑出一条可行流,然后撤掉
这个原理也很好理解,计算出可行流后原网络相当于最大流算法里的残量网络,直接在它上面跑就可以。
有源汇上下界最小流
这个就很玄学精妙,和最大流一样,只不过从
好了,上下界的网络流基本介绍完了,还有费用流,其实万变不离其宗。
无源汇上下界最小/大费用可行流
是在太帅了这个标题。其实很简单啦,把下界网络中的费用一算,然后在增量网络中跑费用流就行了,注意超级源汇点连的边费用为
其他也是一模一样,把所有最大流改成费用流就行了,所以真的很简单啊。(就是模版容易打错)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App