最近的一对点平面情况
Posted
技术标签:
【中文标题】最近的一对点平面情况【英文标题】:Closest pair of points Planar case 【发布时间】:2011-08-12 01:08:13 【问题描述】:我正在查看***条目以了解如何解决此问题。它列出了五个步骤
1.沿x坐标排序
2.用一条垂直线x = xmid将点集分成两个大小相等的子集
3.在左右子集中递归求解问题。这将分别给出左侧和右侧的最小距离 dLmin 和 dRmin。
4.求一对点之间的最小距离dLRmin,其中一个点在分界线的左边,第二个点在右边。
5.最终的答案是dLmin、dRmin、dLRmin中的最小值。
第四步我无法理解。如何选择线左侧的点与线右侧的点进行比较。我知道我不应该比较所有点,但我不清楚如何选择要比较的点。请不要给我发链接,我已经搜索了很多链接,但没有找到可以帮助我理解第 4 步的解释。
谢谢
亚伦
【问题讨论】:
【参考方案1】:您的问题的答案在***文章的下一段中:
原来第4步可能是 在线性时间内完成。再次,一个 天真的方法需要 计算所有人的距离 左右对,即二次 时间。关键观察基于 的以下稀疏性质 点集。我们已经知道 最近的一对点不再有 除了 dist = min(dLmin,dRmin)。 因此对于左边的每个点 p 我们必须的分界线 比较到点的距离 位于矩形的 尺寸 (dist, 2 * dist) 到 分割线右侧,如图 图中。更重要的是,这 矩形最多可以包含 6 个点 至少有成对距离 dRmin。因此足以 最多计算 6n 左右 步骤 4 中的距离。递归 步数的关系可以 写成 T(n) = 2T(n / 2) + O(n), 我们可以使用大师解决 得到 O(n log n) 的定理。
我想我不能比他们已经说得更清楚了,但是您对算法的这一步有什么具体问题吗?
【讨论】:
我遇到的问题是尺寸的矩形。这是否意味着如果我在线的左侧有三个点,在线的右侧有三个点,我需要找到所有左右对的距离,然后将它们与最短对的距离进行比较左右? 也就是说,因为我们知道我们不需要考虑大于最小值 dLmin,dRmin 的点对,所以我们可以消除右手点的某个集合。该集合是位于分界线右侧的 (dist, 2*dist) 矩形之外的点(矩形以每个左点为中心)。基本几何表明,该矩形之外的任何点都必须大于距左侧点的距离。事实上,矩形内也有一些点也不是候选点,但我认为计算一个更准确的排除区域以及一个点是否...... 其中的计算量将比仅使用“足够接近”的矩形近似值更昂贵。 所以左边的每个点都有一个以该点为中心的矩形。右边recangle中的所有点都需要找到两点之间的距离,对吗?正方形的距离是 x 左侧的最短距离和 y 的 2 * 最短距离吗?这就是 (dist, 2*dist) 吗? 没有。矩形的左侧位于 x-y 分界线上。然后矩形延伸到右手边。矩形的 y 中心是被检查的当前左手点的 y 坐标。矩形 y 长度为 2*dist。但是,是的,您需要找到右侧矩形中所有点与当前左侧点之间的距离。以上是关于最近的一对点平面情况的主要内容,如果未能解决你的问题,请参考以下文章