找到点之间最小距离的最快方法

时间:2009-04-25 11:25:29

标签: algorithm geometry

我有一组2D点,需要找到最快的方法来确定哪一对点在集合中的最短距离。

这样做的最佳方法是什么?我的方法是用快速排序对它们进行排序,然后计算距离。这将是O(nlogn + n)= O(nlogn)。

是否可以在线性时间内完成?

感谢。

3 个答案:

答案 0 :(得分:11)

It is actually

  

最近点问题最近对问题computational geometry的问题:在度量标准空间中给出 n 点,找到一对距离最小的点......

     

在假定floor function可在恒定时间内计算的计算模型中,可以在O( n log log n )时间内解决问题。如果我们允许随机化与floor函数一起使用,那么问题可以在O( n )时间内解决。

答案 1 :(得分:-1)

如果你可以从每个点探测出一个恒定的数量并使用迭代加深DFS,那么你永远不会检查比最接近的两个点更远......并且因为你不依赖于失败的传球,你永远不需要重新计算ID DFS倾向于的方式。

答案 2 :(得分:-4)

没有。 O n ^ 2)中所有点之间的最小距离,因为您必须将每个点与每个其他点进行比较。从技术上讲,它是 n * n / 2,因为你只需要填充必须填充矩阵的一半。

有更快的算法用于查找给定点的最近邻居。不幸的是,你必须为每一点做到这一点才能找到最接近的两点。