两组点之间的最佳匹配

Best match between two sets of points

我有两个点列表,我们称它们为 L1( P1(x1 , y1), ... Pn(xn, y n)) 和 L2(P'1(x'1, y'1), ... P'n(x'n , y'n))。

我的任务是找到他们的点之间的最佳匹配,以最小化他们的距离之和。

关于某些算法的任何线索?这两个列表包含大约。 200-300分。

谢谢你。

如果您的问题的用例涉及匹配列表 L1 中存在的所有点与列表 L2 中的点,则Hungarian Algorithm 非常适合。

与您的匈牙利矩阵相对应的权重将是为行和列注释的点之间的距离。优化的匈牙利算法的总体运行时间为 O(n3),这将很适合您给定的 n = 300

约束

涵盖匈牙利算法思想和实现的非常好的教程是 https://www.topcoder.com/community/competitive-programming/tutorials/assignment-problem-and-hungarian-algorithm/

如果不是匈牙利算法,您也可以将给定的问题变形为 max-flow-min-cost 问题 - 我现在将省略其细节,但如果需要可以讨论。