在Python中,可以使用二维数组或列表的嵌套来表示邻接矩阵。以下是使用邻接矩阵表示图的几种方法:
方法一:使用二维数组
```python
size = 5 矩阵的大小
adj_matrix = [ * size for _ in range(size)] 创建一个大小为size的二维数组
设置节点之间的连接关系
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
adj_matrix = 1
打印邻接矩阵
for row in adj_matrix:
print(row)
```
方法二:从边列表生成邻接矩阵
```python
def edges_to_adjacency_matrix(edges):
找到图中节点的数量
max_node = max(max(edge) for edge in edges)
adj_matrix = [ * (max_node + 1) for _ in range(max_node + 1)]
设置节点之间的连接关系
for edge in edges:
adj_matrix[edge][edge] = 1
adj_matrix[edge][edge] = 1 对于无向图,需要设置双向连接
return adj_matrix
示例边列表
edges = [(0, 1), (0, 2), (1, 2), (2, 3)]
adj_matrix = edges_to_adjacency_matrix(edges)
打印邻接矩阵
for row in adj_matrix:
print(row)
```
方法三:使用列表的嵌套创建邻接矩阵
```python
创建一个5x5的邻接矩阵,初始值为0
adj_matrix = [[0 for _ in range(5)] for _ in range(5)]
假设我们要设置节点1和节点2之间有一条边(即权重为1)
adj_matrix = 1
adj_matrix = 1
打印邻接矩阵
for row in adj_matrix:
print(row)
```
方法四:处理有向图和无向图
```python
def edges_to_adjacency_matrix(edges, is_directed=False):
找到图中节点的数量
max_node = max(max(edge) for edge in edges)
adj_matrix = [ * (max_node + 1) for _ in range(max_node + 1)]
设置节点之间的连接关系
for edge in edges:
adj_matrix[edge][edge] = 1
if not is_directed:
adj_matrix[edge][edge] = 1 对于无向图,需要设置双向连接
return adj_matrix
示例边列表
edges = [(0, 1), (0, 2), (1, 2), (2, 3)]
adj_matrix = edges_to_adjacency_matrix(edges)
打印邻接矩阵
for row in adj_matrix:
print(row)
```
方法五:处理带权重的图