帮我编写一段基于python的自适应邻接矩阵实现代码
时间: 2024-05-10 07:21:25 浏览: 11
以下是一个基于Python的自适应邻接矩阵实现的代码:
```python
class AdaptiveAdjacencyMatrix:
def __init__(self, initial_vertices=10):
self.matrix = [[0 for _ in range(initial_vertices)] for _ in range(initial_vertices)]
self.num_vertices = initial_vertices
def add_vertex(self):
for row in self.matrix:
row.append(0)
self.matrix.append([0 for _ in range(self.num_vertices)])
self.num_vertices += 1
def add_edge(self, vertex1, vertex2):
if vertex1 >= self.num_vertices or vertex2 >= self.num_vertices:
max_vertex = max(vertex1, vertex2)
for _ in range(self.num_vertices, max_vertex + 1):
self.add_vertex()
self.matrix[vertex1][vertex2] = 1
self.matrix[vertex2][vertex1] = 1
def remove_edge(self, vertex1, vertex2):
self.matrix[vertex1][vertex2] = 0
self.matrix[vertex2][vertex1] = 0
def remove_vertex(self, vertex):
self.matrix.pop(vertex)
for row in self.matrix:
row.pop(vertex)
self.num_vertices -= 1
def __str__(self):
return '\n'.join([' '.join([str(cell) for cell in row]) for row in self.matrix])
```
在这个实现中,我们开始时创建一个大小为`initial_vertices`的邻接矩阵,其中所有元素都是0。然后,我们可以使用`add_vertex`方法添加新的顶点,该方法会将新的列和行添加到矩阵中。我们可以使用`add_edge`方法添加边,该方法首先检查两个顶点是否已存在于矩阵中,如果不存在,则添加足够的新行和列以适应这些顶点。我们可以使用`remove_edge`方法删除边,该方法将适当的元素设置为0。最后,我们可以使用`remove_vertex`方法删除一个顶点,该方法将从矩阵中删除该行和列,并将`num_vertices`减少1。
这个实现还包括一个`__str__`方法,该方法返回一个字符串表示矩阵,其中每行用空格分隔,每个元素用一个空格分隔。这使得我们可以轻松地打印矩阵以进行调试。