学会用行逻辑链接的顺序表存储稀疏矩阵之后,本节教大家用这种存储结构解决一个实际问题:计算两个稀疏矩阵的乘积。
关于矩阵乘法,并不是任意两个矩阵都能相乘,做乘法的两个矩阵必须满足:第一个矩阵(A)的列数和第二个矩阵(B)的行数相等,才能做 A*B 运算。例如:
图 1 矩阵相乘
图 1 中,矩阵 A 的列数和矩阵 B 的行数相等,就可以执行 A*B 运算。矩阵乘法的运算规则是:
- 矩阵 A 的第 1 行元素和矩阵 B 中第 1 列对应的元素做乘法运算,所有乘积的和作为矩阵 C 第 1 行第 1 列的值;
- 矩阵 A 的第 1 行元素和矩阵 B 中第 2 列对应的元素做乘法运算,所有乘积的和作为矩阵 C 第 1 行第 2 列的值;
- 矩阵 A 的第 2 行元素和矩阵 B 中第 1 列对应的元素做乘法运算,所有乘积的和作为矩阵 C 第 2 行第 1 列的值;
- 矩阵 A 的第 2 行元素和矩阵 B 中第 2 列对应的元素做乘法运算,所有乘积的和作为矩阵 C 第 2 行第 2 列的值;
- 以此类推。
比如,C12 = 6 的计算公式为:A11*B12 + A12*B22 + A13*B32 + A14*B42,即 3*2 + 0*0 + 0*4 + 5*0 &#