用于在两组之间映射元素的算法

时间:2012-04-11 06:37:36

标签: algorithm math optimization

我有两组矢量,设置A和设置B.假设集合A包含100个向量,集合B包含50个向量。我有自己的方法来测量任何两个向量之间的距离。目标是将集合A中的向量映射到集合B中的该向量,其中距离在特定阈值内。现在,如果两个向量之间的距离不在特定阈值内,则它们不是配对的。映射是一对一的,即集合A中的向量只能映射到集合B中的一个向量,反之亦然。

因此,最终可能发生,来自集合A的40个向量被映射到集合B中的40个向量。因此,集合A中的60个向量不与集合B中的任何向量配对。因此,集合B中的10个向量是也没有成对。

现在,如果我将集合A中的向量标记为A1,A2,A3 ... A100,集合B中的向量标记为B1,B2,B3 ......等等,迭代的最有效方法是什么两套并进行配对。

如果需要进一步说明,请与我们联系。

1 个答案:

答案 0 :(得分:1)

你需要做的是首先看看来自A的哪些向量可以与B中的哪些向量配对。这是用O(n ^ 2)复杂度完成的,并且将创建一个二分图 - 你有两个顶点分区 - A中的向量和B中的向量,当且仅当A中的向量可以与来自B的向量配对时,您才有边缘。 构建图形后,需要找到最大的二分匹配,这通常使用流程完成。例如,看看here。我个人使用Dinitz算法进行流程。

希望这有帮助。