网络流入门1——简单模型转化

本文介绍了如何将寻找二分图的最大匹配问题转化为网络流问题。通过设置源点和汇点,限制每个点的流量不超过1,确保每个点在选中的边中仅出现一次。最大流的解即为原二分图的最大二分匹配。虽然在竞赛中通常采用匈牙利算法,但这种网络流建模方法提供了有价值的思考。
在现在的信息学竞赛中,一般不会考裸的最大流问题,而是把问题转化为最
大流或最小割模型,这使得题目有了难度。
1. 最大流模型
一个典型的最大流模型就是二分图的最大二分匹配。
二分图 ( , , ) G X Y E  ,其中 X 和 Y 是两个不相交的点集,并且对于每对
( , ) u v E  , u X  且 v Y  。二分图的最大二分匹配问题就是从 E 中选择一些边,

使得每个点最多在选择的边里出现一次,问最多能选多少条边。

一个二分图的例子及其最大匹配(实线表示选中的边,虚线表示未选中的边)

由于每个点只能在选择的边里出现一次,就此我们可以联想到了流的容量限制 f(u,v)<=c(u,v),因此我们控制经过每个点的流量不超过 1 即可保证每个点只被使用一次。这样我们就得到了一个思路:增加源点和汇点,从源点到左边的每个点连边,从右边的每个点到汇点连边,容量都为 1。两边点中间的边保持不变,只是改成有向边,从左边指向右边。


对于每个左边的点,进去的流量最多只有 1;对于每个右边的点,出去的流
量最多只有 1,所以每个点最多在选中的边里最多出现一次(选中的边即为中间
流量为 1 的弧)。又因为流最大,所以结果就是原二分图的最大二分匹配。
关于二分图的最大二分匹配还有另外一种算法:匈牙利算法,由于其可以更
简单地实现,所以在竞赛中往往不使用最大流,但这种建模方式值得借鉴。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值