矩阵的压缩存储


数组
想象一下,数组就像一排排的座位,每个座位上都有一个编号,这样你就知道每个座位在哪里。数组就是一堆东西排成行和列,每个东西都有一个编号,我们叫它下标。
数组怎么存东西
当你把东西放进数组里,它们在电脑的大脑(内存)里是排成一长串紧紧挨着的。
多维数组
如果你有两层或者更多层的座位,比如电影院里的座位,你可以先按行来排,也可以按列来排。这就是多维数组的存储方式。
矩阵压缩存储
矩阵压缩存储就像是把一些空座位或者相同的座位合并起来,这样就不用占太多空间了。
特殊矩阵
特殊矩阵就像是一些有规律的座位排列,比如:
对称矩阵:就像镜子里的反射,左边的和右边的座位是一模一样的。
三角矩阵:只有下面或者上面的座位有人,中间的座位都是空的。
三对角矩阵:只有中间的三条线有人,其他地方都是空的。
稀疏矩阵:就像一个很大的电影院,但是只有零星几个人坐着,大部分座位都是空的。
存储方法
对于这些特殊矩阵,我们可以用一些聪明的方法来存:
对称矩阵:只需要存一半的座位信息。
三角矩阵和三对角矩阵:只需要存有“人”坐的那几条线。
稀疏矩阵:只需要记下哪些座位有人,不用管空的座位。
压缩存储的缺点
但是,如果你把座位压缩存储了,你就不能随便挑一个座位来看有没有人坐,这就像是失去了随机存取的能力。
 

知识点链接
数组概念
数组:由相同类型的数据元素构成的有限序列,元素通过下标进行索引。
数组的维界:下标取值的范围。
数组与线性表的关系:一维数组相当于线性表,二维数组可以看作是由线性表组成的线性表。
数组的存储结构
所有元素在内存中占用连续的存储空间。
多维数组映射方法
按行优先:按照一行一行的顺序存储。
按列优先:按照一列一列的顺序存储。
矩阵的压缩存储
压缩存储:为值相同的元素只分配一个存储空间,节省存储空间。
特殊矩阵:具有许多相同或零元素,且这些元素分布具有规律性的矩阵。
特殊矩阵类型
对称矩阵:方阵中任意元素a(i,j) = a(j,i),可以压缩存储在一维数组中。
三角矩阵:分为下三角矩阵和上三角矩阵。
下三角矩阵:上三角区元素为常量,压缩存储下三角区和主对角线元素后,存储常量一次。
上三角矩阵:下三角区元素为常量,压缩存储上三角区和主对角线元素后,存储常量一次。
三对角矩阵:除三条对角线外,其他元素为零,采用压缩存储。
稀疏矩阵:非零元素相对于总元素数非常少,采用三元组(行标,列标,值)存储。
存储方式
三元组存储:非零元素及其行和列信息。
十字链表法:另一种存储稀疏矩阵的方法。
压缩存储的特点
压缩存储后的稀疏矩阵失去了随机存取的特性。
公式和推导
文档中提到,如果记不住具体的存储位置计算公式,可以记住推导过程,在考试时现场推演。
总结
文档提供了矩阵压缩存储的基本概念、特殊矩阵的类型及其压缩存储方法,以及存储稀疏矩阵的两种主要方式。这些技术主要用于优化存储空间的使用,特别是在处理具有大量相同或零元素的大型矩阵时。
 

 

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
稀疏矩阵压缩存储方法是一种优化矩阵存储空间的方法,它只存储非零元素及其对应的行列索引。常见的稀疏矩阵压缩存储方法有三种:COO(Coordinate),CSR(Compressed Sparse Row)和CSC(Compressed Sparse Column)。 1. COO(Coordinate)方法: COO方法是最简单的稀疏矩阵压缩存储方法,它将非零元素的值、行索引和列索引分别存储在三个数组中。例如,对于一个3x3的矩阵: ``` 1 0 0 0 2 0 0 0 3 ``` 使用COO方法进行压缩存储,可以得到以下三个数组: ``` values = [1, 2, 3] rows = [0, 1, 2] cols = [0, 1, 2] ``` 其中,values数组存储非零元素的值,rows数组存储非零元素的行索引,cols数组存储非零元素的列索引。 2. CSR(Compressed Sparse Row)方法: CSR方法是一种按行压缩存储稀疏矩阵的方法。它使用三个数组来存储非零元素的值、列索引和行偏移量。行偏移量数组存储每一行的非零元素在values和cols数组中的起始位置。例如,对于上述的矩阵,使用CSR方法进行压缩存储,可以得到以下三个数组: ``` values = [1, 2, 3] cols = [0, 1, 2] row_offsets = [0, 1, 2, 3] ``` 其中,values数组和cols数组的含义与COO方法相同,row_offsets数组存储每一行的非零元素在values和cols数组中的起始位置。 3. CSC(Compressed Sparse Column)方法: CSC方法是一种按列压缩存储稀疏矩阵的方法。它使用三个数组来存储非零元素的值、行索引和列偏移量。列偏移量数组存储每一列的非零元素在values和rows数组中的起始位置。例如,对于上述的矩阵,使用CSC方法进行压缩存储,可以得到以下三个数组: ``` values = [1, 2, 3] rows = [0, 1, 2] col_offsets = [0, 1, 2, 3] ``` 其中,values数组和rows数组的含义与COO方法相同,col_offsets数组存储每一列的非零元素在values和rows数组中的起始位置。 这三种稀疏矩阵压缩存储方法各有优缺点,选择哪种方法取决于具体的应用场景和对存储空间和计算效率的要求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值