网格中最近点搜索的高效算法

时间:2018-12-13 15:26:34

标签: search binary-search-tree kdtree octree

我正在寻找一种可以在网格中进行有效搜索的算法。

我有一个大数组,其中包含所有质心点(x,y,z)

现在对于给定位置(xp,yp,zp),我想找到最接近该p位置的质心。

目前,我正在进行蛮力搜索,基本上,我要针对每个点p遍历所有点,计算到位置p的距离,并由此找出哪个质心。

我知道octree搜索和kd-tree可能会有所帮助,但不太确定如何解决它或哪个更好。

1 个答案:

答案 0 :(得分:0)

我想要一个空间索引,例如kd-tree或quadtree / octree(您建议),或者是基于R-Tree的解决方案。

将所有质心放入索引中。通常,您可以将索引中的任何点与一些其他数据相关联,因此,如果需要,可以向网格中提供向后引用,例如网格坐标。

在索引中找到最近的点应该非常快。然后,返回的数据使您可以返回网格。

在某种程度上,四叉树/八叉树本身就是一个离散网格,如果点密度增加,则离散网格会变得更好。网格的不同之处在于它是分层的,根本没有存储空白区域。