怎么用python编程邻接矩阵

时间:2025-01-24 11:46:30 游戏攻略

在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)

```

方法五:处理带权重的图