es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    edges = ['start-A', 'start-b', 'A-c', 'A-b', 'b-d', 'b-A', 'A-c', 'c-A', 'A-end', 'b-end']
    nodes = ['start', 'A', 'b', 'c', 'end', 'd']
    

    Luego, pasa los nodos a la función como:

    for path in nx.all_simple_paths(G, 'start', 'end'):
        print(path)
    

    La salida será:

    ['start', 'A', 'b', 'c', 'A', 'end']
    

Comments are closed.