数据结构之特殊矩阵的压缩存储

本文详细介绍了矩阵存储的不同方式,包括一维数组的存储结构、多维数组的按行优先和按列优先映射方法,并重点讲解了特殊矩阵如对称矩阵、三角矩阵、三对角矩阵及稀疏矩阵的压缩存储技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

矩阵存储主要还是将线性代数矩阵性质存储到一维或是多维数组中,题目一般都是问在数组的下标是几和下标与矩阵系数的对应关系,对于这种题目画个图设置一个简单的参数代进选项中的公式验证就好了。

有不足之处或是不懂之处尽请评论区留言。


一、数组的存储方式

以一维数组A[0...n-1]为例,其存储结构关系式为:

LOC(a_{i})=LOC(a_{0})+i*L(0\leq i< n)

其中L是每个数组元素所占的存储方式。

对于多维数组,有两种映射方法:按行优先和按列优先。

1.按行优先

设二维数组的行下标与列下标的范围分别为[0,h1]与[0,h2]。

LOC(a_{i,j})=LOC(a_{0,0})+[i*(h_{2}+1)+j]*L(0\leq i< n)

1.按列优先

LOC(a_{i,j})=LOC(a_{0,0})+[j*(h_{1}+1)+i]*L(0\leq i< n)

二、特殊矩阵的压缩存储

1.对称矩阵

很明显对于该矩阵a12与之对应相等的值是a21,也就是说可以二者同指向数组同一个下标便可压缩存储。那么我们只需要存储下三角的元素即可,上三角的元素只需要i,j互换就好了,因此元素下标之间的对应关系如下:

2.三角矩阵

对于下三角矩阵: 

根据等差数列前n行的元素为i*(i+1)/2,与下标我们需除去自身一行,既i=i-1.

对于上三角矩阵:

与下三角矩阵相反,为n+n-1+...+1.

第i-1行有n-i+2个元素。

3.三对角矩阵

在三对角矩阵中,所有非零元素都集中在主对角线为中心的3条对角线的区域,其他区域的元素都为零。

由此可以计算矩阵A三条对角线的元素a_{i,j}在一维数组B中存放的下标为:

k=2i+j-3

公式不推荐背,因为真的很好算,画个图思路痕清晰。

4.稀疏矩阵

矩阵中非零元素个数x,而整个矩阵中总元素个数为t,则当S=x/t\leq 0.05时称为稀疏矩阵。

稀疏矩阵的三元组既可以采用数组存储:

也可以采用十字链表法存储:


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fanstuck

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

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

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

打赏作者

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

抵扣说明:

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

余额充值