In this network Dijkstra’s shortest-path algorithm is used. The question is which path will A use to reach D because both are equal?
is that table missing?
Yes dijkstra algorithm can find the shortest path even when all edges have the same weight. dijkstra has time complexity O((V+E)logV). Instead you should choose BFS algorithm to do the same thing,because BFS has time complexity O(V+E),so BFS is asymptotically faster than dijkstra.
The major disadvantage of the algorithm is the fact that it does a blind search there by consuming a lot of time waste of necessary resources. Another disadvantage is that it cannot handle negative edges. This leads to acyclic graphs and most often cannot obtain the right shortest path.
With Dijkstra's Algorithm, you can find the shortest path between nodes in a graph. Particularly, you can find the shortest path from a node (called the "source node") to all other nodes in the graph, producing a shortest-path tree.
Dijkstra's algorithm in default form computes the shortest distance from a starting node to all connected nodes. Even in this form it does not visit all nodes: only the vertices of a connected component have to be checked.
Step 2: Remove all parallel edges between two vertex except the one with least weight. In this graph, vertex A and C are connected by two parallel edges having weight 10 and 12 respectively. So, we will remove 12 and keep 10. We are now ready to find the shortest path from vertex A to vertex D.
In general, there can be multiple shortest paths in a graph. In particular, you can use Djikstra's algorithm to compute shortest paths and this algorithm can return multiple paths from any node A to any other node B.
It depends on your actual implementation and the way your input graph was described (e.g. edges can go in different order and this will have an impact on the result if there are many).
However, it's guaranteed that it will find some path which has optimal length.
Your table seems to be wrong at E and F vertices. The parent vertex for E is D (AB->BD->DE = 3 + 4 + 2 = 9), so is for F.
It depends on the implementation of the relaxation function. For example, the algorithm described in the wikipedia uses strictly a less-than
comparison: if alt < dist[v]
so in this case (and all the implementations I've seen) the shortest path from A
to D
is A -> B -> D
.
Why? Because (S
= settled nodes and Q
= queue of nodes, a pair of distance, parent):
A
, so you get the S = {A:0}
and Q = {B:3,A C:5,A D:9,A}
Q
select B
and relax it. You get S = {A:0 B:3,A}
and Q = {C:(5,A) D:7,B E:10,B}
Q
select C
and relax it. You get S = {A:0 B:3,A C:5,A}
and Q = {D:7,B E:10,B}
.Q
select D
and you can finish the algorithm.Note that in step 3, you don't need to change the parent of D because the new path is not better than the current path. If the relaxation algorithm uses a less-than-or-equal
comparison, then the result will be different.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With