python画最小生成树
时间: 2023-07-11 11:49:47 浏览: 106
最小生成树有很多种生成方法,主要有普利姆算法和克鲁斯卡尔算法
要画最小生成树,可以使用Python的networkx和matplotlib库。下面是一个简单的例子:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 创建一个带权图
G = nx.Graph()
G.add_edge('A', 'B', weight=4)
G.add_edge('B', 'C', weight=8)
G.add_edge('C', 'D', weight=7)
G.add_edge('D', 'E', weight=9)
G.add_edge('E', 'F', weight=10)
G.add_edge('F', 'C', weight=4)
G.add_edge('D', 'F', weight=14)
G.add_edge('E', 'C', weight=2)
G.add_edge('A', 'F', weight=16)
# 计算最小生成树
T = nx.minimum_spanning_tree(G)
# 绘制图形
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edge_labels(G, pos, edge_labels={(u, v): d['weight'] for u, v, d in G.edges(data=True)})
nx.draw_networkx_edges(T, pos, edge_color='r', width=2)
plt.axis('off')
plt.show()
```
这个例子中,我们首先创建了一个带权图,然后使用`nx.minimum_spanning_tree()`计算最小生成树。最后使用`networkx`和`matplotlib`库绘制图形。
阅读全文