(1)、目的:对于在实际问题中出现的大型的稀疏矩阵,若用常规分配方法在计算机中储存,将会产生大量的内存浪费,而且在访问和操作的时候也会造成大量时间上的浪费,为了解决这一问题,从而善生了多种解决方案。
(2)、由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价。具体操作是:将非零元素所在的行、列以及它的值构成一个三元组(i,j,v),然后再按某种规律存储这些三元组,这种方法可以节约存储空间。
具体如下图:
#define SMAX 1000 typedef struct { int i,j; //储存非零元素的行和列信息 ElementType e; //非零元素的值 } Triple; //定义三元组类型 typedef struct { int mu,nu,tu; //矩阵的行、列和非零元素的个数 Triple data[SMAX]; //三元组表 } TSMatrix;
注意:为更可靠描述,通常再加一个“总体”信息:即总行数、总列数、非零元素总个数。
用常规的二维数组表示时的算法:
for (col=1; col<=nu; ++col) { for (row=1; row<=mu; ++row) { T[col][row] =