Я работаю над реализацией алгоритма Джикстры, и у меня есть проблема в цикле for.В этом цикле я обновляю каждый узел от «бесконечности» до «расстояния».Важно то, что я не знаю, как заставить следующий узел следовать по пути в поисках минимального «расстояния».Я работаю с Networkx на Python, и я не могу использовать реализованный алгоритм Джикстра.Это мой закомментированный код:
def dijkstra(G, origen, destino, infinity=float(9999999999999999999.9)):
[G.add_node(i, distance = infinity, prev = None) for i in G.nodes() if
G.node[i]!= origen] #set all 'distance' to infinity except soure node(origen)
G.add_node(origen,distance= 0, prev = None)
pathFound = False #I will stop when found my destiny node in the loop
exploredNode = origen #SourceNode for the loop start
fastPath=[] #Fast path between source node and destiny node.
fastPath.append(exploredNode)
nodeNeighbours = list(G.neighbors(origen)) #Neighbors of source node
while not pathFound:
for nodes in nodeNeighbours :
G.node[nodes]['distance'] = (G.get_edge_data(exploredNode,nodes)['distance'])+(G.node[exploredNode]['distance'])
#main loop, only implemented the update of the distance, looking for implement the min 'distance with nodes
Примечания. Все узлы спроектированы по номеру, и я обращаюсь к ним с помощью G.node [число].Это вернет словарь со всеми атрибутами.У каждого узла есть словарь со своими значениями: {'line': 4, 'distance': 0.321831}
Я думаю, это понятно, извиняюсь, если мой английский недостаточно хорош.