2013-03-14 13 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 

Ho un albero. Come posso ottenere albero diretto con root a 4?Come posso ottenere l'albero diretto dal grafico?

risposta

6

Per ottenere l'albero diretto di breadth-first-ricerca dal nodo 4:

tree = nx.bfs_tree(G, 4) 

enter image description here


Per ottenere l'albero diretto di ricerca depfth-prima dal nodo 4:

tree = nx.dfs_tree(G, 4) 

enter image description here


I grafici sono stati generati in questo modo:

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

potrebbe essere che @kalombo vuole un albero orientato dall'MST di G con radice al nodo 4. In tal caso sarà necessario costruire il grafico del MST prima. per esempio.

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