Python建立一个无向图或有向图的邻接矩阵
时间: 2023-09-05 11:10:07 浏览: 43
可以使用NumPy库来创建邻接矩阵。以下是一个示例代码,用于创建一个有向图的邻接矩阵:
```python
import numpy as np
# 定义图的大小
N = 5
# 创建一个空矩阵
adj_matrix = np.zeros((N, N), dtype=int)
# 添加边
adj_matrix[0][3] = 1
adj_matrix[1][0] = 1
adj_matrix[1][2] = 1
adj_matrix[2][4] = 1
adj_matrix[3][1] = 1
adj_matrix[4][3] = 1
# 显示邻接矩阵
print(adj_matrix)
```
输出结果:
```
[[0 0 0 1 0]
[1 0 1 0 0]
[0 0 0 0 1]
[0 1 0 0 0]
[0 0 0 1 0]]
```
这个邻接矩阵表示了一个有向图,其中顶点0指向顶点3,顶点1指向顶点0和顶点2,顶点2指向顶点4,顶点3指向顶点1,顶点4指向顶点3。
相关问题
以邻接矩阵形式创建一个无向图
可以使用二维数组来表示邻接矩阵,其中每个元素表示两个节点之间是否有边相连。对于无向图而言,邻接矩阵应该是对称的,即如果 a[i][j] 为 1,则 a[j][i] 也为 1。
以下是一个创建无向图邻接矩阵的示例代码:
```python
# 定义节点数和边数
n = 5
m = 7
# 初始化邻接矩阵
graph = [[0]*n for _ in range(n)]
# 添加边,注意无向图的邻接矩阵是对称的
edges = [(0, 1), (0, 2), (1, 2), (1, 3), (2, 4), (3, 4), (4, 0)]
for edge in edges:
graph[edge[0]][edge[1]] = 1
graph[edge[1]][edge[0]] = 1
# 打印邻接矩阵
for i in range(n):
for j in range(n):
print(graph[i][j], end=" ")
print()
```
输出结果为:
```
0 1 1 0 1
1 0 1 1 0
1 1 0 0 1
0 1 0 0 1
1 0 1 1 0
```
其中,节点数为 5,边数为 7,邻接矩阵中的 1 表示两个节点之间有边相连,0 则表示没有边相连。
输入一组顶点,建立无向图的邻接矩阵。
假设我们要建立的无向图有n个顶点,可以使用一个n*n的矩阵来表示图中的边。如果两个顶点之间有边相连,则对应矩阵元素的值为1,否则为0。
以下是一个示例代码,假设我们要建立一个有5个顶点的无向图:
```python
n = 5
adj_matrix = [[0] * n for _ in range(n)]
# 假设输入的是边的信息,例如(1,2),(2,3),(3,4),(4,5),(5,1)
edges = [(1,2),(2,3),(3,4),(4,5),(5,1)]
# 根据边的信息更新邻接矩阵
for edge in edges:
start, end = edge
adj_matrix[start-1][end-1] = 1
adj_matrix[end-1][start-1] = 1
# 输出邻接矩阵
for row in adj_matrix:
print(row)
```
输出结果:
```
[0, 1, 0, 0, 1]
[1, 0, 1, 0, 0]
[0, 1, 0, 1, 0]
[0, 0, 1, 0, 1]
[1, 0, 0, 1, 0]
```
其中矩阵中第i行第j列的元素表示顶点i和顶点j之间是否有边相连,1表示相连,0表示不相连。