二分图匹配 2016.8.6

本文介绍了二分图匹配的概念,包括边独立集、极大匹配和最大匹配,并通过飞行员搭配问题阐述了最大匹配问题。接着讲解了二分图的完美匹配、完备匹配和最佳匹配,举例说明了增广路和交错路的概念及其在改进匹配中的作用。最后提到了匈牙利树和KM算法在求解二分图最佳完美匹配中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:《算法竞赛入门经典:训练指南》刘汝佳 陈锋 编著

《图论算法理论、实现及应用》

一、边独立集(匹配)

设无向图为 G(V, E) ,边的集合 E* ⊆ E,若 E* 中的任何两条边均不相邻,则称 E* 为 G 的边独立集(edge independent set),也称 E* 为 G 的匹配(matching)

所谓任何两条边均不相邻,通俗的讲,就是任何两条边都没有公共顶点

例如,在图(a)中,取 E* = {e1, e4, e7},则 E* 就是图 G 的一个边独立集,因为 E* 中每两条边都没有公共顶点

注意

在无向图中存在将尽可能多的、相互独立的边包含到边的集合 E* 中的问题,所以边独立集有极大和最大的概念

最小边独立集的概念是没有意义的,因为对任何一个无向图 G(V, E) ,取 E* = ∅ (空集),总是满足边独立集的定义

若在 E* 中加入任意一条边所得到的集合都不是匹配,则称 E* 为极大匹配

边数最多的匹配称为最大匹配

最大匹配的边数称为边独立数匹配数,记为 β1(G),简记为 β1

在图(a)中,{e2, e6},{e3, e5} 和 {e1, e4, e7} 都是极大匹配,{e1, e4, e7} 是最大匹配。因此 β1 = 3

在图(b)中,{e1, e4},{e2, e3} 和 {e4, e8} 都是极大匹配,也都是最大匹配,因此 β1 = 2


以下几个概念都是针对无向图 G(V, E) 中一个给定的匹配 M 而言的

在无向图 G 中,若边 (u, v) ∈ M,则称顶点 u 与 v 被 M 所匹配

设 v 是图 G 的一个顶点,如果 v 与 M 中的某条边关联,则称 v 为 匹配 M 的盖点

如果 v 不与任意一条属于匹配 M 的边关联,则称 v 为匹配 M 的未盖点

所谓盖点,就是被匹配中的边盖住了,而未盖点就是没有被匹配 M 中的边“盖住” 的顶点

例如,在图(a)所示的无向图中,取定 M = {e1, e4},M 中的边用粗线标明,则顶点 v1 与 v2 被 M 所匹配

v1、v2、v3 和 v4 是 M 的盖点,v5 和 v6 是 M 的未盖点

而在图(b)中,取定 M = {e1, e4, e7},则 G 中不存在未盖点



例 1 飞行员搭配问题 1 -- 最大匹配问题

飞行大队有若干个来自各地的飞行员,专门驾驶一种型号的飞机,这种飞机每架有两个飞行员

由于种种原因,例如互相配合的问题,有些飞行员不能在同一架飞机上飞行,问如何搭配飞行员,才能使出航的飞机最多

为简单起见,设有 10 个飞行员,图中的 v1, v2, … v10 就代表这 10 个飞行员

如果两个人可以同机飞行,就在他们之间连一条线,否则就不连

图中的 3 条粗线代表一种搭配方案

由于一个飞行员不能同时派往两架飞机,因此任何两条粗线不能有公共端点

因此该问题就转化为:如何找一个包含最多边的匹配,这个问题就是图的最大匹配问题



二、二分图(二部图)匹配问题

例 2 飞行员搭配问题 2 -- 二分图的最大匹配问题

在例 1 中,如果飞行员分成两部分,一部分是正驾驶员,一部分是副驾驶员

如何搭配正副驾驶员才能使得出航飞机最多的问题可以归结为一个二分图上的最大匹配问题

例如,假设有 4 个正驾驶员,有 5 个副驾驶员,飞机必须要有一名正驾驶员和一名副驾驶员才能起飞

正驾驶员和副驾驶员之间存在搭配的问题

图中, x1, x2, x3, x4 表示 4 个正驾驶员, y1, y2, y3, y4, y5 表示 5 个副驾驶员

正驾驶员之间不能搭配,副驾驶员之间也不能搭配,所以这是一个二分图

图中的 4 条粗线代表一种搭配方案。这个问题实际上是求一个二分图的最大匹配

为方便叙述,我们总是把二分图的两个结点集称为 X 和 Y,有时也称为左边和右边,其中左边是 X 集,右边是 Y 集,如图所示

这个问题可以用网络流解决,但用增广路算法更加简洁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值