patternMinor
Multiple Source Shortest Paths in a weighted graph
Viewed 0 times
graphshortestsourceweightedpathsmultiple
Problem
In an unweighted graph, we can find Multiple Source Shortest Paths using the Breadth-First Search algorithm by setting the distance of all starting vertices to zero and pushing them into the queue at the beginning of the algorithm.
However, I'm wondering if we can use the same technique to solve Multiple Source Shortest Paths in a weighted graph using Dijkstra's algorithm (for non-negative weight edges) and Bellman-Ford algorithm (when negative weight edges are allowed, and of course there is no queue here).
If I'm right, we can think in this situation as there are edges with weight equal to zero between any source and all other sources in the graph.
So, can we use this technique in a weighted graph? And why?
However, I'm wondering if we can use the same technique to solve Multiple Source Shortest Paths in a weighted graph using Dijkstra's algorithm (for non-negative weight edges) and Bellman-Ford algorithm (when negative weight edges are allowed, and of course there is no queue here).
If I'm right, we can think in this situation as there are edges with weight equal to zero between any source and all other sources in the graph.
So, can we use this technique in a weighted graph? And why?
Solution
Yes. Here is the trick that always works: create a new source, $s_0$, and add an edge (with length 0) from $s_0$ to each of your starting vertices. Then, run any shortest-paths algorithm starting from $s_0$ to compute the distance from $s_0$ to each other vertex.
Your technique for BFS is equivalent to this; but this is more general and can be used with Dijkstra's algorithm, Bellman-Ford, or any other shortest paths algorithm.
Your technique for BFS is equivalent to this; but this is more general and can be used with Dijkstra's algorithm, Bellman-Ford, or any other shortest paths algorithm.
Context
StackExchange Computer Science Q#106617, answer score: 5
Revisions (0)
No revisions yet.