二分图匹配问题(——模板习题与总结)
首先得知道什么是二分图匹配问题,给出一个二分图,每个人与另外的一个或者多个人存在某种关系
问将他们两两配对的对,最多能配成多少对。
其次,明确几个专业名词。
最大匹配:边数最多的匹配成为最大匹配。
最大匹配数:最大匹配的边数称为边独立数或者匹配数。
最大点独立集:顶点数最多的点独立集称为最大点独立集。
点独立数:最大点独立集的顶点数称为点独立数。
接下来总结一下,如何计算二分匹配的最大匹配。
这里介绍一下匈牙利算法,至于另外的网络流解法随后再说。
匈牙利算法的原理是: 从当前匹配M(可以是空集)出发,检查每一个未盖点,然后从他出发寻找可增广路,找到可增广路,沿着这条可增广路进行扩充,直到不存在可增广路为止。
未盖点出发寻找可增广路的方法有DFS增广,BFS增广,这里只介绍DFS增广。
最后,熟记几个公式。
最大匹配数
模板习题:http://www.cnblogs.com/wenzhixin/p/7363354.html
点独立数=顶点数-最大匹配数
模板习题:http://www.cnblogs.com/wenzhixin/p/7361114.html
最小点覆盖数=最大匹配数
模板习题:http://www.cnblogs.com/wenzhixin/p/7361409.html
最小路径覆盖数=顶点数-最大匹配数
模板习题:http://www.cnblogs.com/wenzhixin/p/7363128.html
最小边覆盖(未补充)
最后总结,该类问题难,不是算法,而是建模,模建好了,问题不大。
欢迎交流,共同进步——