数据结构-二维数组-对称矩阵压缩存储

数据结构-二维数组-对称矩阵压缩存储

一、什么是对称矩阵

对称矩阵,顾名思义就是矩阵中的元素是对称的,那具体是关于什么对称呢?就是关于对角线对称,即关于左上角到右下角的对角线对称,如下图:

a21a41a61a12a22a62a14a44a64a16a26a46a66

其中 a22 a44 a66 在对角线上,其他元素都满足 aij=aji 特点,类似于这样的矩阵就是对称矩阵,(其中只写出来几个示例元素,没表示出来的具有相同的特点)很容易看出只要存储矩阵中的上三角元素或者下三角元素就够了,使得对称元素共享同一存储空间。

二、对称矩阵的压缩存储

这里主要讲只存储下三角区域中的元素,包括对焦线在内总共需要 n(n+1)2 个存储空间,如下图所示:
数据结构-二维数组-对称矩阵压缩存储_第1张图片
任给 aij 元素,当 ij 时,从第 1 行到第 (i1) 行共有元素 (1+i1)(i1)2 ,即 i(i1)2 个元素。元素 aij 为第 i 行的第 j 个元素,我们规定每个元素所占的空间为 e ,所以可得如下公式:

address(aij)=address(a11)+(i(i1)2+j1)e
同理,当 i<j 时可以得到如下公式:
address(aij)=address(a11)+(j(j1)2+i1)e
由于以上两个公式类似,可以合并如下公式:
address(aij)=address(a11)+(I(I1)2+J1)e

其中 I=max(i,j),J=min(i,j)

以上就是对称矩阵的压缩存储介绍,写得不好,多指教。

你可能感兴趣的:(数据结构)