【发布时间】:2013-09-07 22:29:53
【问题描述】:
我有两组 2D 点,它们在平面上被一条线分开。我想有效地找到一对点,由每组中的一个点组成,它们之间的距离最小。 Radu Litiu 有一篇看起来非常方便的论文,两个分离点集的最近对,但它使用 L1(曼哈顿)距离度量而不是欧几里得距离。
有人知道适用于欧几里得距离的类似算法吗?
我几乎可以看到标准分治最近对算法的扩展——将这两个集合除以垂直于原始分割线的中线,在两侧递归,然后寻找一个更接近的对距离中位数的每一侧一个点。如果与递归步骤的最小距离为 d,则中值一侧的点的伴星必须位于尺寸为 2d*d 的框内。但与原始算法不同的是,我看不到任何方法来限制该框内的点数,因此整个算法就变成了 O(m*n)。
有什么想法吗?
【问题讨论】:
-
我们在谈论多少分?
-
N 个。 :-) 在这种情况下,一个简单的 m*n 蛮力扫描可能会具有最佳的挂钟性能,但从更理论的角度来看,我也对这个问题感兴趣。
标签: algorithm computational-geometry time-complexity divide-and-conquer closest-points