Tell us what’s happening:
I understood the steps up to this one, but now I feel lost reading the instructions. My first question is what is graph[current]? Is it a list we are iterating over with the user-input nodes? So it looks like my_graph, but it contains different values? Secondly, why is the distance of the neighbor node plus the distance of current the ‘second item in the tuple’? What tuple, aren’t there several in the list ‘graph’?
Your code so far
my_graph = {
'A': [('B', 3), ('D', 1)],
'B': [('A', 3), ('C', 4)],
'C': [('B', 4), ('D', 7)],
'D': [('A', 1), ('C', 7)]
}
def shortest_path(graph, start):
unvisited = list(graph)
distances = {node: 0 if node == start else float('inf') for node in graph}
paths = {node: [] for node in graph}
paths[start].append(start)
while unvisited:
current = min(unvisited, key=distances.get)
# User Editable Region
for node, distance in graph[current]:
if second item in the processed tuple + current < the first item in the processed tuple:
pass
# User Editable Region
print(f'Unvisited: {unvisited}\nDistances: {distances}\nPaths: {paths}')
#shortest_path(my_graph, 'A')
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Challenge Information:
Learn Algorithm Design by Building a Shortest Path Algorithm - Step 43