Learn Algorithm Design by Building a Shortest Path Algorithm - Step 54

Tell us what’s happening:

Describe your issue in detail here.

What am I doing wrong? I have tried removing the target entirely and putting ‘F’ only but didn’t work. Also tried the hint " You should call shortest_path passing my_graph , 'A' and 'F' as the arguments." but it didn’t work nor got an output…

Your code so far


# User Editable Region

my_graph = {
    'A': [('B', 5), ('C', 3), ('E', 11)],
    'B': [('A', 5), ('C', 1), ('F', 2)],
    'C': [('A', 3), ('B', 1), ('D', 1), ('E', 5)],
    'D': [('C',1 ), ('E', 9), ('F', 3)],
    'E': [('A', 11), ('C', 5), ('D', 9)],
    'F': [('B', 2), ('D', 3)]
}

def shortest_path(graph, start, target = 'F'):
    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)
        for node, distance in graph[current]:
            if distance + distances[current] < distances[node]:
                distances[node] = distance + distances[current]
                if paths[node] and paths[node][-1] == node:
                    paths[node] = paths[current][:]
                else:
                    paths[node].extend(paths[current])
                paths[node].append(node)
        unvisited.remove(current)
    
    targets_to_print = [target] if target else graph
    for node in targets_to_print:
        if node == start:
            continue
        print(f'\n{start}-{node} distance: {distances[node]}\nPath: {" -> ".join(paths[node])}')
    
    return distances, paths
    
shortest_path(my_graph, 'A')

# User Editable Region

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36

Challenge Information:

Learn Algorithm Design by Building a Shortest Path Algorithm - Step 54

You appear to have created this post without editing the template. Please edit your post to Tell us what’s happening in your own words.

Hi @ChrisKonto

You need to pass the string mentioned in the instructions as the third argument in the function call.

Happy coding

from what I understood I did this
def shortest_path(graph, start, ‘F’):
but it’s still wrong and I had already tried it before. You just told me what the step is asking with other words, that did not help at all.

This is exactly how to help someone understand the instructions

1 Like

You have added F as the default parameter in the function definition. When you call your function you still only passed 2 arguments

I don’t understand how is this not an argument… specifying the function name, followed by the function call operator and any data values the function expects to receive . Is what I find online for how to make an argument and thats what I also know. So how exactly is that wrong?

Hi @ChrisKonto

You modified the function definition, line 10.

The instructions ask you to modify the function call, line 36.

Happy coding

The instructions are

modify your function call passing F as the third argument and check the output.

Which is your function call?

1 Like

Oh alright, I understood thank you! I thought it was speaking about the def

1 Like

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.