数据结构-二维数组-特殊矩阵压缩存储

数据结构-二维数组-特殊矩阵压缩存储

一、什么是压缩存储

计算机中的存储就是将数据写到主存储器(或者外部辅存)中用于即将到来的计算服务。对于主存储器来说,存储空间十分珍贵,在矩阵的表示中有几类特殊的矩阵,如:对角矩阵、三对角矩阵、上三角矩阵、下三角矩阵、对称矩阵等,其中有大量的重复数据,在存储过程就需要进行压缩处理,使得主存储器中的数据尽量小的冗余。

二、特殊矩阵的存储

1.对角矩阵

a11a22a33ann

如上所示,没有标识的空白部分就是无效值,可以理解成全是0。这无效值部分,就不需要存进计算机主存了,所以没必要像两种顺序存储那样全部都把矩阵存下来;具体分析来说,只有对角线有值,则存储位置 k (假设主存中的一个位置标记为k)与矩阵下标对应关系为:k=i或者 k=j ,有了这个关系就可以对对角矩阵中的有效值进行随机存储。
令每个元素的存储长度为 e ,相对于元素a11,则:

address(aij)=address(a11)+(i1)e


address(aij)=address(a11)+(j1)e

2.三对角矩阵

a11a21a12a22a32a23a33a34an1n2an1n1ann1an1nann

如上所示,对三角矩阵包括对角线以及对角线上下各一个元素外( a11 上面没有元素和 ann 下面没有元素),其余的元素均为无效元素,也可看成是 0 的矩阵。现在需要把以上有效数据存储到主存中,如下所示:
这里写图片描述
可以看出,第1行和最后 1 行都只有两个元素,其他有三个元素。所以假设第i行为当前行,则从第 1 行到第(i1)行共有有 3(i1)1 个元素,当前第 i 行的元素aij之前有 ji+1 个元素(这个数是怎么得来的?下标 (ji) 的值刚好和元素 aij 在当前行的位置相差 2 ,所以要加上2,当前元素之前总共元素则要减去 1 ),可得到:
(3(i1)1)+(ji+1)=2i+j3

故,若已知元素 a11 的地址 address(a11) ,令每个元素占有的长度为 e ,
则有如下公式:
address(aij)=address(a11)+(2i+j3)e

以上是对两类特殊的矩阵进行压缩存储,写得不好,多多指教哈!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

majinshanNUN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值