【问题标题】:Why do we compare at most 7 points in closest pair algorithm?为什么我们在最近对算法中最多比较 7 个点?
【发布时间】:2012-04-07 09:59:06
【问题描述】:

所以,如果在δ * 2δ矩形R内,我们只需要比较左边的1点和右边的7点。我不明白的是,尽管阅读了证明,但在 R 内部,我们可以在矩形内填充任意数量的点,这可能超过 7 的总数。想象一下,如果我们有 δ = 2,一个点 p(1.2, 1.1) 在左边,在右边,我们有一大堆 q,比如 q(1.5, 1.7) , q(1.4, 1.3),.....怎么只能比较 7 个点来检测最近的一对?我认为如果是这种情况,我们必须比较矩形 R 内的每个点。请帮帮我。

【问题讨论】:

标签: algorithm


【解决方案1】:

您的矩形内可能只有 6 个点,因为这是您可以在边为 δ 和 2δ 的矩形中放置的最大点数,同时保持它们彼此之间的距离至少为 δ。

这6个点的铺设方式如下图所示:

您可以自行检查是否可以在矩形内放置另一个点而不违反距离属性。如果添加超过 6 个点,它们之间的距离将小于 δ,这是矛盾的,因为 δ 应该是最近点之间的距离。

由于最多可能有 6 个点,测试 7 将保证您找到解决方案。

我从these UCSB slides 得到了图1,可能对你有用。

【讨论】:

  • 谢谢。通过您的简单解释,它使事情变得更清楚了。但是,在幻灯片中,据说“如果每对至少相距 delta,则 R 内可以有多少点”?幻灯片中的答案是 6 inside R,而不是 R 的边界。
  • @Amumu 是的,但它们的真正意思是“在边界内或边界上”。如果您认为答案足够好,您应该接受答案。 =)
  • 当然,但唯一的困惑是 7 点常数。我的意思是,我不能在 R 中放置无限数量的点来创建具有小于 \delta 距离的无限对。无限可能太多了,但如果我有大约 20 个点的距离小于 \delta,那么只测试 7 个点有什么意义呢?
  • 我突然明白了。 R 内的所有对必须是 delta 分开的,因为如果它小于 delta,则该对必须自身 delta 。这意味着矛盾,因为 delta 应该是这最后一步之前的最小距离,这意味着我们寻找 delta 的算法在实际实现中是错误的。如果您添加此内容,我将标记为正确答案。该死的,这些隐藏的知识花了我很多时间来弄清楚。
  • @Amumu 没错!我添加了关于矛盾部分的简要说明以供将来参考。
猜你喜欢
  • 1970-01-01
  • 2011-12-07
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多