引入

匹配 或是 独立边集 是一张图中不具有公共端点的边的集合。图匹配算法是信息学竞赛中常用的算法,大致可以分为最大匹配以及最大权匹配两类。因为 二分图 中的匹配等价于网络流问题,性质良好,相对容易处理,所以,此处将先从二分图开始介绍两类算法,再讨论一般图的算法。

图的匹配

是一张无向图,其中, 是顶点集, 是边集。如果一组边 不包含自环,且两两之间没有公共顶点,那么,边集 就称为图 的一个 匹配(matching)或 独立边集(independent edge set)。一条边 ,如果出现在匹配 中,就称为 匹配边,否则称为 非匹配边。相应地,一个顶点 ,如果它是一条匹配边的一个端点,就称为 匹配点,否则称为 未匹配点

匹配 的大小,就是它包含的边的数量。对于(加权)无向图中的匹配,常常会考虑如下概念:

  • 极大匹配(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)是始于未匹配点且终于未匹配点的交错路。

因为增广路上非匹配边比匹配边数量多 ,所以增广路中边的数量一定是奇数。如果将增广路上的匹配边和非匹配边反转,那么它依然是交错路,而且匹配数量会增加 。寻找增广路并反转它以增加匹配大小的过程,就称为 增广(augmentation)。用数学语言说,增广相当于将匹配 与增广路 取对称差,得到新的匹配

下图展示了在一次增广操作后,匹配数量由 增加为 的过程。

Berge 引理

Berge 引理说明,利用增广路改进匹配的方法是充分的。也就是说,当找不到增广路时,就说明已经得到了最大匹配。

Berge 引理

对于图 和它的一个匹配 ,匹配 是最大匹配,当且仅当不存在相对于匹配 的增广路。

由此定理可知我们求最大匹配的核心思路:

  • 枚举所有未匹配点,找增广路径,直到找不到增广路径。

事实上,每次增广操作结束后,不需要重新遍历一次所有未匹配点。在整个求最大匹配的过程中,每个顶点只需要遍历一次就好。

交错树

另一个与增广路紧密相关的概念是交错树。它是从未匹配点 进行 DFS 或 BFS 寻找增广路的过程中产生的树。

对于图 和它的一个匹配 ,如果子图 是以未匹配点 为根的树,且连接 和任意 的路径都是交错路,那么,就称 是一个 交错树(alternating tree)。其中,树上深度为偶数的点称为偶点,树上深度为奇数的点称为奇点。

下图展示了自未匹配点 开始进行 BFS 可能得到的一个交错树。(图中,红边为匹配边,黑边为非匹配边;深色顶点为匹配点,浅色顶点为未匹配点。)

完美匹配的存在性

图匹配理论中,有两个重要的存在性定理,可以用于判定二分图或一般图中完美匹配是否存在。

Hall 定理

假设 是二分图,且 。对于图 的一个匹配 ,如果 中的所有顶点都是匹配点,那么就称 是一个 ‑完美匹配,有时也简称作(二分图 的)完美匹配。这是二分图中可能达成的最大的匹配。Hall 定理提供了判断这种匹配是否存在的充要条件。

Hall 定理说明,只要保证对于 的任何子集, 中都有足够多的顶点可以与它匹配,就一定存在 ‑完美匹配。

Hall 定理

假设 是二分图,且 。对于任何 ,记 为图 中所有与 中的顶点相邻的顶点集合。那么,‑完美匹配存在,当且仅当 对于所有 都成立。

推论

所有正则的二分图都有完美匹配。

Tutte 定理

Tutte 定理提供了判断一般图中是否存在完美匹配的充要条件。这个条件源于一个直接的观察:顶点数量为奇数的图中一定不存在完美匹配。

Tutte 定理

存在完美匹配,当且仅当对于任何 ,都有 ,其中, 表示从图 中删去 中的顶点以及与之相邻的边得到的子图,而 表示子图 中顶点数量为奇数的连通分量的数量。

推论

无桥 3‑正则图都有完美匹配。

常见算法

组合优化中的一个基本问题是求图的最大匹配和最大权匹配。

二分图最大匹配

详见 二分图最大匹配 页面。

在无权二分图中,可以使用 Kuhn 算法在 时间内解决,也可以使用 Hopcroft–Karp 算法在 时间内解决。

二分图最大权匹配

详见 二分图最大权匹配 页面。

在加权二分图中,可用 Hungarian 算法解决。如果在寻找最短路时使用 Bellman–Ford 算法,时间复杂度为 ;如果使用 Dijkstra 算法或 Fibonacci heap,可在 时间内解决。

一般图最大匹配

详见 一般图最大匹配 页面。

无权一般图中,可以使用 Edmonds’ blossom 算法在 时间内解决。

