稀疏矩阵是指矩阵中元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上是稀疏矩阵,很多稀疏度在90%甚至99%以上;因此我们需要有高效的稀疏矩阵存储格式。
本文参考了 https://www.cnblogs.com/xbinworld/p/4273506.html 此文章,对coo 和 csr 两种格式,进行摘录,进行备忘;
- COO Coordinate (以坐标的形式进行表示)
这是最简单的一种格式,每一个元素需要用一个三元组来表示,分别是(行号,列号,数值),对应上图右边的一列。这种方式简单,但是记录单信息多(行列),每个三元组自己可以定位,因此空间不是最优。
- Compressed Sparse Row (CSR) (以行压缩的形式进行表示)
CSR是比较标准的一种,也需要三类数据来表达:数值,列号,以及行偏移。CSR不是三元组,而是整体的编码方式。数值和列号与COO一致,表示一个元素以及其列号,行偏移表示某一行的第一个元素在values里面的起始偏移位置。如上图中,第一行元素1是0偏移,第二行元素2是2偏移,第三行元素5是4偏移,第4行元素6是7偏移。在行偏移的最后补上矩阵总的元素个数,本例中是9。
- Compressed Sparse Column (CSC) (以列压缩的形式进行表示)
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 5 7 9]
资源来源自网络,保持更新;更多内容请关注 cnblogs.com/xuyaowen;
其他参考链接:
https://blog.csdn.net/gaoborl/article/details/82869858
https://www.cnblogs.com/xbinworld/p/4273506.html
https://en.wikipedia.org/wiki/Sparse_matrix (上面对稀疏矩阵的格式,有较为详细的说明)在Storing a sparse matrix 部分;