У меня есть 2 разреженных файла матрицы в формате matrix-market:
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-the-multiplication-of-two-sparse-matrices
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]
Спасибо.