Kruskal算法是一种在给定加权图中寻求最小生成树的方法。其步骤大致如下:
(1)令i=1,Ei=Φ.( Φ表示空集)。
(2)选一条边ei ∈ E\Ei-1,使(V,Ei-1∪{e})不含圈的所有边e(ei ∈ E\Ei-1)中权最小的边。令Ei=Ei-1∪{e},如果这样的边不存在,则T=(V,Ei-1)是最小树。
(3)把i换成i+1,返回(2)。
算法原理不是很难,利用Python中的networkx库可以轻松实现。
以下题中图(b)为例:
一·创建带权无向图
import networkx as nx
import matplotlib.pyplot as plt
g=