稀疏矩阵乘法复杂度

Posted

技术标签:

【中文标题】稀疏矩阵乘法复杂度【英文标题】:Sparse matrix multiplication complexity 【发布时间】:2018-01-30 06:54:05 【问题描述】:

我想表达两种算法的计算复杂度:sparse-matrix sparse-vector multiplication 和 sparse-matrix sparse-matrix multiplication,在 Eigen 或 Cusparse 中实现,使用 CSR 表示。

我知道这取决于几个参数,尤其是每个元素中非零值的数量。

但是,我找不到详细说明此类算法的复杂性并使用 O( ) 表示法表示的出版物。

【问题讨论】:

【参考方案1】:

假设您将A*BA 相乘,m*k 矩阵与a 每列非零,B k*n 矩阵与b 每列非零相乘。那么,操作数(*和+)为:

2*n*b*a

因为对于B 的每个n 列,我们必须循环通过Ab 列,其中B 的相应元素是非零的,然后乘法累加各自的a 非零。如果实施得当,如在 Eigen 或 Cusparse 中,我们有三个嵌套循环,恰好有 nba 迭代,因此复杂度为 O(a*b*n)

【讨论】:

以上是关于稀疏矩阵乘法复杂度的主要内容,如果未能解决你的问题,请参考以下文章

稀疏矩阵乘法 · Sparse Matrix Multiplication

poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化

稀疏矩阵与密集矩阵乘法 C++ Tensorflow

稀疏矩阵 - 矩阵乘法

如何在TensorFlow中执行稀疏矩阵*稀疏矩阵乘法?

稀疏矩阵的存储和乘法操作