数据结构-二维数组-特殊矩阵压缩存储
2017-09-28 17:04
295 查看
数据结构-二维数组-特殊矩阵压缩存储
一、什么是压缩存储
计算机中的存储就是将数据写到主存储器(或者外部辅存)中用于即将到来的计算服务。对于主存储器来说,存储空间十分珍贵,在矩阵的表示中有几类特殊的矩阵,如:对角矩阵、三对角矩阵、上三角矩阵、下三角矩阵、对称矩阵等,其中有大量的重复数据,在存储过程就需要进行压缩处理,使得主存储器中的数据尽量小的冗余。二、特殊矩阵的存储
1.对角矩阵
⎡⎣⎢⎢⎢⎢⎢⎢⎢a11a22a33⋱ann⎤⎦⎥⎥⎥⎥⎥⎥⎥如上所示,没有标识的空白部分就是无效值,可以理解成全是0。这无效值部分,就不需要存进计算机主存了,所以没必要像两种顺序存储那样全部都把矩阵存下来;具体分析来说,只有对角线有值,则存储位置k(假设主存中的一个位置标记为k)与矩阵下标对应关系为:k=i或者k=j,有了这个关系就可以对对角矩阵中的有效值进行随机存储。
令每个元素的存储长度为e,相对于元素a11,则:
address(aij)=address(a11)+(i−1)e
或
address(aij)=address(a11)+(j−1)e
2.三对角矩阵
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢a11a21a12a22a32a23a33⋱a34⋱an−1n−2⋱an−1n−1ann−1an−1nann⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥如上所示,对三角矩阵包括对角线以及对角线上下各一个元素外(a11上面没有元素和ann下面没有元素),其余的元素均为无效元素,也可看成是0的矩阵。现在需要把以上有效数据存储到主存中,如下所示:
可以看出,第1行和最后1行都只有两个元素,其他有三个元素。所以假设第i行为当前行,则从第1行到第(i−1)行共有有3(i−1)−1个元素,当前第i行的元素aij之前有j−i+1个元素(这个数是怎么得来的?下标(j−i)的值刚好和元素aij在当前行的位置相差2,所以要加上2,当前元素之前总共元素则要减去1),可得到:
(3(i−1)−1)+(j−i+1)=2i+j−3
故,若已知元素a11的地址address(a11),令每个元素占有的长度为e,
则有如下公式:
address(aij)=address(a11)+(2i+j−3)e
以上是对两类特殊的矩阵进行压缩存储,写得不好,多多指教哈!
相关文章推荐
- 数据结构:矩阵的压缩存储(特殊矩阵)
- 【数据结构】特殊矩阵的压缩存储1——对称矩阵
- 【数据结构】特殊矩阵的压缩存储2——稀疏矩阵
- 数据结构-二维数组-对称矩阵压缩存储
- 【数据结构】压缩特殊矩阵
- 特殊矩阵的压缩存储
- C++数组应用之特殊矩阵的压缩存储
- 数据结构——特殊矩阵的压缩存储
- C++数组 特殊矩阵压缩存储
- 第九周:特殊矩阵的压缩存储
- 多维数组与特殊矩阵的压缩存储
- 第9周SHH数据结构-【项目2-对称矩阵压缩存储的实现与应用(2)】
- 【数据结构】稀疏矩阵的压缩存储和转置算法(C++代码)
- C++数组应用之特殊矩阵的压缩存储
- 特殊矩阵的压缩存储
- 数据结构第八周项目3--对称矩阵压缩存储的实现与应用
- C++数组应用之特殊矩阵的压缩存储
- 将对称矩阵压缩存储,实现矩阵相乘,输出相乘后结果(用二维数组)
- 特殊矩阵的压缩存储
- 数据结构——c语言描述 第五章 (1) 特殊矩阵的压缩存储