一般图最大权匹配

详见 一般图最大权匹配 页面。

加权一般图中,可以使用 Edmonds’ blossom 算法在 时间内解决。

相关问题

最大(权)匹配与其它图论问题有着紧密的联系。本节仅讨论一般图,关于二分图的结论可以参考 二分图最大匹配 页面。

最大权最大匹配

最大权最大匹配问题和最大权匹配问题可以相互归约。它们之间一个很显著的区别是,最大权最大匹配中可能存在负权边,但是最大权匹配中不会存在负权边。

首先,最大权匹配问题可以归约为最大权最大匹配问题。首先,将图 的所有负权边的权重设为 ;然后,通过连接若干权重为 的边,将图扩充为完全图 。注意到,边权非负的完全图中,最大权最大匹配和最大权匹配是一致的。所以,只需要计算 的最大权最大匹配 ,再删去 中的所有零权边,得到的边集 就是图 的最大权匹配。1

反过来,最大权最大匹配问题也可以归约为最大权匹配问题。只需要对图 所有边的边权都加一个足够大的正数 ,就可以保证得到的图 的最大权匹配也一定是最大匹配,故而必然是最大权最大匹配。这是因为计算图 的最大权匹配相当于在图 的所有匹配中最大化

充分大时,多匹配一条边带来的增益 ,会超过后面一项的权值和的变化。因此,算法会首先尽可能地多匹配边,然后才会最大化匹配边的边权和。常数 的选择,只要保证它严格大于两个可能的匹配的差值即可。一个显然的选择是

最小(权)边覆盖

另一个与最大(权)匹配紧密相关的问题是最小(权)边覆盖。边覆盖与匹配(又称边独立集)的关系,和点覆盖与独立集的关系相似。

中的一组边 ,如果任意顶点 都是 中某条边的端点,那么,就称 是图 的一组 边覆盖(edge cover)。讨论边覆盖时,总是假设图 没有孤立点。

对于无权图,最小边覆盖问题几乎就是最大匹配问题。对于图 的任何最大匹配 ,只要为每个未匹配点都加入一条相连的边,就可以得到一个最小边覆盖 。它们的大小满足简单的数量关系:。下图是一些最小边覆盖的例子:

对于加权图,最小权边覆盖问题可以归约为一个 最小权完美匹配 问题。首先,将图 拷贝一份得到 ,边权与原图一致;然后,将每个顶点 都与它的拷贝 连接起来,边权为图 中与 关联的边的权值最小值。这样得到的图记作 。如果图 是二分图或稀疏图,那么图 同样分别是二分图或稀疏图。而且,图 的最小权边覆盖问题,就归约为图 的最小权完美匹配问题 2:对于图 的最小权完美匹配 ,只要保留 中的边,再将所有匹配到的 替换成图 中与 关联的权值最小的边,就得到图 的最小权边覆盖。

参考资料

  1. Wikiwand - Matching (graph theory)
  2. Wikiwand - Blossom algorithm
  3. 2015 年《浅谈图的匹配算法及其应用》- 陈胤伯
  4. 演算法笔记 - Matching
  5. the-tourist/algo
  6. Bill Yang’s Blog - 带花树学习笔记
  7. 二分图的最大匹配、完美匹配和匈牙利算法
  8. Wikiwand - Hopcroft–Karp algorithm
  9. Bondy, John Adrian, and Uppaluri Siva Ramachandra Murty. Graph theory with applications. Vol. 290. London: Macmillan, 1976.

Footnotes

  1. 当然,这并不是唯一的归约方式。对于图 ,还可以将它的一份拷贝 逐点地连接到原来的图上,并将所有相对于原图 新加的边(包括拷贝中的边)的权重设为 ,得到图 。换句话说,新图 的顶点集是 ,而它的边集除了图 中的边之外,还将所有顶点 都与它的拷贝 用零权边连接,且对于所有边 ,都将 用零权边连接。图 中的所有匹配 都对应着图 中的一个权值和相同的完美匹配:只需要将 中所有未匹配点 都与它的拷贝 匹配,而对于所有匹配边 ,都将 匹配。因此,图 中的最大权最大匹配,也就是最大权完美匹配,限制到 上,就得到图 的最大权匹配。这样归约的好处是,如果图 是二分图或稀疏图,那么扩充得到的图 也分别是二分图或稀疏图。

  2. 对于图 的每个完美匹配 ,都可以按照此处描述的方式得到一个图 的边覆盖 ,且后者的权值和为前者的一半;将这个构造过程反过来,对于图 的每个边覆盖 ,都可以构造出一个图 的完美匹配 ,且后者的权值和不超过前者的二倍。这就说明归约是成立的。