稀疏矩阵压缩
2016-02-27 12:10
288 查看
对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。
人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。
由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。
由于非零元素分布没有任何规律,所以在进行压缩
存储的时侯需要存储非零元素值的同时还要存储非零元素在矩阵中的位置,即非零元素所在的行号和列号,也就是在存储某个元素比如aij的值的同时,还需要存
储该元素所在的行号i和它的列号j,这样就构成了一个三元组(i,j,aij)的线性表。
人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。
由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。
由于非零元素分布没有任何规律,所以在进行压缩
存储的时侯需要存储非零元素值的同时还要存储非零元素在矩阵中的位置,即非零元素所在的行号和列号,也就是在存储某个元素比如aij的值的同时,还需要存
储该元素所在的行号i和它的列号j,这样就构成了一个三元组(i,j,aij)的线性表。
package example; public class Test{ public static void main(String[] args) { int rows=6; int cols=6; int n=8; int[][] A={{25,0,0,32,0,-25}, {0,33,77,0,0,0}, {0,0,0,55,0,0}, {0,0,0,0,0,0}, {101,0,0,0,0,0}, {0,0,38,0,0,0} }; int[][] B=new int[n+1][3]; B[0][0]=rows; //表示此矩阵的行数 B[0][1]=cols; //表示此矩阵的列数 B[0][2]=n; //表是非零的数目 yasuo(A,B,rows,cols); for(int i=0;i<n+1;i++) { for(int j=0;j<3;j++) System.out.print(B[i][j]+"\t"); System.out.println(); } } private static void yasuo(int[][] A, int[][] B, int rows, int cols) { int k=1; for(int i=0;i<rows;i++){ for(int j=0;j<cols;j++) { if(A[i][j]!=0) { B[k][0]=i+1; B[k][1]=j+1; B[k][2]=A[i][j]; k++; } } } } } /* 6 6 8 1 1 25 1 4 32 1 6 -25 2 2 33 2 3 77 3 4 55 5 1 101 6 3 38 */
相关文章推荐
- HDU-1051 做个骑士,以梦为马
- USACO1.2:dualpal
- bodybuilding
- PL/SQL之变量的作用范围
- 队列 <queue>
- java中的==、equals和hashCode以及hashCode生成
- 必须厘清的核心概念之堆栈
- NYOJ——小明的调查作业
- 微信OpenID获取
- source insight 支持verilog 及使用技巧
- windows使用git时出现:warning: LF will be replaced by CRLF
- iOS开发技巧之快速申明代码,比如快速申明代码
- SDK模态对话框不能接收WM_KEYDOWN的解决方法
- 业绩暴涨200%的4大策略,店长必学
- 常用网站
- 【Win 10 应用开发】获取本机的IP地址
- 去年才获千万投资的妈妈味道外卖平台倒闭了
- Opencv--视频操作基础
- Mysql一主多从和读写分离配置简记
- 栈 <stack>