【问题标题】:how to find out of two points which one is closest to a set of points?如何找出最接近一组点的两个点?
【发布时间】:2019-02-12 03:11:30
【问题描述】:

如何从两个点中找出最接近一组点的点?

假设我有两个点 (x1,y1) 和 (x2,y2),我想知道哪个点更接近点集 p1、p2、p3、p4。

有什么算法可以解决这个问题吗?

输入点数和Set中点数不固定

我们可以有 n 个输入以及集合中的 n 个点。

【问题讨论】:

  • 从数学上清楚地定义сloser to a Set of points是什么
  • 可以离线预处理集合吗(例如,使用空间索引结构)?
  • @SaiBot:因为最小距离取决于完整的集合,所以在开始查询之前必须知道。
  • @YvesDaoust 我的问题旨在澄清是否可以在不影响查询时间的情况下对点集进行预处理(例如,使用您建议的 KD 树)。例如,如果有两个输入点并且点集很大(n),那么如果可以进行预处理,则查询时间将为 O(log n) 否则为 O(n)
  • @MBo,我想传达的是我有一些参考点(点集)和一些目标点(输入点)。我想知道哪一个可以被认为是最接近所有参考点(点集)的一个。我基本上是在网页元素上尝试这个

标签: algorithm coordinates distance


【解决方案1】:

在 Set 点上构建一个 kD-tree。这可以在 Ns Log Ns 时间内完成。

然后对于每个输入点,找到最近的邻居。这需要 Ni Log Ns 时间。最后,找出Ni比较中的最短距离。

总时间,(Ns + Ni) Log Ns。这与蛮力相比,以 Ns.Ni 为例。对于小Ni,暴力破解是首选。

【讨论】:

    【解决方案2】:

    这完全取决于您如何定义“最接近一组点”。

    一个超快速的标准可能是“具有到一组点的最小平方距离之和”(使用平方距离,例如,在曲线拟合中,所以这里没什么奇怪的)。

    使用此标准,您只需最小化 Σᵢ((xᵢ-x)²+(yᵢ-y)²) ,其中 i 是集合上的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多