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

时间:2014-04-15 09:47:36

标签: algorithm sorting nearest-neighbor space-filling-curve z-order-curve

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

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

1 个答案:

答案 0 :(得分:4)

您应该尝试行主要或行素数索引。它们还保留了空间局部性,但即使在更高维度,它们也可以更有效地计算。

您可以在汇编语言的艺术,第5章,第211-216页一书中更深入地了解行主要和列主要索引(但在几何意义上更少)。相关章节可在线获取here

关于您可以考虑的各种空间索引技术,有一个很好的paper,包括上面提到的那些: Samet,H。2017.排序空间数据。国际地理百科全书。 1-11。

Hilbert和Gray索引在这里不是一个选项,因为它们的计算速度比Morton慢(它们的大多数实现包含隐式Morton编码)。 基本上是一个适当的Morton(lookup-table or magic numbers based)实现,并且行主要/列主要索引是最快的。