二分图的快速最大匹配算法

时间:2014-04-14 12:09:01

标签: algorithm graph matching bipartite network-flow

我正在尝试解决以下problem,但我的算法太慢了。这是因为我使用Edmonds - Karp algorithm来查找最大流量,当应用于二分图时,它也会产生最大匹配。它的运行时间是n ^ 5。我想知道任何更快的算法来解决这个问题(特别是对于二分图)。我目前正在研究的一种算法是Relabel to Front,即n ^ 3。

3 个答案:

答案 0 :(得分:7)

我使用dinitz's algorithm编写了二分匹配。还有一个定理,对于最大二分匹配问题类型的图形,它具有与重新标记前面相同的复杂性(并且更容易实现)。

  

在解决二分匹配问题时出现的网络中,   阶段的数量以O(\ sqrt {V})为界,因此导致   O(\ sqrt {V} E)时间限制。得到的算法也称为   Hopcroft-Karp算法。更一般地说,这个约束适用于任何单位   网络 - 每个顶点的网络,除了源和接收器,   要么只有一个容量进入边缘,要么只有一个   容量1的输出边缘,所有其他容量是任意的   整数。

不幸的是,关于该算法的维基百科文章还不足以实现它,我在网上找不到更好的资源。我有自己的实现,但是我很久以前就已经使用我大学其他人的指导创建了它。

答案 1 :(得分:2)

用于二分匹配的所谓Hungarian algorithm可以在较低的运行时复杂度下实现。

答案 2 :(得分:1)

Hopcroft-Karp算法提供了最低的时间复杂度,可以找到Bipartite graph的最大匹配项(或最小顶点覆盖率)。

根据维基百科,它在O(E * (V^0.5))中运行,E是总边,而V是总顶点。在最坏的情况下(密集图),该值为O(V^2.5)