注意这里给的有向图不是一个网络,因为是没有源点汇点的;相当于就是构造一个流函数(定义域是每条边),使其满足流量守恒和容量限制
我们没学过有下界的一般图的最大流算法,所以这里尝试转化成无下界的网络最大流算法;也就是说对于原图,我们要构造一个新网络,使得的一个可行流可以与中的一个可行流一一对应,如果能够成功构造,我们求解的最大流就是原图的一个可行流;这样做肯定有问题,因为显然可能是无解的,而一定是有解的,所以不可能做到一一对应,也就是说对于的一个可行流可能无法在中找到一个可行流对应(因为无解),于是猜测的可行流集合大于的可行流集合,所以我们换一种对应方法,尝试将的可行流与的最大流一一对应(因为的可行流集合也一定大于的最大流集合);对应成功后,求解的最大流就是的可行流
对于的一个可行流,有,由于下界要变成,所以写成;于是一个naive的想法就是对于的每条边的容量限制限制为就行了;但是这样会有一个问题,这样子设置就会导致不知道的源点汇点是干嘛的,而且好像与我们上面分析的"的可行流与的最大流一一对应"没有什么关系,并且求解的最大流对应回后,不一定满足流量守恒;分析一下为什么不满足流量守恒,设,那么当的时候,我们从对应回的时候,进入的流量增加的量会多与从出去的流量增加的量,而在中,进入的流量等于出去的流量,这就会导致中流量不守恒(同理分析);于是我们要想办法减少中进入的流量,让其最开始就小于从出去的流量,然后对应回去的时候就满足流量守恒了;这个时候就要让源点汇点干事情了,如果,那么在中连接边,权值为,如果,那么在中连接边,权值为;此时再对跑最大流,如果的最大流等于出边的权值之和,那么就说明有可行流,对应回去就可以了(如果的最大流等于出边的权值之和的话,的任意一个可行流也可以对应到的最大流),否则说明无解(如果有解的话,对应过来显然是的一个流,而且这个流是等于出边的权值之和,而的最大流不会超过出边的权值之和,这就与的最大流不等于出边的权值之和矛盾)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2023-09-03 Miller Rabin与Pollard Rho
2021-09-03 墨墨的等式【同余最短路模板题】