匹配问题——匈牙利算法

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

先给出一些图论的定义

(这部分其实也可以不看,第二个大标题开始讲正文)

匹配

给出图G = (V,E),我们取E的一个子集M,其中M中任意两条边没有公共顶点,我们则称M中的边为匹配边,同时将M中的点叫做匹配点。
(剩下的叫未匹配边、未匹配点)

极大匹配

在一个匹配的基础上,我们可以扩大匹配(这个就是匈牙利算法的精髓,一会讲),当扩大到最大,我们就说这是一个极大匹配。

最大匹配

在极大匹配中,有的匹配边数会比其他的多一点,所以我们把最大的叫做最大匹配。

完美匹配

这个就更牛皮了,M连接的所有顶点刚好为V。

二分图

一个图能被划分成两部分,使得任意一条边的两个顶点分别在两个部分中

交错路径和增广路径
交错路径顾名思义,就是相邻两条边性质不同。
这里我们取非匹配边-匹配边-非匹配边……的路径为交错路径;

增广路径则是从一个非匹配点出发,走交错路径到另一个非匹配点(保证了两边的边为非匹配边)

推论

  1. 增广路径的边数一定为奇数,且两边的边属于非匹配边

  2. 对于一个增广路径,我们可以将M取反(匹配边改为非匹配边),得到一个更大的M’,也就是匹配的扩大。(图中红色边为匹配边)
    在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值