写一段无向图的python代码
时间: 2023-09-18 11:05:57 浏览: 76
无向图的计算代码
### 回答1:
当然可以,以下是一段简单的无向图的 Python 代码:
```python
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = [[] for _ in range(vertices)]
def add_edge(self, u, v):
self.graph[u].append(v)
self.graph[v].append(u)
def print_graph(self):
for i in range(self.V):
print("Vertex", i, end=": ")
for j in self.graph[i]:
print(j, end=" ")
print()
g = Graph(5)
g.add_edge(0, 1)
g.add_edge(0, 4)
g.add_edge(1, 2)
g.add_edge(1, 3)
g.add_edge(1, 4)
g.add_edge(2, 3)
g.add_edge(3, 4)
g.print_graph()
```
这段代码创建了一个无向图,其中有 5 个顶点,然后添加了一些边。最后,它打印出了整个图的邻接表表示。
### 回答2:
下面是一个使用邻接矩阵表示无向图的Python代码:
```python
class Graph:
def __init__(self, num_vertices):
self.num_vertices = num_vertices
self.adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
def add_edge(self, v1, v2):
if v1 >= 0 and v1 < self.num_vertices and v2 >= 0 and v2 < self.num_vertices:
self.adj_matrix[v1][v2] = 1
self.adj_matrix[v2][v1] = 1
def remove_edge(self, v1, v2):
if v1 >= 0 and v1 < self.num_vertices and v2 >= 0 and v2 < self.num_vertices:
self.adj_matrix[v1][v2] = 0
self.adj_matrix[v2][v1] = 0
def print_graph(self):
for row in self.adj_matrix:
print(row)
# 创建一个无向图对象
graph = Graph(5)
# 添加边
graph.add_edge(0, 1)
graph.add_edge(0, 4)
graph.add_edge(1, 2)
graph.add_edge(1, 3)
graph.add_edge(1, 4)
graph.add_edge(2, 3)
graph.add_edge(3, 4)
# 打印图的邻接矩阵
graph.print_graph()
```
上述代码中,`Graph`类表示一个无向图。在构造函数中,通过传入顶点数量来初始化邻接矩阵。`add_edge`方法用于添加边,`remove_edge`方法用于删除边。`print_graph`方法用于打印邻接矩阵。最后,创建一个无向图对象并添加一些边,然后打印图的邻接矩阵。
### 回答3:
下面是一段简单的Python代码,用于表示无向图:
```python
class Graph:
def __init__(self, edges):
self.graph = {}
self.add_edges(edges)
def add_edge(self, u, v):
if u in self.graph:
self.graph[u].append(v)
else:
self.graph[u] = [v]
if v in self.graph:
self.graph[v].append(u)
else:
self.graph[v] = [u]
def add_edges(self, edges):
for u, v in edges:
self.add_edge(u, v)
def print_graph(self):
for node in self.graph:
print(node, "->", ", ".join(map(str, self.graph[node])))
# 创建一个无向图实例
edges = [(1, 2), (2, 3), (3, 4), (4, 1)]
g = Graph(edges)
# 打印图的邻接表表示
g.print_graph()
```
以上代码定义了一个Graph类,其中包含`add_edge`方法用于添加边,`add_edges`方法用于添加多条边,`print_graph`方法用于打印图的邻接表表示。创建无向图实例时,需要提供边的列表。以上代码中的无向图由四个节点(1, 2, 3, 4)和四条边((1, 2), (2, 3), (3, 4), (4, 1))组成。执行代码后,会打印出每个节点及其相邻节点。
阅读全文