图匹配
引入
匹配 或是 独立边集 是一张图中不具有公共端点的边的集合。图匹配算法是信息学竞赛中常用的算法,大致可以分为最大匹配以及最大权匹配两类。因为 二分图 中的匹配等价于网络流问题,性质良好,相对容易处理,所以,此处将先从二分图开始介绍两类算法,再讨论一般图的算法。
图的匹配
设
匹配
极大匹配(maximal matching):无法继续增加匹配边的匹配。极大匹配不一定是最大匹配。
最大匹配(maximum matching or maximum cardinality matching):匹配边数最多的匹配。最大匹配可能有不止一个,但最大匹配的边数是确定的,而且不可能超过图中顶点数的一半。
最大权匹配(maximum weight matching):加权图中,边权和最大的匹配。
最大权最大匹配(maximum weight maximum cardinality matching):匹配数最多的前提下,边权和最大的匹配。即所有最大匹配中,边权和最大的匹配。
完美匹配(perfect matching):每个顶点都是匹配点的匹配。完美匹配一定是最大匹配。顶点数为偶数的完全图,必然存在完美匹配。
近完美匹配(near-perfect matching):有且只有一个未匹配点的匹配。这只能发生在图的顶点数是奇数时。近完美匹配也一定是最大匹配。顶点数为奇数的完全图,必然存在近完美匹配。
算法竞赛中涉及的图的匹配问题,主要指的是图的最大匹配或最大权匹配。
增广路
图匹配算法中,增广路是用于改进匹配的核心结构。
定义
对于图
- 交错路(alternating path)是由匹配边与非匹配边交错而成的路径;
- 增广路(augmenting path)是始于非匹配点且终于非匹配点的交错路。
因为增广路上非匹配边比匹配边数量多
下图展示了在一次增广操作后,匹配数量由
Berge 引理
Berge 引理说明,利用增广路改进匹配的方法是充分的。也就是说,当找不到增广路时,就说明已经得到了最大匹配。
Berge 引理
对于图
证明
前文已经说明,存在增广路
反过来,需要说明,如果存在比匹配
由此定理可知我们求最大匹配的核心思路:
- 枚举所有未匹配点,找增广路径,直到找不到增广路径。
事实上,每次增广操作结束后,不需要重新遍历一次所有未匹配点。在整个求最大匹配的过程中,每个顶点只需要遍历一次就好。
证明
只需要说明,如果在枚举进行到顶点
假设不然。也就是说,假设
(图中黑色表示非匹配边,红色和蓝色表示不同的匹配状态)
设
交错树
另一个与增广路紧密相关的概念是交错树。它是从未匹配点
对于图
下图展示了自未匹配点
完美匹配的存在性
图匹配理论中,有两个重要的存在性定理,可以用于判定二分图或一般图中完美匹配是否存在。
Hall 定理
假设
Hall 定理说明,只要保证对于
Hall 定理
假设
证明
条件显然是必要的。假设
条件也是充分的。假设
推论
所有正则的二分图都有完美匹配。
证明
正则二分图中,所有顶点的度数都相同,设为
Tutte 定理
Tutte 定理提供了判断一般图中是否存在完美匹配的充要条件。这个条件源于一个直接的观察:顶点数量为奇数的图中一定不存在完美匹配。
Tutte 定理
图
证明
只需要考虑简单图即可,因为重边和自环不影响 Tutte 条件和完美匹配的存在性。
条件的必要性相对容易。假设存在完美匹配
条件的充分性较为复杂。假设
关键是要证明
如图所示,可以分两种情形:
和 位于不同的环路(如图左所示):设 所在环路为 ,那么,边集 就是图 的完美匹配; 和 位于相同的环路(如图右所示):由对称性,不妨设环路依次经过 ,因此可以取环路上从 经过 到达 的路径 ,记 为环路 ,那么,边集 同样是图 的完美匹配。
无论是哪种情形,都与
推论
无桥 3‑正则图都有完美匹配。
证明
为了验证 Tutte 条件成立,任取
因此,
因此,Tutte 条件成立,图
常见算法
组合优化中的一个基本问题是求图的最大匹配和最大权匹配。
二分图最大匹配
详见 二分图最大匹配 页面。
在无权二分图中,可以使用 Hopcroft–Karp 算法在
二分图最大权匹配
详见 二分图最大权匹配 页面。
在加权二分图中,可用 Hungarian 算法解决。如果在寻找最短路时使用 Bellman–Ford 算法,时间复杂度为
一般图最大匹配
详见 一般图最大匹配 页面。
无权一般图中,可以使用 Edmonds' blossom 算法在
一般图最大权匹配
详见 一般图最大权匹配 页面。
加权一般图中,可以使用 Edmonds' blossom 算法在
相关问题
最大(权)匹配与其它图论问题有着紧密的联系。本节仅讨论一般图,关于二分图的结论可以参考 二分图最大匹配 页面。
最大权最大匹配
最大权最大匹配问题和最大权匹配问题可以相互归约。它们之间一个很显著的区别是,最大权最大匹配中可能存在负权边,但是最大权匹配中不会存在负权边。
首先,最大权匹配问题可以归约为最大权最大匹配问题。首先,将图
反过来,最大权最大匹配问题也可以归约为最大权匹配问题。只需要对图
当
最小(权)边覆盖
另一个与最大(权)匹配紧密相关的问题是最小(权)边覆盖。边覆盖与匹配(又称边独立集)的关系,和点覆盖与独立集的关系相似。
图
对于无权图,最小边覆盖问题几乎就是最大匹配问题。对于图
对于加权图,最小权边覆盖问题可以归约为一个 最小权完美匹配 问题。首先,将图
参考资料
- Wikiwand - Matching (graph theory)
- Wikiwand - Blossom algorithm
- 2015 年《浅谈图的匹配算法及其应用》- 陈胤伯
- 演算法笔记 - Matching
- the-tourist/algo
- Bill Yang's Blog - 带花树学习笔记
- 二分图的最大匹配、完美匹配和匈牙利算法
- Wikiwand - Hopcroft–Karp algorithm
- Bondy, John Adrian, and Uppaluri Siva Ramachandra Murty. Graph theory with applications. Vol. 290. London: Macmillan, 1976.
当然,这并不是唯一的归约方式。对于图
,还可以将它的一份拷贝 逐点地连接到原来的图上,并将所有相对于原图 新加的边(包括拷贝中的边)的权重设为 ,得到图 。换句话说,新图 的顶点集是 ,而它的边集除了图 中的边之外,还将所有顶点 都与它的拷贝 用零权边连接,且对于所有边 ,都将 与 用零权边连接。图 中的所有匹配 都对应着图 中的一个权值和相同的完美匹配:只需要将 中所有未匹配点 都与它的拷贝 匹配,而对于所有匹配边 ,都将 与 匹配。因此,图 中的最大权最大匹配,也就是最大权完美匹配,限制到 上,就得到图 的最大权匹配。这样归约的好处是,如果图 是二分图或稀疏图,那么扩充得到的图 也分别是二分图或稀疏图。 ↩对于图
的每个完美匹配 ,都可以按照此处描述的方式得到一个图 的边覆盖 ,且后者的权值和为前者的一半;将这个构造过程反过来,对于图 的每个边覆盖 ,都可以构造出一个图 的完美匹配 ,且后者的权值和不超过前者的二倍。这就说明归约是成立的。 ↩
本页面最近更新:2025/6/9 00:41:27,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:310552025atNYCU, c-forrest, Enter-tainer, mcendu, Shen-Linwood, StudyingFather, t4rf9, Tiphereth-A, TrickEye, wlbksy, Xeonacid, yuhuoji, accelsao, Chrogeek, iamtwz, shuzhouliu
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用