Algorithm 两组大小完全不同的顶点的最大加权二部匹配 抽象问题

Algorithm 两组大小完全不同的顶点的最大加权二部匹配 抽象问题,algorithm,graph-theory,graph-algorithm,matching,bipartite,Algorithm,Graph Theory,Graph Algorithm,Matching,Bipartite,我想找到一个完整的加权二部图中的最佳最大匹配,其中两组顶点的大小相差很大,即一组顶点非常大,另一组非常小 对于这个问题,这种方法不是一种好方法,因为它将虚拟顶点添加到较小的集合中,使得两个集合具有相同的大小,因此我失去了其中一个顶点集合非常小的所有潜在效率增益 更具体地说 我将对象(边界框)分为两组,并对任意两个对象的相似程度进行了相似性度量(Jaccard重叠)。我想在两个集合之间产生匹配,这样所有单个匹配的相似性之和是最大的 问题是其中一个集合只包含很少的对象,比如10个,而第二个集合非常大

我想找到一个完整的加权二部图中的最佳最大匹配,其中两组顶点的大小相差很大,即一组顶点非常大,另一组非常小

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

更具体地说 我将对象(边界框)分为两组,并对任意两个对象的相似程度进行了相似性度量(Jaccard重叠)。我想在两个集合之间产生匹配,这样所有单个匹配的相似性之和是最大的

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


这两个集合大小的不对称让我想知道如何有效地做到这一点。我无法使用匈牙利算法生成10000 x 10000矩阵。

就可用软件而言,可能是最简单的方法:使用最小成本网络流解算器。这个公式对于矩形成本矩阵没有问题!基本思想很简单,介绍如下(下图所示为一张幻灯片):

有很多可用的软件(例如Coin或/C++;Google的/C++和许多包装器)

谷歌的ortools也有自己的文档条目

尽管如此,这本书:

伯卡德、雷纳E、毛罗·戴尔·阿米科和西尔瓦诺·马泰洛。作业问题,修订再版。第125卷。暹罗,2009年

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

该章的部分内容如下:

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


就可用软件而言,这可能是最简单的方法:使用最小成本网络流量求解器。这个公式对于矩形成本矩阵没有问题!基本思想很简单,介绍如下(下图所示为一张幻灯片):

有很多可用的软件(例如Coin或/C++;Google的/C++和许多包装器)

谷歌的ortools也有自己的文档条目

尽管如此,这本书:

伯卡德、雷纳E、毛罗·戴尔·阿米科和西尔瓦诺·马泰洛。作业问题,修订再版。第125卷。暹罗,2009年

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

该章的部分内容如下:

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


你太棒了!把理论和现成的实现都指给我看,我真希望我能把这一点提高两次。你太棒了!把理论和现成的实现都指给我看,我希望我能把这一点提高两次。