无尺寸的2D到1D转换

时间:2019-05-07 12:56:35

标签: math

假设我要跟踪网格中单元的状态。假设网格的尺寸为"${ages.random()}" 。我可以简单地创建一个长度为m x n的向量,并使用该向量跟踪单元状态。在这种情况下,网格中的每个点(即2D)将映射到向量(1D)中的元素。

我以前使用过的一种方法是这样的:

m*n

我的问题是这样

当网格尺寸未知或网格无限时,是否有一种如上所述的2D-> 1D映射的方法?

1 个答案:

答案 0 :(得分:2)

是的,存在自然数从2D到1D的映射,称为Pairing functions。 例如,Cantor配对功能:

defun 2d->1d (x, y):
    return (1 / 2) * (x + y) * (x + y + 1) + y;

有关反向功能,请参见上面的链接,它要复杂一些。