什么是稀疏矩阵
将矩阵中的元素按照零和非零分为两个集合,对于零元素,其占整个矩阵的元素个数比成为稠密度。
- 稠密度 > 0.05 稠密矩阵
- 稠密度 < 0.05 稀疏矩阵
稀疏矩阵算法
通过压缩稀疏矩阵中的零元素,节省运算空间。 常用算法 BLAS sparse matrix (稀疏矩阵)algorithms
1. coordinate storage - coo
一个直接的思路是只存储非零元素。而 coo 是其中最简单的存储结构。
coo index strucutre: 三个稀疏向量 three sparse vectors
coo 第一个 vector:存储所有的非零元素
coo 第二个 vector:存储非零元素的 column index
coo 第三个 vector:存储非零元素的 row index
2. compressed sparse row - csr
与 coo 类似,唯一的区别是在第三个 vector
第三个 vector 存储的是 row 的指针,如下图所示,存储某个 row 的第一个元素
3. compressed sparse column - csc
与 csr 同理, 第二个 vector 存储的是 column 的指针
4. block sparse row - bsr
bsr 有四个 vector
第一个 vector 存储非零元素
第二个 vector 存储 column index
第三个 vector 和 第四个 vector 存储的都是 row 指针,但是分别是第一个元素和最后一个元素
pointer begin and pointer end