c# - 两组点之间的最佳匹配

标签 c# algorithm distance minimum points

我有两个点列表,我们称它们为 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/

相关文章:

c# - 根据 item.key 获取字典项的索引

c++ - std::equal_range 的可能实现

math - 计算二维空间中两点之间的距离?

python - 在 python 中获得大特征向量的最近 10 个欧几里德邻居的最快方法

c# - 在c#中将字符串拆分为字符串数组而不带分隔符

c# - 在不运行应用程序的情况下注册后台任务

c# - Mvvm wpf : update value binding before leaving focus of input element

algorithm - 是否有一种算法可以检测相对于数据集的奇数值

c++ - vector 中的元素编号

java - 如何找到距离我的位置最近的 latlng 数组的位置并且在我前面而不是在我后面