在有限范围内检索k最近的球体

时间:2016-06-02 13:29:56

标签: algorithm data-structures nearest-neighbor acceleration

我想知道我是否缺少任何用于检索范围内最近的球体的加速结构。

我的问题的背景是分子可视化,具体来说,我需要检索k个最近的球体到一个点,以产生一个函数,用于指导球体追踪步长。 为了简化,搜索范围可以限制在测试点。

我在文章中看到的只是处理k点最近的点,但我的情况不同,因为我想使用最接近点的球体。似乎可以调整kd树,将点的测试改为球体,但我相信它会影响性能。所以我想知道是否有更好的结构,或者我是否应该使用和改造kd树。

目前,我正在使用混合边界体积层次结构,但我认为其他结构的搜索性能可能更好,因为由于分子的性质,我的边界体积有很大的重叠。

PS:我不太关心施工时间。我想要良好的搜索性能和体面的内存占用。

1 个答案:

答案 0 :(得分:0)

您可以使用三步法:

  1. 使用球体的中心点找到最近的邻居。
  2. 对于此最近邻居,您减去其半径并添加最大半径。然后使用新距离执行球形范围查询。这将返回可能最接近原始球体的所有球体中心点。
  3. 然后使用它的实际半径手动计算每个球体的实际距离。
  4. 假设球体的半径不大于它们的平均距离,这应该是合理有效的。