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

Posted

技术标签:

【中文标题】Morton 代码对于更高维度是最有效的吗?【英文标题】:Is Morton code the most efficient for higher dimensions? 【发布时间】:2014-05-29 14:17:56 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

@Bytemain 这有什么好处?为了进行比较,您需要两件事。 @Bytemain 投反对票并不是解决向您提出的问题的最明智方法。 @Bytemain 我建议你删除你对我其他问题的不赞成票,你没有任何理由提出,否则我会联系版主。

以上是关于Morton 代码对于更高维度是最有效的吗?的主要内容,如果未能解决你的问题,请参考以下文章

用于 3D 网格的 Morton 反向编码

使用 Morton 顺序进行最近邻搜索的好处?

什么是星型模型

2D morton 代码编码/解码 64 位

使用 morton 代码查找最近的邻居

为 32 位、64 位和 128 位生成交错位模式(morton 密钥)