我怎样才能从图中获得有向树?

时间:2013-03-14 07:22:49

标签: python graph tree networkx

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处获得带有root的定向树?

2 个答案:

答案 0 :(得分:7)

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

tree = nx.bfs_tree(G, 4)

enter image description here


从节点4获取depfth-first搜索的有向树:

tree = nx.dfs_tree(G, 4)

enter image description here


图表以这种方式生成:

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

答案 1 :(得分:1)

可能是@kalombo希望从节点4的根节点获取GST的定向树。在这种情况下,您需要首先构建MST的图形。 e.g。

T = nx.bfs_tree(nx.Graph(nx.prim_mst_edges(G)),4)