Morton 代码对于更高维度是最有效的吗?

Ash*_*ppa 5 sorting algorithm nearest-neighbor space-filling-curve z-order-curve

对于我当前的输入数据,即 3D 中的点,我使用Morton 代码来提高访问点列表时的缓存一致性。

我还有一些其他的 6D 和 7D 数据。对于这些维度,莫顿代码仍然是一种很好的技术吗?或者还有其他的技巧吗?其他空间填充曲线技术比 3D 本身的 Morton 计算更复杂,我想知道人们是否使用 6D/7D 或更高版本的替代技术。

pla*_*cel 5

您应该尝试行主索引或行主索引。它们还保留了空间局部性,但它们的计算效率更高,即使在更高的维度上也是如此。

您可以在The Art of Assembly Language,第 5 章,第 211-216 页一书中更深入地(但在几何意义上)阅读有关行优先和列优先索引的内容相关章节可在此处在线获取。

还有一篇关于您可以考虑的各种空间索引技术的好论文,包括提到的那些:Samet, H. 2017. Sorting Spatial Data。国际地理百科全书。1-11。

Hilbert 和 Gray 索引在这里不是一个选项,因为它们的计算速度比 Morton 慢(它们的大多数实现都包含隐式 Morton 编码)。基本上是一个适当的 Morton(基于查找表或幻数)实现,并且行优先/列优先索引是最快的。