是否有希尔伯特曲线的实现[ 0 , 1 ][0,1]到,其中很大?()[ 0 , 1]n[0,1]nnnn = 10 , 000n=10,000

计算科学 可视化 高维
2021-12-15 03:53:07

我想用希尔伯特曲线将 [0,1] 中的每个点映射[,其中维希尔伯特曲线。[0,1][0,1]nn=10,000

f:[0,1][0,1]n,

n

我找到了Cortesi的库,或者Sergeyev、Strongin 和 Lera书中给出的代码。

Cortesi 库使用了索引系统,所以我没有地图 书中的代码给出了一个地图,但它对大有问题。f
fn

如果可能的话,我想要一个指向免费代码的指针。
或一些关于如何编写这样的的论文/建议。f

我的用例是我有一个函数 我想用 所以我希望是一条希尔伯特曲线,这样就可以保留集合包含。

G:[0,1]nR,
H=Gf:[0,1]R.
f

1个回答

我没有时间了解所有细节,但也许这个答案可以提供一些有用的直觉。

基本上,可行的方法是将个二进制二进制数分配为个维度中每个维度的最高有效数字(因此,第一个十进制数字是第一维,第二个十进制数字是第二维中的最高有效数字,依此类推)。然后,您在映射到涉及平移/旋转/反射区间中执行坐标更改,这取决于先前读取的个数字,然后重复该过程。N[0,1]N[0,1]NN

的情况下,在我看来它遵循此模型的过程如下所示:http: //bit-player.org/2013/mapping-the-hilbert-curve改变坐标的操作符就是他们所说的与您的情况的主要计算差异是,您正在考虑位组(或。您的运算符将对大小为的向量进行操作,而不是大小为的向量。并且会有N=2Hi03N02N1HiN22N运算符,因此您将无法预先计算所有这些运算符。Hi

希望这能澄清而不是混淆。

此外,这个问题有多少取决于您尝试绘制的函数,但您可能面临的一个问题是,要在 N 个坐标中的每个坐标中获得一位精度,您必须具有位精度在之间的实数中。10,000 位的精度是相当多的 :)N01