【问题标题】:minimal graph on spatial points空间点上的最小图
【发布时间】:2010-11-18 15:13:23
【问题描述】:

我有一组 3 维点。我想快速查询任何这些点的 k 个最近邻居。我知道这样做的常用方法是八叉树,但是我认为使用下面描述的数据结构查询会快得多。


我想要一个以点为顶点的最小图,它具有以下属性:

在任意 2 个点 P1、P2 之间:存在一条路径,其中所有内部点 P3:

距离(P1,P3)


但我的问题是,我无法弄清楚如何在可承受的时间内计算出这个最小图。

【问题讨论】:

  • 这个问题令人困惑。问题的类似家庭作业的陈述使它看起来像一个图问题,图算法适用于该问题。但是你从“空间”和“3维”的角度开始你的问题,这实际上是关于计算两个顶点之间的距离。因此,请尝试更好地说明您的问题,如果是家庭作业,请将其标记为这样。事实上,这个问题很可能被否决和/或关闭。
  • 一张图片可能会有所帮助,但我仍然怀疑进行图遍历是否会比一个好的空间分区解决方案(即 Kd-trees)更快。
  • 这不是家庭作业。

标签: algorithm 3d knn


【解决方案1】:

那是因为没有灵丹妙药。

您可以在没有先前计算的情况下执行相对较慢的查询,也可以执行具有大量先前计算和支持数据结构的快速查询。由您来选择。

【讨论】:

    【解决方案2】:

    听起来您所要求的只是距另一个点一定距离内的点。 d(P1, P2) 只是一个数字,因此距 P1 这段距离内的所有点都将满足您的标准。

    如果您需要从多个起点多次运行搜索,那么您应该研究像 kd 树这样的标准数据结构。如果你只执行一次,那么只迭代所有点可能是你最好的选择。

    你心目中的应用是什么?

    【讨论】:

    • 你是对的。经过更多阅读后,在我看来,空间 KNN 查询的最佳解决方案是公共空间树解决方案:八叉树和 kd-tree
    【解决方案3】:

    7 年后我想我可以回答我自己的问题了:


    我正在寻找的图称为单调邻近图 - 最著名的例子是 Delaunay 三角剖分/四面体化。

    与空间分区树相比:这样的图提供了更快的查询时间,但需要更多的内存,需要更多的时间,并且由于退化问题,计算可能会失败。

    由于他们的这些问题,我认为一般来说他们的应用程序来加速 KNN 查询是不可取的,应该简单地使用 kd-trees。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2016-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多