我有两个点列表,我们称它们为L1(P1(x1,y1)Pn(xn,yn)和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
问题,我现在将忽略这个问题的细节,如果需要的话可以讨论。
关于c# - 两组点之间的最佳匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52500239/