二分图匹配

 今天看的是二分匹配,和二分图最佳完美匹配
首先,不可否认,这部分比较抽象,我看书看了好几遍,才能看懂
其次,是看懂了之后,我还是不知道,这东西为什么这么做,就是知其然,不知其所以然
下面,总结一下知识点:
一、什么是匹配?
就是在图中,选取一些边,这些边之间,任意两条都没有公共端点,这就是匹配
二、什么是二分图?
形象地说,就是把图中的点分成两部分S和T,这两部分的点没有交集,然后所有的边的都是从S指向T的,或者从T指向S的,这就是二分图。很好理解的
三、二分图匹配?
显而易见,就是在二分图里面,找最多有多少匹配
四、增广路?
这里面先了解两个概念:未盖点,匹配点
未盖点就是指这个点,不和任意一个匹配边相连,就是说它不是匹配边的端点
反之,就是匹配点(二分图里面,只有这两种点)
增广路:从一个未盖点开始, 依次经过非匹配边,匹配边,非匹配边,匹配边‘’‘’‘’, 得到交替的路径,如果这个交替路径的终点是一个未盖点,那么这个就是一天增广路
五、增广路的作用,用来改进匹配,判断现在是否是最大匹配
六、(这个问题,书里写得不够明确,我按照自己的理解去总结)怎么判断是不是最大匹配?
找增广路,如果找到了,那么就是这条路径上的匹配边和不匹配边对调,即匹配变成非匹配,非匹配变匹配;如果没有找到,那么当前的匹配, 就是最大匹配!说白了,就是把图里面的点两辆配对,不能重复,就像结婚一样,不能重婚!S就相当是女人,Y是男人,哈哈,比喻如此恰当
七、增广路算法?
就是利用刚才说的增广路的作用和最大匹配的判定方法,来求最大匹配:就是反复找增广路,然后判断是不是最大的,不是就调换匹配和非匹配边。
八、如何找增广路?
一般用dfs。然后这里先具体说一下算法思路:
首先要选一个未盖点u,找以u作为起点的所有增广路,如果,以u为起点的增广路找尽了,就换一个点继续找;
然后,假设现在起点就是u,并设这个u是X节点, 那么接下来找的是非匹配边,设(u, v)是一条非匹配边,分两种情况:
v是匹配点:那么接下来必走(v, left(v))这条匹配边【left(v)就是记录和v相连的左边的点的标号,就是S中的相应点】,那么left(v)也是一个X点,接下来的情况还是这样的,走一天非匹配边,看另一个点是不是未盖点,(dfs了)如果最后也没有未盖点,那么久扩展成了一科匈牙利数(这种树什么样,后面说)
v是未盖点:说明成功找到了一条增广路
九、什么是匈牙利树?
就是匹配边和非匹配边相互交替的树
十、二分图最佳完美匹配?
简单地说,就是一个二分图,前提是它是个完全图,然后呢它的每条边都权值,权值可正可负,二分最佳完美匹配就是求出此图的权值和最大的完美匹配(“权值和”是一个词哈,我开始给读分家了!!!)
十一、解决二分最佳完美匹配的算法--KM(匈牙利算法,貌似就是你说过的匈牙利匹配算法)?
这个算法我看明白了一部分,但是还是挺模糊的,明天再具体总结吧,先说个大概
这里有两个新概念:可行顶标,相等子图
可行顶标:实质就是一个节点函数l, 使得任意(x, y)满足, l(x)+ l(y)>= w(x, y)
相等子图:包含原图的所有点,只包含l(x) + l ( y ) =w(x, y)的边
然后,可以证明的是,如果相等子图存在完美匹配,那么这个匹配就是所求(可以从相等子图的概念去推想,因为w(x, y)的最大值不超过可行顶标的和(可行顶标的值是我们自己定义的,保证了它的可行性),而相等子图里面,w已经达到了最大值)
然后问题就是怎么去确定可行顶标了,今天我也就理解到这!
嘿嘿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值