我有一组2D点,需要找到最快的方法来确定哪一对点在集合中的最短距离。
这样做的最佳方法是什么?我的方法是用快速排序对它们进行排序,然后计算距离。这将是O(nlogn + n)= O(nlogn)。
是否可以在线性时间内完成?
感谢。
答案 0 :(得分:11)
最近点问题或最近对问题是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,因为你只需要填充必须填充矩阵的一半。
有更快的算法用于查找给定点的最近邻居。不幸的是,你必须为每一点做到这一点才能找到最接近的两点。