Spaces:
Paused
Paused
| """ | |
| ===================== | |
| Minimum Spanning Tree | |
| ===================== | |
| A minimum spanning tree (MST) is a subset of edges in a weighted, | |
| connected graph that connects all vertices together with the | |
| minimum possible total edge weight. The `minimum_spanning_tree` | |
| function is used to compare the original graph with its MST. | |
| """ | |
| import networkx as nx | |
| import matplotlib.pyplot as plt | |
| # Create a graph | |
| G = nx.Graph() | |
| G.add_edges_from( | |
| [ | |
| (0, 1, {"weight": 4}), | |
| (0, 7, {"weight": 8}), | |
| (1, 7, {"weight": 11}), | |
| (1, 2, {"weight": 8}), | |
| (2, 8, {"weight": 2}), | |
| (2, 5, {"weight": 4}), | |
| (2, 3, {"weight": 7}), | |
| (3, 4, {"weight": 9}), | |
| (3, 5, {"weight": 14}), | |
| (4, 5, {"weight": 10}), | |
| (5, 6, {"weight": 2}), | |
| (6, 8, {"weight": 6}), | |
| (7, 8, {"weight": 7}), | |
| ] | |
| ) | |
| # Find the minimum spanning tree | |
| T = nx.minimum_spanning_tree(G) | |
| # Visualize the graph and the minimum spanning tree | |
| pos = nx.spring_layout(G) | |
| nx.draw_networkx_nodes(G, pos, node_color="lightblue", node_size=500) | |
| nx.draw_networkx_edges(G, pos, edge_color="grey") | |
| nx.draw_networkx_labels(G, pos, font_size=12, font_family="sans-serif") | |
| 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="green", width=2) | |
| plt.axis("off") | |
| plt.show() | |