稀疏矩阵乘法三元顺序表代码
时间: 2023-11-12 18:03:34 浏览: 108
稀疏矩阵的代码
3星 · 编辑精心推荐
以下是稀疏矩阵乘法的三元顺序表代码:
```python
class Triple:
def __init__(self, row, col, value):
self.row = row
self.col = col
self.value = value
def sparse_matrix_multiply(A, B):
n1, m1 = len(A), len(A[0])
n2, m2 = len(B), len(B[0])
if m1 != n2:
return None
# 转换成三元顺序表
A_sparse = []
for i in range(n1):
for j in range(m1):
if A[i][j] != 0:
A_sparse.append(Triple(i, j, A[i][j]))
B_sparse = []
for i in range(n2):
for j in range(m2):
if B[i][j] != 0:
B_sparse.append(Triple(i, j, B[i][j]))
# 稀疏矩阵乘法
result = [[0] * m2 for i in range(n1)]
for i in range(len(A_sparse)):
for j in range(len(B_sparse)):
if A_sparse[i].col == B_sparse[j].row:
result[A_sparse[i].row][B_sparse[j].col] += A_sparse[i].value * B_sparse[j].value
return result
```
其中,Triple类表示一个三元组,包含三个属性:行号row、列号col和元素值value。
主函数sparse_matrix_multiply接收两个矩阵A和B,先将它们转换成三元顺序表A_sparse和B_sparse。然后在两个三元顺序表中循环,找到A_sparse[i].col等于B_sparse[j].row的情况,将它们的乘积加入到结果矩阵的对应位置。
最后返回结果矩阵。
阅读全文