两组大小不同的顶点的最大加权二分匹配

时间:2018-04-06 16:22:25

标签: algorithm graph-theory graph-algorithm matching bipartite

抽象问题

我想在完整的加权二分图中找到最佳的最大匹配,其中两组顶点的大小差异很大,即一组顶点非常大而另一组非常小。

Hungarian algorithm对于这个问题不是一个好方法,因为它将虚拟顶点添加到较小的集合,使得两个集合具有相同的大小,因此我失去了其中一个顶点集合的所有潜在效率增益只是非常小。

更具体地说

我将对象(边界框)分成两组,并且我有一个相似度量(Jaccard重叠),表示任何两个对象的相似程度。我想在两个集合之间产生匹配,使得所有单个匹配的相似性之和最大。

问题是其中一个集合只包含非常少的对象,比如10,而第二个集合非常大,比如10,000个对象。第一组中的10个对象中的每一个都需要与第二组中的10,000个对象中的一个匹配。

这两套尺寸的不对称性让我想知道如何有效地做到这一点。我无法使用匈牙利算法并生成10,000 x 10,000矩阵。

1 个答案:

答案 0 :(得分:2)

就可用软件而言,可能是最简单的方法:使用最低成本的网络流解算器。矩形成本矩阵没有问题!基本思路很简单,介绍是here(下图中显示了一张幻灯片):

有很多可用的软件(例如Coin-OR Lemon / C ++; Google的ortools / C ++包含许多包装器。)

https://algorithm.cs.uct.ac.za/lecture/assignment_problem/assignment_problem.pdf

Google的ortools在this上也有自己的文档条目。

尽管如此,这本书:

  

Burkard,Rainer E.,Mauro Dell' Amico和Silvano Martello。作业问题,修订转载。卷。 125.暹罗,2009年。

有一个小/小章节(5.4.4矩形成本矩阵),概述了其他方法,主要是对其他线性分配算法的修改。

该章的部分内容如下:

  

或者,可以使用转换到第4.4.1节的最小成本流问题,这不要求顶点集U和V具有相等的基数。