稀疏矩阵的乘法
用三元组表示的稀疏矩阵,用c语言选择合适的算法实现两个稀疏矩阵的乘法。在网上找了很多资料,还是不是很懂。有没有容易理解的算法分享一下。最好能有相关的说明。谢谢!
对了,我的三元组顺序表的结构如下:
#define MaxSize 100 /*矩阵中非零元素最多个数*/
typedef int ElemType;
typedef struct
{
int r; /*行号*/
int c; /*列号*/
ElemType d; /*元素值*/
} TupNode; /*三元组定义*/
typedef struct
{
int rows; /*行数值*/
int cols; /*列数值*/
int nums; /*非零元素个数*/
TupNode data[MaxSize];
} TSMatrix;
[解决办法]
原理是很直观的。
仅仅考虑乘积矩阵中非零元素的三元素:位置和值。
生成非零元素的原两矩阵的行和列非零元素匹配也由已经指定的三元素构成。
[解决办法]
C(i,j)=Sum(A(i,k)*B(k,j))