稀疏矩阵概念

转载:稀疏矩阵概念及简单实现

稀疏矩阵:

在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。

这里写图片描述

特性:
1.稀疏矩阵其非零元素的个数远远小于零元素的个数,而且这些非零元素的分布也没有规律。
2.稀疏因子是用于描述稀疏矩阵的非零元素的比例情况。设一个n*m的稀疏矩阵A中有t个非零元素,则稀疏因子δδ的计算公式如下:δ=tn∗mδ=tn∗m(当这个值小于等于0.05时,可以认为是稀疏矩阵)

矩阵压缩:

存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算,如转置运算、加法运算、乘法运算等。
对于稀疏矩阵来说,采用二维数组的存储方法既浪费大量的存储单元用来存放零元素,又要在运算中花费大量的时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。

最常用的稀疏矩阵存储格式主要有:COO(Coordinate Format)和CSR(Compressed Sparse Row)。

COO很简单,就是使用3个数组,分别存储全部非零元的行下标(row index)、列下标(column index)和值(value);CSR稍复杂,对行下标进行了压缩,假设矩阵行数是m,则压缩后的数组长度为m+1,记作(row ptr),其中第i个元素(0-base)表示矩阵前i行的非零元个数。

(1)Coordinate(COO)
这里写图片描述
这是最简单的一种格式,每一个元素需要用一个三元组来表示,分别是(行号,列号,数值),对应上图右边的一列。这种方式简单,但是记录单信息多(行列),每个三元组自己可以定位,因此空间不是最优。

(2)Compressed Sparse Row (CSR)
这里写图片描述
CSR是比较标准的一种,也需要三类数据来表达:数值,列号,以及行偏移。CSR不是三元组,而是整体的编码方式。数值和列号与COO一致,表示一个元素以及其列号,行偏移表示某一行的第一个元素在values里面的起始偏移位置。如上图中,第一行元素1是0偏移(元素1前面不存在其它元素),第二行元素2是2偏移(元素2前面存在两个元素),第三行元素5是4偏移(元素5前面有4个元素),第4行元素6是7偏移(元素6前面有7个元素)。在行偏移的最后补上矩阵总的元素个数(非零个数),本例中是9。

CSC是和CSR相对应的一种方式,即按列压缩的意思。
以上图中矩阵为例:
Values: [1 5 7 2 6 8 3 9 4]
Row Indices:[0 2 0 1 3 1 2 2 3]
Column Offsets:[0 2 4 7 9]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
稀疏矩阵运算器是一种功能强大的计算工具,主要用于处理稀疏矩阵的各种运算。 在这门课程设计中,我们将学习稀疏矩阵的定义、表示以及运算方法。首先,我们将介绍稀疏矩阵概念,即矩阵中绝大多数元素为0的矩阵。稀疏矩阵在实际应用中有着广泛的应用,比如网络连接、图像处理等领域。 在稀疏矩阵的表示方面,我们将探讨几种不同的方法,如三元组表示法、十字链表表示法等。这些表示方法对于稀疏矩阵的存储和运算都有一定的影响,我们将详细比较它们的优缺点。 接下来,我们将学习稀疏矩阵的各种运算,包括矩阵的相加、相减、相乘等。我们将介绍相应的算法,并通过实例演示如何进行这些运算。同时,还需要考虑到矩阵的规模、存储结构等因素,以提高运算的效。 除了基本的稀疏矩阵运算外,我们还将涉及一些高级的运算,如矩阵的转置、求逆、求行列式等。这些运算对于某些科学计算和工程问题具有重要的意义,我们将讨论相应的算法和实现方法。 在课程设计中,我们将通过编程实现稀疏矩阵运算器。我们将使用C++等编程语言,实现各种矩阵运算的算法,并通过实例测试算法的正确性和效。同时,我们还将设计用户界面,使得用户可以方便地输入和操作稀疏矩阵。 通过这门课程设计,我们将深入了解稀疏矩阵概念、表示和运算方法。我们将掌握稀疏矩阵运算器的设计与实现技巧,提升我们在计算机科学与工程领域的应用能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值