我想表达两种算法的计算复杂性:稀疏矩阵稀疏向量乘法和稀疏矩阵稀疏矩阵乘法,如在Eigen或Cusparse中使用CSR表示。
我知道这取决于几个参数,尤其是每个元素中非零值的数量。
但是,我无法找到详细说明此类算法复杂性的出版物,并使用O()表示法表达。
答案 0 :(得分:2)
假设您将A*B
与A
m*k
矩阵相乘,每列a
非零,B
k*n
矩阵每列b
非零。然后,操作次数(*和+)为:
2*n*b*a
因为对于n
的每个B
列,我们必须遍历b
A
列B
的{{1}}对应元素非零,然后乘以相应的a
非零。如果正确实现,如在Eigen或Cusparse中,我们有三个嵌套循环,具有完全n
,b
和a
次迭代,因此复杂度为O(a*b*n)
。