Estoy usando el paquete de red de Python.Python: ¿Cómo encontrar si existe una ruta entre 2 nodos en un gráfico?
Respuesta
>>> import networkx as nx
>>> G=nx.empty_graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> G.add_edge(4,5)
>>> nx.path.bidirectional_dijkstra(G,1,2)
(1, [1, 2])
>>> nx.path.bidirectional_dijkstra(G,1,3)
(2, [1, 2, 3])
>>> nx.path.bidirectional_dijkstra(G,1,4)
False
>>> nx.path.bidirectional_dijkstra(G,1,5)
False
>>>
También puede utilizar el resultado como un valor booleano
>>> if nx.path.bidirectional_dijkstra(G,1,2): print "path exists"
...
path exists
>>> if nx.path.bidirectional_dijkstra(G,1,4): print "path exists"
...
>>>
dijkstra_path(G, source, target)
devuelve la ruta más corta desde el origen al destino en un grafo ponderado G.
Uso
shortest_path(G, source, target)
o uno de los métodos camino más corto. Sin embargo, manténgase alejado de los métodos que devuelven las rutas entre todos los nodos si solo tiene dos nodos específicos para probar la conectividad.
Uso de una estructura de datos conjunto disjuntos:
Crear un conjunto unitario para cada vértice en el gráfico, entonces Unión los conjuntos que contienen cada uno del par de vértices por cada borde en el gráfico.
Finalmente, sabes que existe una ruta entre dos vértices si están en el mismo conjunto.
Consulte la página wikipedia en la estructura de datos de conjunto disjuntos.
Esto es mucho más eficiente que usar un algoritmo de búsqueda de ruta.
Para comprobar si existe un camino entre dos nodos en un gráfico -
>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_edge(1,2)
>>> G.add_edge(2,3)
>>> nx.has_path(G,1,3)
True
>>> G.add_edge(4,5)
>>> nx.has_path(G,1,5)
False
Para obtener más información, consulte has_path — NetworkX 1.7 documentation
- 1. ¿Cómo encontrar la ruta más larga en un gráfico cíclico entre dos nodos?
- 2. Ruta entre dos nodos
- 3. Encontrar la ruta más corta entre dos nodos pertenecientes a dos subconjuntos disjuntos de un gráfico
- 4. Todas las rutas entre 2 nodos en el gráfico
- 5. ¿Qué algoritmo puedo usar para encontrar la ruta más corta entre tipos de nodos especificados en un gráfico?
- 6. ¿Cómo obtener la ruta entre 2 nodos usando la búsqueda de primer orden?
- 7. Calcular tiempo de golpeo entre 2 nodos usando NetworkX
- 8. ¿Cómo encontrar todas las rutas vertex-disjoint en un gráfico?
- 9. Editor gráfico de nodos
- 10. ¿Cómo verifico si existe una ruta en Zookeeper usando Curator?
- 11. php: comprobar si existe una ruta?
- 12. Calcular la longitud de la ruta entre los nodos?
- 13. Encontrar el ciclo de 3 nodos (o triángulos) en un gráfico
- 14. Cómo encontrar si existe una carpeta en la Bandeja de entrada y crear si no existe
- 15. ¿Qué es un algoritmo rápido y estable para una ruta aleatoria en un gráfico de nodo?
- 16. ¿Cómo encontrar si un elemento existe en std :: map?
- 17. Encontrar todos los caminos más cortos de cada par de nodos en un gráfico
- 18. Encontrar si un número es una potencia de 2
- 19. Gráfico con nodos en Android
- 20. ¿Cómo extraer una cadena entre otras 2 cadenas en python?
- 21. ¿Cómo comprobar si existe un archivo o directorio denotado por una ruta en Golang?
- 22. Implementando un gráfico dirigido en python
- 23. ¿Cómo comprobar si existe un valor en un diccionario (pitón)
- 24. ¿Qué es un algoritmo rápido para encontrar nodos críticos?
- 25. Encontrar todas las rutas en un gráfico dirigido con ciclos
- 26. ¿Cómo encontrar un triángulo dentro de un gráfico?
- 27. ¿Cómo puedo verificar si existe una ruta (ASP.NET MVC) para una ruta determinada?
- 28. SQL Server - Cómo encontrar si existe un índice agrupado
- 29. Cómo encontrar si existe una secuencia usando PL/SQL
- 30. XSLT: Comprobar si existe un valor en una lista
¿Qué pasa si no existe trayectoria entre 2 nodos dados? ¿Qué devuelve la función entonces? – Bruce
No quiero encontrar el camino más corto. Solo quiero saber si existe una ruta entre 2 nodos dados. – Bruce