帮我写一段构建关联矩阵的代码
时间: 2024-09-10 12:13:26 浏览: 48
关联矩阵(Adjacency Matrix)是图论中表示图的一种方式,用于描述图中顶点之间是否相邻。在一个有 n 个顶点的图中,关联矩阵是一个 n×n 的二维数组,矩阵中的元素 a_ij 表示顶点 i 和顶点 j 是否相邻(通常使用 0 和 1 表示,1 表示相邻,0 表示不相邻)。在无向图中,关联矩阵是对称的;而在有向图中,关联矩阵则没有这一特性。
以下是一个使用Python语言,基于NetworkX库构建无向图关联矩阵的示例代码:
```python
import numpy as np
import networkx as nx
# 创建一个空的无向图
G = nx.Graph()
# 添加边
G.add_edge('A', 'B')
G.add_edge('A', 'C')
G.add_edge('B', 'C')
G.add_edge('B', 'D')
# 获取图中的所有顶点
nodes = list(G.nodes())
# 初始化关联矩阵
adjacency_matrix = np.zeros((len(nodes), len(nodes)))
# 填充关联矩阵
for edge in G.edges():
# 获取边的两个顶点在节点列表中的索引
i, j = nodes.index(edge[0]), nodes.index(edge[1])
# 将对应位置的元素设置为1
adjacency_matrix[i][j] = 1
adjacency_matrix[j][i] = 1
# 打印关联矩阵
print(adjacency_matrix)
```
如果你希望创建一个有向图的关联矩阵,可以使用NetworkX库中的`DiGraph()`函数代替`Graph()`来创建有向图。注意,此时填充关联矩阵的方式也会有所不同,因为有向图的关联矩阵不需要对称填充。
阅读全文