稀疏矩阵乘法复杂度
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*B
与A
相乘,m*k
矩阵与a
每列非零,B
k*n
矩阵与b
每列非零相乘。那么,操作数(*和+)为:
2*n*b*a
因为对于B
的每个n
列,我们必须循环通过A
的b
列,其中B
的相应元素是非零的,然后乘法累加各自的a
非零。如果实施得当,如在 Eigen 或 Cusparse 中,我们有三个嵌套循环,恰好有 n
、b
和 a
迭代,因此复杂度为 O(a*b*n)
。
【讨论】:
以上是关于稀疏矩阵乘法复杂度的主要内容,如果未能解决你的问题,请参考以下文章
稀疏矩阵乘法 · Sparse Matrix Multiplication