注意
跳转至末尾下载完整示例代码。
最小生成树
本例展示了如何使用 最小生成树 从输入图中生成igraph.Graph.spanning_tree()
。如果您只需要普通的生成树,请查看生成树。
import random
import igraph as ig
import matplotlib.pyplot as plt
我们首先生成一个带有 1 到 20 之间随机整数权重的网格图。
然后,我们可以使用 igraph.Graph.spanning_tree()
计算最小生成树,确保传入随机生成的权重。
mst_edges = g.spanning_tree(weights=g.es["weight"], return_tree=False)
我们可以打印出最小边权重和。
print("Minimum edge weight sum:", sum(g.es[mst_edges]["weight"]))
# Minimum edge weight sum: 136
Minimum edge weight sum: 201
最后,我们可以绘制该图,突出显示属于最小生成树的边。
g.es["color"] = "lightgray"
g.es[mst_edges]["color"] = "midnightblue"
g.es["width"] = 1.0
g.es[mst_edges]["width"] = 3.0
fig, ax = plt.subplots()
ig.plot(
g,
target=ax,
layout="grid",
vertex_color="lightblue",
edge_width=g.es["width"],
edge_label=g.es["weight"],
edge_background="white",
)
plt.show()

脚本总运行时间: (0 分 0.207 秒)