我想把超空间分成立方体.立方体构成了B+树,我该怎么做呢



超空间包含大量高维点。

I倾向于将空间划分为立方体。

并且这些立方体组成了一个B+树。我读了很多关于B+树的书。

但是我不知道如何给立方体编号以及如何选择一个节点的最大键数

,那么我可以有效地访问一个立方体的邻居立方体。

谁能给点主意?

通常,您可以通过将任何n维数组转换为一系列(n-1)维数组来将其重新想象为线性序列。

这里有一个简单的例子。假设我们有一个2 x 2的对象数组:

a b
c d

使用数组索引的语言鼓励您将其视为嵌套的数据结构,如以下python代码:

a, b, c, d = 'abcd'
data = { 0: { 0 : a, 1 : b },  1: { 0 : c, 1 : d } }
fetch = lambda x, y: data[y][x]
assert fetch(0, 1) == c

但是你也可以把它想象成这样的平面数组:

data2 = [ a, b, c, d ]
data2_width = 2
fetch2 = lambda x, y : data2[(y * data2_width + x)]
assert fetch2(0, 1) == c

一般的想法是你乘以维度的长度得到下一行。

你可以将这个想法递归地应用到任何数量的维度上。所以如果你的维度是tuvxyz,长度是TUVWXYZ,那么对于任何对象,你只要取它的坐标并计算{(t * t * u * u * v * v * w * w * x * x * y * y) + z}。

要沿着u维选择一个邻居,您可以从u中添加或减去1,并再次运行计算。

相关内容

最新更新