两组最近的一对,每组一个

时间:2014-01-21 10:48:09

标签: c# geometry

我有两组点A和B,我正在尝试找到最接近的一对点,其中每个点都取一个点。也就是说,如果你要使用两个点绘制线,我想要两个点,允许我在两条线之间绘制最短的线段。

环顾四周,几乎所有事情似乎都在寻找1套中最接近的点。虽然我确实找到了一个推荐voronoi tesselation开始的解决方案,这看起来有点像矫枉过正,但我​​只是想找一些比O(n ^ 2)更好的东西。

如果它有帮助,我会比较表格线的两组,虽然它们不一定是直的,我用C#写这个。

感谢。

1 个答案:

答案 0 :(得分:2)

应该可以调整经典的D& C算法(如维基百科链接中所述),将所有点一起处理并用额外的位标记它们。

需要修改合并步骤以接受候选左右对与仅来自每组的成员。这样,递归函数将返回最接近的A-B对。应保留O(N.Log(N))行为。

如果您提到的“线”具有已知的等式,以便可以快速评估点/线距离(甚至线/线交点),则可以有更快的解决方案。