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.

Implementación de DFS para el recorrido de grafos de redX.

He implementado DFS para imprimir el camino desde una estación de metro hasta otra en un grafo de networkX para estos datos:

def dfs(nxobject, initial, goal, computeexplorationcost=False, reverse=False):

frontier = [{'label':initial, 'parent':None}]  
explored = {initial}
number_of_explored_nodes = 1 

while frontier:
    node = frontier.pop() 
    number_of_explored_nodes += 1
    if node['label']==goal:
        if compute_exploration_cost:
            print('number of explorations = {}'.format(number_of_explored_nodes))
        return node

    neighbours = reversed(list(nxobject.neighbors(node['label']))) if reverse else nxobject.neighbors(node['label'])
    for child_label in neighbours:

        child = {'label':child_label, 'parent':node}
        if child_label not in explored:
            frontier.append(child) # added to the right of the list, so it is a LIFO
            explored.add(child_label)      
return None



python 
import networkx as nx
import pandas as pd

data = pd.read_csv('tubedata.csv',header=None)

edgelist = data.apply(lambda x: (x[0],x1,x[3]),axis=1).to_list()

G = nx.DiGraph()
G.addweightededges_from(edgelist)

Sin embargo, cuando llamo al método `dfs`, siempre obtengo `None`:

python 
solution = dfs(G, 'Euston', '"Victoria"')

La salida debería ser:

[‘Euston’, ‘WarrenStreet’, ‘OxfordCircus’, ‘GreenPark’, ‘Victoria’]

¿Alguna sugerencia? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que está teniendo problemas para obtener la salida correcta del método dfs. Es posible que el problema esté relacionado con el parámetro reverse en el método dfs. Intente establecer reverse=True y vea si eso ayuda. Además, es posible que desee verificar los datos en el archivo tubedata.csv para asegurarse de que los bordes estén definidos correctamente.

Comments are closed.