python中最小生成树矩阵的求法

2024-04-20 12:48:44 发布

您现在位置:Python中文网/ 问答频道 /正文

最初,我使用2d数组。通过使用这个数组,我创建了一个边上有权重的图。现在我正试图用这个图来生成最小生成树矩阵,但我不能按要求生成它。我正在使用下面的代码来制作图形

 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()

它的输出是这样的 enter image description here

现在我正在使用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)

enter image description here


Tags: 代码fromlabels矩阵scipy数组matrixlayout
1条回答
网友
1楼 · 发布于 2024-04-20 12:48:44

考虑到来自docs of scipy的例子,它应该由G的邻接矩阵构造,而不是由G构造

Tcsr的计算(赋值)中,您可能希望将G替换为nx.adjacency_matrix(G)csr_matrix(nx.adjacency_matrix(G))ED_Matrix本身:

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数组

相关问题 更多 >