网络流学习笔记#2:最小费用最大流和最小割树

本文介绍了在网络流中如何求解最小费用最大流问题,使用SPFA算法寻找最小费用增广路,并探讨了最小割树的概念,证明了最小割树上任意两点间的边权等于这两点之间的最小割。此外,讨论了最小割的性质和如何通过n次最小割求得全图任意两点的最小割。

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

文接网络流学习笔记#1:最大流和最小割

约定

c o s t ( u , v ) cost(u,v) cost(u,v) 表示 u u u v v v 的费用

费用流

定义

在一个流网络中,有源点和汇点 s , t s,t s,t,每条边都有一个容量和 , s s s 有无限的流量流向 t t t,在满足流量最大的前提下使得费用最小。

解法

这种情况下,找增广路不再可以找到答案,为什么呢?因为费用不一定最小,那怎么办?使用 SPFA!(为什么?有负权边呢) (也就是最小费用增广路)

114514年后的update:现在看自己当时真的是太naive了。。没想到居然有人看我的文章,本来都是写来自娱自乐的[捂脸]。

就经验而言,大多数题目不会考察选手对网络流算法的本质理解,所以这里只给出费用流的实现流程,并不严格证明:

首先对于原流网络的一条边 ( u , v , w , c ) (u,v,w,c) (u,v,w,c),建出 ( u , v , w , c ) (u,v,w,c) (u,v,w,c) ( v , u , 0 , − c ) (v,u,0,-c) (v,u,0,c),每次从源点 s s s 出发找一条费用最小的可行流(说人话,就是最短路上的每条边的流量都大于 0 0 0),然后使其满流(说人话,就是最短路上所有流量减去路径上流量最小者,然后反边相应更新。)直到找不到可行流。

费用流/最大流的核心是在建模,一些常见的模型将在学习笔记#3中讲到。这里因读者要求,先更新最小割树。

最小割树

在阅读下列内容之前最好先掌握 cdq 分治一类问题的解法。

先讲定义:

最小割树是原图一棵生成树,满足对于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值