6
import networkx as nx
G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,5)
G.add_edge(4,6)
G.add_edge(1,6)
G.add_edge(2,6)
G.add_edge(7,8)
G.add_edge(9,8)
mst=nx.prim_mst(G)# a generator of MST edges

我有一棵树。如何获得根为 4 的定向树?

4

2 回答 2

10

从节点 4 获取广度优先搜索的有向树:

tree = nx.bfs_tree(G, 4)

在此处输入图像描述


从节点 4 获取深度优先搜索的有向树:

tree = nx.dfs_tree(G, 4)

在此处输入图像描述


这些图表是这样生成的:

import matplotlib.pyplot as plt
import networkx as nx

G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,5)
G.add_edge(4,6)
G.add_edge(1,6)
G.add_edge(2,6)
G.add_edge(7,8)
G.add_edge(9,8)

tree = nx.bfs_tree(G, 4)
nx.draw(tree)
plt.savefig('/tmp/bfs_image.png')
于 2013-03-14T08:26:24.383 回答
2

可能是@kalombo 想要来自 G 的 MST 的定向树,根在节点 4。在这种情况下,您将需要首先构建 MST 的图。例如

T = nx.bfs_tree(nx.Graph(nx.prim_mst_edges(G)),4)
于 2013-03-15T16:15:03.883 回答