写一段Python代码,计算图G的权重邻接矩阵
时间: 2024-10-27 19:15:24 浏览: 40
在Python中,我们可以使用`networkx`库来创建和操作图,并使用`numpy`处理矩阵。首先需要安装这两个库,如果还没有安装,可以使用下面的命令:
```bash
pip install networkx numpy
```
接下来是一个简单的例子,假设我们有一个字典表示图的边及其权重:
```python
import networkx as nx
import numpy as np
# 假设图G的边和权重存储在一个字典中,例如:
edge_weights = {
('A', 'B'): 5,
('B', 'C'): 7,
('C', 'D'): 2,
('D', 'E'): 9,
('E', 'A'): 4,
}
# 使用networkx创建无向图
G = nx.Graph()
for edge, weight in edge_weights.items():
G.add_edge(edge[0], edge[1], weight=weight)
# 将图转换为权重邻接矩阵,默认值为0(如果没有边)
adj_matrix = nx.to_numpy_array(G, nodelist=list(G.nodes()), dtype=int)
weights = [G[u][v]['weight'] for u, v in adj_matrix.nonzero()]
# 将权重应用到对应的矩阵元素上
weighted_adj_matrix = np.multiply(adj_matrix, weights)
print("权重邻接矩阵:")
print(weighted_adj_matrix)
```
在这个例子中,`weighted_adj_matrix`就是图G的权重邻接矩阵。请注意,这仅适用于无向图。如果你有其他特定需求或数据结构,可以根据实际情况调整代码。
阅读全文