导读:重新系统的学习了二分图匹配,感觉面对图论题又有了底气。
(资料来源:http://wenku.baidu.com/link?url=AdT8Ftpj14qoiwS4Ey-DzJCiNVu6VTzWOxsWjcXuNBuCboGXMf67w8QNedjL2ECWCbQDZpu7-uwopB2KGreoNk65hOsEgNj7uyRmeHaP0f7)
几个概念:
1.最大独立集:一个二分图中最大的一个点集,该点集中每个点互不相连。
2.最小顶点覆盖:在二分图中,用最少的点,让所有边都与至少一个点有关联。
3.最小路径覆盖:一个不含圈的有向图G中,G的一个路径覆盖是一个其节点不相交的路径集合P,图中的每一个节点仅包含于一条路径。
二分图常见建图模型:
1.行列匹配法
1 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
一个3*3的矩阵,1表示这个地方有敌人,0表示没有敌人。我们可以通过射箭消灭这个位置的敌人。且一根箭可以消灭一行或一列的敌人,问至少需要几根箭。
这题可以运用行列匹配法。我们用敌人坐标的横纵坐标作为点进行匹配。显然,我们只要做一个最小顶点覆盖即可。这里用到二分图的最小顶点覆盖等于其最大匹配。
2.黑白染色法
1 | 0 | 1 |
1 | 1 | 1 |
0 | 0 | 1 |
1代表格子为黑色,0代表各自为白色。每次最多只能修改相邻的两个1。问最少需要修改几次?
这题乍一看也和二分图匹配没啥关系。但我们可以运用染色的方法。将原本一样的点变成二分图。
白1 | 黑 | 白5 |
黑2 | 白3 | 黑4 |
白 | 黑 |