如何在 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)
考虑到来自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
数组。
最初,我有二维数组。通过使用这个数组,我创建了一个边上有权重的图。现在我正在尝试使用此图来制作最小生成树矩阵,但我无法如愿以偿。我正在使用以下代码制作图表。
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)
考虑到来自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
数组。