Tell us what’s happening:
I think I followed the instructions and I do not see what I am missing here.
Instructions:
Create an if
statement to check if the distance of the neighbor node (the second item in the processed tuple) plus the distance of current
is less than the currently known distance of the neighbor node (the first item in the processed tuple).
Use the pass
keyword to temporarily fill the body of the if
.
Comment
You should have an if
statement to check if distance + distances[current]
is less than distances[node]
.
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]:
pass
if distance + distances[current] < distances[node]:
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/121.0.0.0 Safari/537.36
Challenge Information:
Learn Algorithm Design by Building a Shortest Path Algorithm - Step 38