rustworkx.minimum_spanning_edges#
- minimum_spanning_edges(graph, weight_fn=None, default_weight=1.0)#
使用Kruskal算法查找无向图中最小生成树或森林的边。
最小生成树(MST)是一个连通无向图的边子集,它连接所有顶点且无环,并具有最小的总边权重。
该函数计算构成无向图的最小生成树(MST)或森林的边。Kruskal算法通过对图中所有边按权重进行排序,然后逐一添加到MST中,同时确保不形成环。
>>> G = rx.PyGraph() >>> G.add_nodes_from(["A", "B", "C", "D"]) NodeIndices[0, 1, 2, 3] >>> G.add_edges_from([(0, 1, 10), (0, 2, 6), (0, 3, 5), (1, 3, 15), (2, 3, 4)]) EdgeIndices[0, 1, 2, 3, 4] >>> rx.minimum_spanning_edges(G, weight_fn=lambda x: x) WeightedEdgeList[(2, 3, 4), (0, 3, 5), (0, 1, 10)]
在这个例子中,边 (0, 2, 6) 不会成为最小生成树(MST)的一部分,因为在考虑该边时,由于权重更低,连接节点 0-3-2 的另外两条边已经是 MST 的组成部分。
要获取图结果,请参见
minimum_spanning_tree()。- Parameters:
graph (PyGraph) – 一个无向图
weight_fn –
一个可调用对象(函数、lambda表达式等)接收一个边对象并返回一个
float数值。此函数用于提取每条边的数值权重。例如:rx.minimum_spanning_edges(G, weight_fn=lambda x: 1)
将为所有边分配权重值为1,从而忽略真实权重。
rx.minimum_spanning_edges(G, weight_fn=float)
将直接将边对象转换为
float类型以确定其权重。default_weight (float) – 如果未指定
weight_fn,那么这个可选的浮点数值将被用作每条边的权重/成本。
- Returns:
\(N - |c|\) 条最小生成树(或森林,如果 \(|c| > 1\))的边,此处 \(N\) 代表节点数量,\(|c|\) 代表图的连通分量数量。
- Return type:
- Raises:
ValueError – If a NaN value is found (or computed) as an edge weight.