Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 压缩对称距离矩阵的存取元_Arrays_Multidimensional Array_Linear Algebra_Indices - Fatal编程技术网

Arrays 压缩对称距离矩阵的存取元

Arrays 压缩对称距离矩阵的存取元,arrays,multidimensional-array,linear-algebra,indices,Arrays,Multidimensional Array,Linear Algebra,Indices,假设你有一个对称的距离矩阵a。例如A是4*4(矩阵上方和左侧的数字是测量距离的元素的索引,我们仅使用较低的三角形): 因此,基本上,如果A是n*n,我们只有n*(n-1)/2有用的条目。消除对角线上的零,我们得到以下矩阵(类似于Matlab和R的矩阵): 接下来,我们可以有效地将该矩阵以压缩格式存储在一维数组中,其中包含np=n*(n-1)/2个元素: Ap = {a10, a20, a21, a30, a31, a32} 这可以加快许多搜索(例如搜索最近的元素对等)并节省大量空间(当n较大时

假设你有一个对称的距离矩阵
a
。例如
A
4*4
(矩阵上方和左侧的数字是测量距离的元素的索引,我们仅使用较低的三角形):

因此,基本上,如果
A
n*n
,我们只有
n*(n-1)/2
有用的条目。消除对角线上的零,我们得到以下矩阵(类似于Matlab和R的矩阵):

接下来,我们可以有效地将该矩阵以压缩格式存储在一维数组中,其中包含
np=n*(n-1)/2个
元素:

Ap = {a10, a20, a21, a30, a31, a32}
这可以加快许多搜索(例如搜索最近的元素对等)并节省大量空间(当
n
较大时非常有用)


访问元素
i
j
之间的距离相当于访问压缩矩阵中的元素
j+i(i-1)/2
,即
A[i,j]=Ap[j+i(i-1)/2]
对于
i>0,j好,我找到了答案:

i = floor{ (1 + sqrt[1 + 8*x])/2 }
j = x - i
Ap = {a10, a20, a21, a30, a31, a32}
i = floor{ (1 + sqrt[1 + 8*x])/2 }
j = x - i