c - C中的稀疏矩阵乘法
问题描述
我有 2 个矩阵市场格式的稀疏矩阵文件:
row col val
1 1 3.0
1 2 1.0
2 3 2.0
etc...
目前,我已将文件拆分为 6 个数组:
row_A[], col_A[], val_A[], row_B[] …
其中分别包含行索引、列索引和值。
我想轻松地将这两个矩阵相乘,而不必先将它们转换为密集矩阵格式。有这样做的算法吗?
我在 Quora 上找到了这个伪代码,但我不确定它是否是最好的实现,或者它将如何在 C 中实现:https ://www.quora.com/What-is-the-C-program-for-两个稀疏矩阵的乘法
multiply(A,B):
for r in A.rows:
for c in A.rows[r]:
for k in B.rows[c]:
C[r,k] += A[r,c]*B[c,k]
谢谢。
解决方案
有一些稀疏的包可以为你做乘法。您是否在 SuiteSparse 中尝试过 Csparse? http://faculty.cse.tamu.edu/davis/suitesparse.html
您甚至不需要转换矩阵格式。然而,也有办法以三联格式喂食。
推荐阅读
- excel - 在 VBA 中查找数组中的匹配值
- r - 使用 GGPLOT2 的密度图问题
- c# - C#卡路里计数器
- python - IndexError:字符串索引超出范围(气流和 Python)
- epplus - EPPlus 如何写出实际的“真实”值
- asp.net - VB ASP.NET webforms 应用程序:在不存在的代码上编译错误
- django - 如何将结果芹菜返回到模板django
- c# - C# 在 DateTime.ParseExact 中手动指定时区
- python - 如何使用 Tweepy 获取 Twitter 生物信息
- ios - 跟踪增强面 (ARCore) 的面网格顶点,而不考虑旋转