2012-02-24 16 views
6

Używam networkx do zarządzania dużym grafem sieciowym, który składa się z 50 000 węzłów.Networkx - najkrótsza długość ścieżki

Chcę obliczyć najkrótszą drogę między określonym zbiorem węzłów, powiedzmy N.
Dla tego używam funkcji nx.shortest_path_length.

W niektórych węzłach z N może nie być ścieżki, więc networkx podnosi i zatrzymuje mój program.

Czy istnieje sposób na uruchomienie tego programu bez żadnego błędu?
I powiedzieć shortest_path_length, aby zwrócić jakąś maksymalną wartość?

Kod po prostu używa nx.shortest_path_length(G,i,j) w pętli. i błąd jest następujący

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

+2

"i zatrzymanie mój program"? Czy masz na myśli, że to podnosi wyjątek? Czy potrzebujesz pomocy z instrukcją 'try:'? Czy możesz opublikować kod i faktyczny komunikat o błędzie, który faktycznie otrzymujesz? –

+0

Tak, to wywołuje wyjątek i jest błąd czasu wykonywania, więc drukuje komunikat wyjątku na wyjściu i nie przetwarza nawet innych węzłów w iteracji. –

+0

Komentarz nie jest pomocny. Właściwie ** aktualizacja ** pytanie z kodem i szczegółami wyjątku. I jeśli nie jesteś zaznajomiony z instrukcją try, znajdź samouczek i zadaj ** szczegółowe ** pytania dotyczące instrukcji try po wykonaniu samouczka. –

Odpowiedz

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' 
Powiązane problemy