2013-03-14 16 views
5
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 

Mam drzewo. Jak mogę uzyskać skierowane drzewo z rootem na 4?Jak mogę uzyskać skierowane drzewo z wykresu?

Odpowiedz

6

Aby uzyskać reżyserii drzewa wszerz-search z węzła 4:

tree = nx.bfs_tree(G, 4) 

enter image description here


Aby uzyskać reżyserii drzewa poszukiwań depfth-pierwszy od węzła 4:

tree = nx.dfs_tree(G, 4) 

enter image description here


wykresy były generowane w ten sposób:

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

to może być, że @kalombo chce zorientowaną drzewo z MST G z korzenia w węźle 4. W takim przypadku trzeba będzie zbudować wykres z MST pierwszy. na przykład

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