2012-02-24 24 views
6

Sto utilizzando networkx per gestire un grafico di rete di grandi dimensioni costituito da nodi 50 k.Networkx - Lunghezza percorso minima

voglio calcolare il percorso più breve tra uno specifico insieme di nodi, dicono N.
Per questo sto usando la funzione nx.shortest_path_length.

In alcuni nodi di N potrebbe non esserci un percorso, quindi networkx sta sollevando e fermando il mio programma.

Esiste un modo per eseguire questo programma senza errori?
E dire a shortest_path_length di restituire un valore massimo?

Il codice utilizza semplicemente il ciclo nx.shortest_path_length(G,i,j). ed errori è la seguente

raise nx.NetworkXNoPath("No path between %s and %s." % (source, target)) networkx.exception.NetworkXNoPath: No path between V and J

+2

"e fermare il mio programma"? Vuoi dire che solleva un'eccezione? Stai chiedendo aiuto con la frase 'try:'? Puoi pubblicare il codice e il messaggio di errore effettivo che stai ricevendo? –

+0

Sì, si sta generando un'eccezione e c'è un errore di run-time, quindi stampa un messaggio di eccezione in output e non processa nemmeno altri nodi in iterazione. –

+0

Il commento non è d'aiuto. In realtà ** aggiornamento ** la domanda con codice e dettagli dell'eccezione. E se non hai familiarità con la dichiarazione try, trova un tutorial e poni domande ** specifiche sull'istruzione try dopo aver fatto il tutorial. –

risposta

9
import networkx as nx 
G=nx.Graph() 
G.add_nodes_from([1,2,3,4]) 
G.add_edge(1,2) 
G.add_edge(3,4) 
try: 
    n=nx.shortest_path_length(G,1,4) 
    print n 
except nx.NetworkXNoPath: 
    print 'No path'