稀疏矩陣是指矩陣中元素大部分是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 部分;