4

我一直在关注 Coursera 的算法课程,并想出了一个关于最近配对问题的分/治算法的想法,我想澄清一下。

根据 Roughgarden 教授的算法(如果您有兴趣,可以在此处查看):对于给定的一组点 P,我们有两个副本 - 在 X 和 Y 方向上排序 - Px 和 Py,算法可以给出为

最接近对(Px,Py):

  1. 将点分成左半部分 - Q 和右半部分 - R,并沿 x 和 y 方向形成两半的排序副本 - Qx,Qy,Rx,Ry
  2. 让closestPair(Qx,Qy)为点p1和q1
  3. 设最接近对(Rx,Ry)为p2,q2
  4. 令 delta 为 dist(p1,q1) 和 dist(p2,q2) 的最小值
  5. 这是不幸的情况,让 p3,q3 成为最接近的SplitPair(Px,Py,delta)
  6. 返回最好的结果

现在,我想要的澄清与第 5 步有关。我应该事先说一下,我的建议几乎没有任何改进,但如果你仍然感兴趣,请继续阅读。

R 教授说,由于点已经在 X 和 Y 方向上排序,为了在步骤 5 中找到最佳对,我们需要迭代宽度为 2*delta 的条带中的点,从下到上,在内部循环我们只需要 7 个比较。这可以改善到只有一个吗?

我觉得怎么可能用纯文本解释起来有点困难,所以我画了一张图,写在纸上,然后上传到这里:

在此处输入图像描述

由于没有其他人想出是,我很确定我的思路有一些错误。但我现在已经想了好几个小时了,我只好发布这个。这就是我脑子里的一切。

有人可以指出我哪里出错了吗?

4

1 回答 1

5

您在第 5 点中的结论是不正确的。尝试将点 A 靠近分界线。

您可以在 A 的 delta 范围内有两个点(一个在上面,一个在下面),它们不在彼此的 delta 范围内。

  | B
  | 
 A|
  | 
  | C

在这里,dist(A,B) = dist(A,C) < dist(B,C)

这是一个很好的例子,说明为什么图片有助于获得直觉,但仍然需要证据来支持你的结论。

于 2012-07-03T23:43:42.173 回答