2012-02-24 23 views
6

Estoy usando networkx para gestionar un gran gráfico de red que consta de 50k nodos.Networkx - Longitud de ruta más corta

Quiero calcular la longitud de ruta más corta entre un conjunto específico de nodos, por ejemplo N.
Para eso estoy usando la función nx.shortest_path_length.

En algunos de los nodos desde N puede que no haya una ruta, por lo que networkx está activando y desactivando mi programa.

¿Hay alguna manera de ejecutar este programa sin ningún error?
¿Y decirle shortest_path_length para devolver algún valor máximo?

El código simplemente usa nx.shortest_path_length(G,i,j) en el bucle. y error es el siguiente

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

+2

"y detener mi programa"? ¿Quieres decir que plantea una excepción? ¿Estás pidiendo ayuda con la declaración 'try:'? ¿Puedes publicar el código y el mensaje de error real que estás recibiendo? –

+0

Sí, está elevando la excepción y hay un error de tiempo de ejecución por lo que imprime un mensaje de excepción en la salida y ni siquiera procesa otros nodos en la iteración. –

+0

El comentario no es de ayuda. En realidad, ** actualice ** la pregunta con el código y los detalles de la excepción. Y, si no está familiarizado con la declaración try, busque un tutorial y haga preguntas ** específicas ** sobre la declaración try después de hacer el tutorial. –

Respuesta

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' 
Cuestiones relacionadas