大型稀疏矩阵对存储和CPU要求高,很多集成化软件对于特大型矩阵的运算束手无策,因此需要一种优良的数据结构筛除稀疏矩阵中的0,从而实现数据的高效存储和运算。
对于m行n列的大型稀疏矩阵A(large sparse matrix),它大多数元素都为0,则可以使用三个一维数组存储该矩阵:A(k),JA(k),NA(n).每个数据的含义:
**A(k):**若A共有m*n个元素,其中有k个非零元素,每个非零元素按行存储,A(i)为第i个非零元素。
**JA(k):**与数组A一样,有k个元素;JA(i)代表第i个非零元素在矩阵A的第JA(i)行。
**NA(n):**共n个元素,NA(i)代表矩阵A的第i行有NA(i)个非零元素。
用图片表示更加直观:
A = [ 0 a 12 a 13 … 0 a 21 a 22 0 … 0 ⋮ ⋮ 0 0 0 … a m n ] N A ( 1 ) = 2 N A ( 2 ) = 2 ⋮ N A ( n ) = 1 l = ∣ l 1 . . . l 2 ∣ l 1 . . l 2 ∣ . . . ∣ l 1 l 2 ∣ A = [ a 12 , a 13 , a 21 , a 22 , . . . , a m n ] J A = [ 2 , 3 , 1