先给出一些图论的定义
(这部分其实也可以不看,第二个大标题开始讲正文)
匹配
给出图G = (V,E),我们取E的一个子集M,其中M中任意两条边没有公共顶点,我们则称M中的边为匹配边,同时将M中的点叫做匹配点。
(剩下的叫未匹配边、未匹配点)
极大匹配
在一个匹配的基础上,我们可以扩大匹配(这个就是匈牙利算法的精髓,一会讲),当扩大到最大,我们就说这是一个极大匹配。
最大匹配
在极大匹配中,有的匹配边数会比其他的多一点,所以我们把最大的叫做最大匹配。
完美匹配
这个就更牛皮了,M连接的所有顶点刚好为V。
二分图
一个图能被划分成两部分,使得任意一条边的两个顶点分别在两个部分中。
交错路径和增广路径
交错路径顾名思义,就是相邻两条边性质不同。
这里我们取非匹配边-匹配边-非匹配边……的路径为交错路径;
增广路径则是从一个非匹配点出发,走交错路径到另一个非匹配点(保证了两边的边为非匹配边)
推论
-
增广路径的边数一定为奇数,且两边的边属于非匹配边
-
对于一个增广路径,我们可以将M取反(匹配边改为非匹配边),得到一个更大的M’,也就是匹配的扩大。(图中红色边为匹配边)

-
M为G的最大匹配等价于不存在M的增广路径

博客先介绍图论中匹配、极大匹配、最大匹配、完美匹配和二分图等定义,引出交错路径和增广路径概念。重点阐述匈牙利算法,以员工任务分配为例说明匹配扩张原理,还给出小朋友分饼干的应用实例,并提及可用贪心算法解决该问题。
最低0.47元/天 解锁文章
1172

被折叠的 条评论
为什么被折叠?



