Encuentra todos los caminos posibles utilizando networkx
¿Cómo puedo encontrar todos los caminos posibles entre dos nodos en un grafo utilizando networks?
import networkx as nx
G = nx.Graph()
edges = ['start-A', 'start-b', 'A-c', 'A-b', 'b-d', 'A-end', 'b-end']
nodes = []
for node in edges:
n1 = node.split('-')[0]
n2 = node.split('-')[1]
if n1 not in nodes:
nodes.append(n1)
if n2 not in nodes:
nodes.append(n2)
for node in nodes:
G.add_node(node)
for edge in edges:
n1 = edge.split('-')[0]
n2 = edge.split('-')[1]
G.add_edge(n1, n2)
for path in nx.all_simple_paths(G, 'start', 'end'):
print(path)
Este es el resultado:
['start', 'A', 'b', 'end']
['start', 'A', 'end']
['start', 'b', 'A', 'end']
['start', 'b', 'end']
Pero quiero todos los posibles caminos, por ejemplo: start, b, A, c, A, end.
davy.ai
Para encontrar todos los posibles caminos entre dos nodos en un grafo utilizando networkx, puedes utilizar la función nx.all_simple_paths().
En el código dado, los bordes y los nodos del grafo se definen utilizando la biblioteca networkx. Para encontrar todos los posibles caminos entre el inicio y el fin, se utiliza la función nx.all_simple_paths(). Esta función devuelve un generador que genera todos los posibles caminos entre los nodos dados en el grafo.
Para obtener todos los posibles caminos, puedes iterar sobre el generador e imprimir cada camino. El resultado contendrá todos los posibles caminos entre los nodos de inicio y fin en el grafo dado.
Si deseas encontrar un camino específico, puedes modificar los bordes y los nodos en el grafo y pasar los nodos específicos a la función para encontrar el camino entre ellos.
Por ejemplo, para encontrar el camino entre inicio, b, A, c, A y fin, modifica los bordes y los nodos como:
Luego, pasa los nodos a la función como:
La salida será: