Question

I need some clarifications and inputts regarding Dijktra's algorithm vs breath first search in directed graphs, if these are correct.

Dijktra's algorithm finds the shortest path from Node A to Node F in a weighted graph regardless of if there is a cycle or not (as long as there are no negative weights)

but for that, All paths from A to all other Nodes in the graph are calculated and we grab the path fromAtoFby reversing the sequences of nodes inprev`.

BFS: finds the shortest path from Node A to Node F in a non-weighted graph, but if fails if a cycle detected.

however, BFS just calculates the path from Node A to Node F and not necessarily all path from Node A. if Node F is reached early, it just returns the path.

enter image description here

Was it helpful?

Solution

Dijkstra doesn't search all nodes of the graph. When it has found a way from A to F and is sure there is no shorter one (because the outer border of the already visited nodes is farther away), it stops. This is possible without negative weights.

So to answer your question "if these are correct": They are not.

OTHER TIPS

Those algorithms are quite different in terms of their execution.

BFS is a kind of brute-force algorithm that follows a "static execution pattern" Dijkstra on the other hand is more dynamic and continues its search always at the point with the lowest cost.

The purpose of dijkstra is to find the shortest path. So if you are looking for the shortest path use dijkstra.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top