图的匹配问题与最大流问题(五)——计算二分图的最大匹配
来源:互联网 发布:全自动摇一摇软件 编辑:程序博客网 时间:2024/06/04 23:25
From: http://blog.csdn.net/smartxxyx/article/details/9672181
二分图的最大匹配问题第一篇已经说过,下面看看百度百科给的一些解释:
给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。
极大匹配(Maximal Matching)是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。最大匹配(maximum matching)是所有极大匹配当中边数最大的一个匹配。选择这样的边数最大的子集称为图的最大匹配问题。
如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。
计算二分图最大匹配可以用最大流(Maximal Flow)或者匈牙利算法(Hungarian Algorithm)。
如图,所示,最大匹配为4:.
一、最大流方法计算最大匹配
最大流问题已经前面已经解释了很多了,不妨可以回去熟悉下先。最大流问题Ford-Fulkerson解法
如图所示,对于一个二分图,令已有的边的容量(Capacity)为无穷大,增加一个源点s和一个汇点t,令s和t分别连接二部图中的一个分步,并设置其容量为1。这时得到流网络G’,计算得到的最大流就等于最大二分匹配。
但是,我们还必须回答为什么这种方法是可行的呢?这里有一个简单的证明方法。首先假设,当前流网络有一个最大流,但它对应的不是最大匹配,那么,我们至少还可以向最大匹配中加入一条边,设为(u,v),显然我们还可以增加条增广路径,s->u->v->t。那么就得到一个更大的流,和假设矛盾。所以假设不成立。同理,假设当前有一个最大匹配,其对应的不是最大流,那么至少还存在一条增广路径,假设s->u->v->t。这时就可以增加边(u,v)到最大匹配中,矛盾。代码就很简单了,构造流网络G‘,然后调用最大流算法即得到结果。因为二分图上任何匹配的势之多为min(L,R)(L代表二分图的左部点集,R代表二分图的右部点集),所以G’中最大流的值为O(V),因此,可以再O(VE‘)=O(VE)的时间内,找出二分图的最大匹配。
0 0
- 图的匹配问题与最大流问题(五)——计算二分图的最大匹配
- 图的匹配问题与最大流问题(五)——计算二分图的最大匹配
- 二分图的最大匹配问题
- 图的匹配问题与最大流问题(一)
- poj 2195 带权重的二分图最大匹配问题
- 一、飞行员配对方案问题 [二分图的最大匹配]
- 二分图的最大匹配问题(匈牙利算法)
- 飞行员配对方案问题(二分图的最大匹配)
- 二分图的最大匹配问题完整代码
- 图的匹配问题与最大流问题(二)——最大流问题Ford-Fulkerson方法
- 图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现
- 图的匹配问题与最大流问题(二)——最大流问题Ford-Fulkerson方法
- 二分图的最大匹配
- 二分图的最大匹配
- 二分图的最大匹配
- 二分图的最大匹配
- 二分图的最大匹配
- 二分图的最大匹配
- 老鼠真心很讨厌啊
- Feature Set Mismatch Error on Ceph Kernel Client
- hdu 2112
- windows server无法修改目录属性,附件无法上传
- servlet&jsp学习指南
- 图的匹配问题与最大流问题(五)——计算二分图的最大匹配
- ThinkPhp关闭Debug后出错解决方案
- 待字闺中之巧妙排序分析:
- 地球的有效能量和资源是有限的,自然界发生任何变化,都会使能量被转化成不能再作功的无效能量
- 好吧,我来试最后一次啊
- eclipse添加删除插件-eclipse marketplace
- 发大水发给电饭锅韩国团热舞给第三方
- 初识ASP.NET---点滴的积累---ASP.NET学习小结
- 【leetcode】Edit Distance