匹配两组对象

问题描述

我想弄清楚如何用程序解决以下问题:
我有一组对象 A = [Ai] 和另一组对象 B = [Bj]。
我还有一个矩阵 C=[cij] 计算 A 和 B 之间的相似度(完全密集)。
我想将每个对象分配给一个单独的其他对象(总共 min(|A|,|B|) 对),以便所有使用的 cij 的总和是可能的最大值。 (同样 Cij 是对称的)

我试图将其表述为二分匹配问题,但我找不到我所要求的现有定义和实现,尽管它看起来很熟悉,这就是我寻求您帮助的原因。

谢谢

解决方法

问题在于分配不平衡: https://en.wikipedia.org/wiki/Assignment_problem

scipy 中似乎有一个实现: https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linear_sum_assignment.html

就解决了。您需要将相似性转换为成本(您可以取负数)。