从比O(n ^ 2)更快的体素列表创建邻域图?

时间:2012-06-22 01:50:54

标签: algorithm data-structures graph voxel neighbours

我正在通过大致这样做来创建一个“邻居图”:

for every voxel
  look at every other unseen voxel 
    check if neighbours

大致以n平方(减去n)运行。对于一定数量的体素是可以接受的,但显然需要更长的时间来使用更大的列表。

另一个天真的解决方案就是将所有内容放入一个大的3d数组或一个散列映射中,这个数组将以O(n)运行,但代价是更多的内存。

有更快的方法吗?我似乎无法在谷歌中输入正确的搜索条件......

1 个答案:

答案 0 :(得分:4)

您可能希望查看octreek-d tree结构等空间分区树。这些结构通常可以非常有效地构建(O(n)或O(n log n),IIRC),然后提供极快的查找以查找给定边界框内的最近邻居或点。使用其中一种结构可以为您提供巨大的性能提升,而不会产生巨大的3D阵列的巨大内存成本。

希望这有帮助!