已知两个稀疏矩阵A和B,其行数和列数均对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示
时间: 2024-05-16 22:14:32 浏览: 227
以下是一个用 Python 实现稀疏矩阵三元组表示的程序,包括矩阵加法操作:
```python
class SparseMatrix:
def __init__(self, data, row, col):
self.data = data
self.row = row
self.col = col
def add(self, other):
if self.row != other.row or self.col != other.col:
raise ValueError("Matrices have different shapes")
result_data = []
self_index = other_index = 0
while self_index < len(self.data) and other_index < len(other.data):
self_row, self_col, self_val = self.data[self_index]
other_row, other_col, other_val = other.data[other_index]
if self_row < other_row or (self_row == other_row and self_col < other_col):
result_data.append((self_row, self_col, self_val))
self_index += 1
elif self_row > other_row or (self_row == other_row and self_col > other_col):
result_data.append((other_row, other_col, other_val))
other_index += 1
else:
result_data.append((self_row, self_col, self_val + other_val))
self_index += 1
other_index += 1
while self_index < len(self.data):
result_data.append(self.data[self_index])
self_index += 1
while other_index < len(other.data):
result_data.append(other.data[other_index])
other_index += 1
return SparseMatrix(result_data, self.row, self.col)
```
其中,`data` 是一个存储非零元素的列表,每个元素是一个三元组 `(row, col, val)`,表示矩阵中第 `row` 行、第 `col` 列的元素值为 `val`。`row` 和 `col` 分别表示矩阵的行数和列数。`add` 方法用于将两个稀疏矩阵相加,返回一个新的稀疏矩阵对象。
在使用时,需要先将原始矩阵转换为稀疏矩阵对象,然后调用 `add` 方法进行相加操作,最后可以将结果转换为原始矩阵格式进行输出。
阅读全文