稀疏矩陣(sparse matrix)的基本數據結構實現
/* --- primary CSparse routines and data structures ------------------------- */ntypedef struct cs_sparse /* matrix in compressed-column or triplet form */n{n csi nzmax ; /* maximum number of entries */n csi m ; /* number of rows */n csi n ; /* number of columns */n csi *p ; /* column pointers (size n+1) or col indices (size nzmax) */n csi *i ; /* row indices, size nzmax */n double *x ; /* numerical values, size nzmax */n csi nz ; /* # of entries in triplet matrix, -1 for compressed-col */n} cs ;n
舉個例子,稀疏矩陣如下:
1,2,0,0;7,0,0,4;0,0,0,1;0,9,8,1。
那麼數據結構里的p,i,x的結構分別為:p:0,2,4,5,8;i:0,1,0,3,3,1,2,3;x:1,7,2,9,8,4,1,1。其中p的含義是,第一col從i[0]開始,第二col從i[2]開始,第三col從i[4]開始,第四col從i[5]開始,i最大index為8-1=7。而i和x分別對應著每個column中row的index和值。
還有一種是triplet方法,就是p和i分別村col和row的index,x存數值,這時候p、i、x三者size是相同的,也就是nz,就不贅述了。參考header file:CSparse/include/cs.h, Timothy Davis
推薦閱讀:
※深度學習加速策略BN、WN和LN的聯繫與區別,各自的優缺點和適用的場景?
※[5] Python注釋
※這段MIPS程序的CPI如何計算?
※帶你了解機器學習(一): 機器學習中的「哲學」
※《三體》中人列計算機是否有可能性?