使用对角矩阵进行更高效的矩阵乘法

计算科学 线性代数 稀疏矩阵
2021-12-10 23:28:39

稀疏矩阵LL=DKG.

  • D是大小的稀疏矩阵m×n.
  • G是大小的稀疏矩阵n×m.
  • K是大小的对角矩阵n×n.

L需要根据更新的对角线条目多次形成K. 两个都DG从不改变。

有没有更快的形成方式L不执行两个完整的稀疏矩阵乘法?

1个回答

每个条目Ki,i在对角线上K乘以列的外积iD和行iG. 您可以将产品写为

DKG=i=1nKi,i(D:,iGi,:)

如果您预先计算并存储稀疏的外部产品D:,iGi,:,那么您可以快速将这些乘以Ki,i并将这些条款添加到您的产品中。由于产品矩阵稀疏模式不会改变,您可以使用产品的稀疏模式预先分配一个数据结构,并在每次更新时重用它K.

在这样做时,您可以通过预先计算稀疏乘积矩阵中的每个条目来节省时间D:,iGi,:属于。例如,如果有一个条目D:,1G1,:在位置 (3,4),并且您知道位置 (3,4) 存储在 DKG 乘积矩阵的第 33 个条目中,然后记录这是乘积矩阵中的第 33 个条目这一事实,而不是记录 (3, 4)。