两组点之间的最佳匹配

时间:2018-09-25 14:09:39

标签: c# algorithm distance minimum points

我有两个点列表,我们称它们为L 1 (P 1 (x 1 ,y 1 ),... P n (x n ,y n ))和L 2 (P' 1 (x' 1 ,y' 1 ),... P' n (x ' n ,y' n ))。

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

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

谢谢和最好。

1 个答案:

答案 0 :(得分:1)

如果问题的用例涉及将列表L 1 中存在的点与列表L 2 中的点进行匹配,则Hungarian Algorithm将起作用非常合适。

与您的匈牙利矩阵对应的权重将是为行注释的点与列注释的点之间的距离。优化的匈牙利算法的总体运行时间为O(n 3 ),可以轻松满足您n = 300

的给定约束

https://www.topcoder.com/community/competitive-programming/tutorials/assignment-problem-and-hungarian-algorithm/

是一个很好的教程,涵盖了匈牙利算法的思想和实现。

如果不是匈牙利语算法,也可以将给定问题变成max-flow-min-cost问题-我现在将省略其详细信息,但可以根据需要进行讨论。