迭代最大匹配

Iterating over maximum matchings

本文关键字:迭代      更新时间:2023-10-16

图中的匹配是一组成对的顶点不相交的边,如果它覆盖了图中尽可能多的顶点,它就是最大值。有一些有效的算法可以找到这样的匹配,以及实现(例如c++中的Boost)。

然而,在任意图中可能存在多个最大匹配;有没有任何算法的实现可以让你列出所有这些?我更喜欢c++实现,但其他语言也可以。

"二部图中所有完美、最大和最大匹配的枚举算法" -http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.8179&代表= rep1& type = pdf

"计算弦和弦二部的匹配数"图形类"http://www.jaist.ac.jp/okamotoy/PDF/matchchordal.pdf

在这篇2001年的论文中,T. Uno(与上面Piotr给出的第一个参考文献中的作者相同)解决了在一般图中找到所有最大匹配的问题:

非二部极大匹配的快速枚举算法

现在最大(基数)匹配通常是最大匹配的严格子集,但是一旦最大匹配的大小已知,最大匹配很容易过滤以消除除最大匹配之外的所有匹配。

然而T. Uno提出的这种"快速算法"的时间复杂度取决于最大匹配的数量。实际上,对于具有|V|顶点和|E|边的一般图G(V,E),其时间复杂度为O(|E|+|V|+Δ*N),其中Δ为顶点的最大度,N为最大匹配的个数

当最大匹配与最大匹配的比率很高时,这将不是理想的。然而,该算法适用于一般图,因此在仅搜索最大匹配时期望这种行为似乎是相当合理的。