繁体   English   中英

如何在python中获得最小生成树矩阵

[英]How to get Minimum Spanning Tree Matrix in python

最初,我有二维数组。 通过使用这个数组,我创建了一个边上有权重的图。 现在我正在尝试使用这个图来制作最小生成树矩阵,但我不能让它如愿以偿。 我正在使用以下代码制作图表。

 G = nx.from_numpy_matrix(ED_Matrix, create_using=nx.DiGraph)
 layout = nx.spring_layout(G)
 sizes = len(ED_Matrix)
 nx.draw(G, layout, with_labels=True, node_size=sizes)
 labels = nx.get_edge_attributes(G, "weight")
 output = nx.draw_networkx_edge_labels(G, pos=layout, edge_labels=labels)
 plt.show()

它给出了这样的输出在此处输入图片说明

现在我正在使用 MST 代码来获取它的 MST 矩阵,但它给出了这样的错误。

 from scipy.sparse import csr_matrix
 from scipy.sparse.csgraph import minimum_spanning_tree
 Tcsr = minimum_spanning_tree(G)
 Tcsr.toarray().astype(int)

在此处输入图片说明

考虑到scipy 文档中的示例,它应该从 G 的邻接矩阵构建,而不是从 G 构建。

你可能要替换Gnx.adjacency_matrix(G)csr_matrix(nx.adjacency_matrix(G))ED_Matrix的本身计算(分配) Tcsr

Tcsr = minimum_spanning_tree(nx.adjacency_matrix(G)) #or
Tcsr = minimum_spanning_tree(csr_matrix(nx.adjacency_matrix(G))) #or
Tcsr = minimum_spanning_tree(ED_Matrix)

Tcsr是一个稀疏矩阵,后来转换为numpy数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM