我正在寻找一种可以在网格中进行有效搜索的算法。
我有一个大数组,其中包含所有质心点(x,y,z)
现在对于给定位置(xp,yp,zp),我想找到最接近该p位置的质心。
目前,我正在进行蛮力搜索,基本上,我要针对每个点p遍历所有点,计算到位置p的距离,并由此找出哪个质心。
我知道octree搜索和kd-tree可能会有所帮助,但不太确定如何解决它或哪个更好。
答案 0 :(得分:0)
我想要一个空间索引,例如kd-tree或quadtree / octree(您建议),或者是基于R-Tree的解决方案。
将所有质心放入索引中。通常,您可以将索引中的任何点与一些其他数据相关联,因此,如果需要,可以向网格中提供向后引用,例如网格坐标。
在索引中找到最近的点应该非常快。然后,返回的数据使您可以返回网格。
在某种程度上,四叉树/八叉树本身就是一个离散网格,如果点密度增加,则离散网格会变得更好。网格的不同之处在于它是分层的,根本没有存储空白区域。