new cs 561, single source shortest pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · cs 561,...
TRANSCRIPT
![Page 1: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/1.jpg)
CS 561, Single Source Shortest Paths
Jared Saia
University of New Mexico
![Page 2: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/2.jpg)
Today’s Outline
“The path that can be trodden is not the enduring and unchang-
ing Path. The name that can be named is not the enduring and
unchanging Name.” - Tao Te Ching
• BFS and DFS
• Single Source Shortest Paths
• Dijkstra’s Algorithm
• Bellman-Ford Algoriithm
1
![Page 3: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/3.jpg)
Generic Traverse
Traverse(s){
put (nil,s) in bag;
while (the bag is not empty){
take some edge (p,v) from the bag
if (v is unmarked)
mark v;
parent(v) = p;
for each edge (v,w) incident to v{
put (v,w) into the bag;
}
}
}
}
2
![Page 4: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/4.jpg)
DFS and BFS
• If we implement the “bag” by using a stack, we have Depth
First Search
• If we implement the “bag” by using a queue, we have Breadth
First Search
3
![Page 5: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/5.jpg)
Analysis
• Note that if we use adjacency lists for the graph, the overhead
for the “for” loop is only a constant per edge (no matter how
we implement the bag)
• If we implement the bag using either stacks or queues, each
operation on the bag takes constant time
• Hence the overall runtime is O(|V |+ |E|) = O(|E|)
4
![Page 6: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/6.jpg)
DFS vs BFS
• Note that DFS trees tend to be long and skinny while BFS
trees are short and fat
• In addition, the BFS tree contains shortest paths from the
start vertex s to every other vertex in its connected compo-
nent. (here we define the length of a path to be the number
of edges in the path)
5
![Page 7: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/7.jpg)
Final Note
• Now assume the edges are weighted
• If we implement the “bag” using a priority queue, always
extracting the minimum weight edge from the bag, then we
have a version of Prim’s algorithm
• Each extraction from the “bag” now takes O(log |E|) time
so the total running time is O(|V |+ |E| log |E|)
6
![Page 8: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/8.jpg)
Example
Analysis
• Note that if we use adjacency lists for the graph, the overheadfor the “for” loop is only a constant per edge (no matter howwe implement the bag)
• If we implement the bag using either stacks or queues, eachoperation on the bag takes constant time
• Hence the overall runtime is O(|V | + |E|) = O(|E|)
4
DFS vs BFS
• Note that DFS trees tend to be long and skinny while BFStrees are short and fat
• In addition, the BFS tree contains shortest paths from thestart vertex s to every other vertex in its connected compo-nent. (here we define the length of a path to be the numberof edges in the path)
5
Final Note
• Now assume the edges are weighted• If we implement the “bag” using a priority queue, always
extracting the minimum weight edge from the bag, then wehave a version of Prim’s algorithm
• Each extraction from the “bag” now takes O(|E|) time sothe total running time is O(|V | + |E| log |E|)
6
Example
a
b
e
d
f
c
a
b
e
d
f
c
A depth-first spanning tree and a breadth-first spanning treeof one component of the example graph, with start vertex a.
7
A depth-first spanning tree and a breadth-first spanning tree
of one component of the example graph, with start vertex a.
7
![Page 9: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/9.jpg)
Searching Disconnected Graphs
If the graph is disconnected, then Traverse only visits nodes in
the connected component of the start vertex s. If we want to
visit all vertices, we can use the following “wrapper” around
Traverse
TraverseAll(){
for all vertices v{
if (v is unmarked){
Traverse(v);
}
}
}
8
![Page 10: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/10.jpg)
DFS and BFS
• Note that we can do DFS and BFS equally well on undirected
and directed graphs
• If the graph is undirected, there are two types of edges in G:
edges that are in the DFS or BFS tree and edges that are
not in this tree
• If the graph is directed, there are several types of edges
9
![Page 11: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/11.jpg)
DFS in Directed Graphs
• Tree edges are edges that are in the tree itself
• Back edges are those edges (u, v) connecting a vertex u to
an ancestor v in the DFS tree
• Forward edges are nontree edges (u, v) that connect a vertex
u to a descendant in a DFS tree
• Cross edges are all other edges. They go between two ver-
tices where neither vertex is a descendant of the other
10
![Page 12: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/12.jpg)
Acyclic graphs
• Useful Fact: A directed graph G is acyclic if and only if a
DFS of G yields no back edges
• Challenge: Try to prove this fact.
11
![Page 13: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/13.jpg)
Take Away
• BFS and DFS are two useful algorithms for exploring graphs
• Each of these algorithms is an instantiation of the Traverse
algorithm. BFS uses a queue to hold the edges and DFS
uses a stack
• Each of these algorithms constructs a spanning tree of all
the nodes which are reachable from the start node s
12
![Page 14: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/14.jpg)
Shortest Paths Problem
• Another interesting problem for graphs is that of finding
shortest paths
• Assume we are given a weighted directed graph G = (V,E)
with two special vertices, a source s and a target t
• We want to find the shortest directed path from s to t
• In other words, we want to find the path p starting at s and
ending at t minimizing the function
w(p) =!
e∈pw(e)
13
![Page 15: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/15.jpg)
Example
• Imagine we want to find the fastest way to drive from Albu-
querque,NM to Seattle,WA
• We might use a graph whose vertices are cities, edges are
roads, weights are driving times, s is Albuquerque and t is
Seattle
• The graph is directed since driving times along the same
road might be different in different directions (e.g. because
of construction, speed traps, etc)
14
![Page 16: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/16.jpg)
SSSP
• Every algorithm known for solving this problem actually solves
the following more general single source shortest paths or
SSSP problem:
• Find the shortest path from the source vertex s to every
other vertex in the graph
• This problem is usually solved by finding a shortest path tree
rooted at s that contains all the desired shortest paths
15
![Page 17: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/17.jpg)
Shortest Path Tree
• It’s not hard to see that if the shortest paths are unique,
then they form a tree
• To prove this, we need only observe that the sub-paths of
shortest paths are themselves shortest paths
• If there are multiple shortest paths to the same vertex, we
can always choose just one of them, so that the union of the
paths is a tree
• If there are shortest paths to two vertices u and v which
diverge, then meet, then diverge again, we can modify one
of the paths so that the two paths diverge once only.
16
![Page 18: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/18.jpg)
Example
Shortest Path Tree
• It’s not hard to see that if the shortest paths are unique,then they form a tree
• To prove this, we need only observe that the sub-paths ofshortest paths are themselves shortest paths
• If there are multiple shotest paths to the same vertex, wecan always choose just one of them, so that the union of thepaths is a tree
• If there are shortest paths to two vertices u and v whichdiverge, then meet, then diverge again, we can modify oneof the paths so that the two paths diverge once only.
16
Example
s
u
v
a
b c
d
x y
If s ! a ! b ! c ! d ! v and s ! a ! x ! y ! d ! u are bothshortest paths,
then s ! a ! b ! c ! d ! u is also a shortest path.
17
MST vs SPT
• Note that the minimum spanning tree and shortest path treecan be di!erent
• For one thing there may be only one MST but there can bemultiple shortest path trees (one for every source vertex)
18
Example
8 5
10
2 3
18 16
12
14
30
4 26
8 5
10
2 3
18 16
12
14
30
4 26
A minimum spanning tree (left) and a shortest path tree rooted at thetopmost vertex (right).
19
If s → a → b → c → d → v and s → a → x → y → d → u are both
shortest paths,
then s → a → b → c → d → u is also a shortest path.
17
![Page 19: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/19.jpg)
MST vs SPT
• Note that the minimum spanning tree and shortest path tree
can be different
• For example, there exist graphs which have only one MST,
but multiple shortest path trees (one for every source vertex)
18
![Page 20: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/20.jpg)
Example
Shortest Path Tree
• It’s not hard to see that if the shortest paths are unique,then they form a tree
• To prove this, we need only observe that the sub-paths ofshortest paths are themselves shortest paths
• If there are multiple shotest paths to the same vertex, wecan always choose just one of them, so that the union of thepaths is a tree
• If there are shortest paths to two vertices u and v whichdiverge, then meet, then diverge again, we can modify oneof the paths so that the two paths diverge once only.
16
Example
s
u
v
a
b c
d
x y
If s ! a ! b ! c ! d ! v and s ! a ! x ! y ! d ! u are bothshortest paths,
then s ! a ! b ! c ! d ! u is also a shortest path.
17
MST vs SPT
• Note that the minimum spanning tree and shortest path treecan be di!erent
• For one thing there may be only one MST but there can bemultiple shortest path trees (one for every source vertex)
18
Example
8 5
10
2 3
18 16
12
14
30
4 26
8 5
10
2 3
18 16
12
14
30
4 26
A minimum spanning tree (left) and a shortest path tree rooted at thetopmost vertex (right).
19
A minimum spanning tree (left) and a shortest path tree rooted at thetopmost vertex (right).
19
![Page 21: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/21.jpg)
Negative Weights
• We’ll actually allow negative weights on edges
• The presence of a negative cycle might mean that there is
no shortest path
• A shortest path from s to t exists if and only if there is at
least one path from s to t but no path from s to t that
touches a negative cycle
• In the following example, there is no shortest path from s to t
Negative Weights
• We’ll actually allow negative weights on edges• The presence of a negative cycle might mean that there is
no shortest path• A shortest path from s to t exists if and only if there is at
least one path from s to t but no path from s to t thattouches a negative cycle
• In the following example, there is no shortest path from s to t
s t5
2 !8
4 1
3
20
SSSP Algorithms
• We’ll now go over some algorithms for SSSP on directedgraphs.
• These algorithms will work for undirected graphs with slightmodification
• In particular, we must specifically prohibit alternating backand forth across the same undirected negative-weight edge
• Like for graph traversal, all the SSSP algorithms will be spe-cial cases of a single generic algorithm
21
SSSP Algorithms
Each vertex v in the graph will store two values which describea tentative shortest path from s to v
• dist(v) is the length of the tentative shortest path betweens and v
• pred(v) is the predecessor of v in this tentative shortest path• The predecessor pointers automatically define a tentative
shortest path tree
22
Defns
Initially we set:
• dist(s) = 0, pred(s) = NULL
• For every vertex v != s, dist(v) = " and pred(v) = NULL
23
20
![Page 22: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/22.jpg)
SSSP Algorithms
• We’ll now go over some algorithms for SSSP on directed
graphs.
• These algorithms will work for undirected graphs with slight
modification
• In particular, we must specifically prohibit alternating back
and forth across the same undirected negative-weight edge
• Like for graph traversal, all the SSSP algorithms will be spe-
cial cases of a single generic algorithm
21
![Page 23: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/23.jpg)
SSSP Algorithms
Each vertex v in the graph will store two values which describe
a tentative shortest path from s to v
• dist(v) is the length of the tentative shortest path between
s and v
• pred(v) is the predecessor of v in this tentative shortest path
• The predecessor pointers automatically define a tentative
shortest path tree
22
![Page 24: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/24.jpg)
Defns
Initially we set:
• dist(s) = 0, pred(s) = NULL
• For every vertex v ∕= s, dist(v) = ∞ and pred(v) = NULL
23
![Page 25: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/25.jpg)
Relaxation
• We call an edge (u, v) tense if dist(u) + w(u, v) < dist(v)
• If (u, v) is tense, then the tentative shortest path from s to
v is incorrect since the path s to u and then (u, v) is shorter
• Our generic algorithm repeatedly finds a tense edge in the
graph and relaxes it
• If there are no tense edges, our algorithm is finished and we
have our desired shortest path tree
24
![Page 26: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/26.jpg)
Relax
Relax(u,v){
dist(v) = dist(u) + w(u,v);
pred(v) = u;
}
25
![Page 27: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/27.jpg)
Correctness
• The correctness of the relaxation algorithm follows directly
from three simple claims
• The run time of the algorithm will depend on the way that
we make choices about which edges to relax
26
![Page 28: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/28.jpg)
Claim 1
• If dist(v) ∕= ∞, then dist(v) is the total weight of the prede-
cessor chain ending at v:
s → · · · → pred(pred(v)) → pred(v) → v.
• This is easy to prove by induction on the number of edges
in the path from s to v. (left as an exercise)
27
![Page 29: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/29.jpg)
Claim 2
• If the algorithm halts, then dist(v) ≤ w(s ❀ v) for any path
s ❀ v.
• This is easy to prove by induction on the number of edges
in the path s ❀ v. (left as an exercise)
28
![Page 30: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/30.jpg)
Claim 3
• The algorithm halts if and only if there is no negative cycle
reachable from s.
• The ‘only if’ direction is easy—if there is a reachable negative
cycle, then after the first edge in the cycle is relaxed, the
cycle always has at least one tense edge.
• The ‘if’ direction follows from the fact that every relaxation
step reduces either the number of vertices with dist(v) = ∞by 1 or reduces the sum of the finite shortest path lengths
by some positive amount.
29
![Page 31: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/31.jpg)
Generic SSSP
• We haven’t yet said how to detect which edges can be relaxed
or what order to relax them in
• The following Generic SSSP algorithm answers these ques-
tions
• We will maintain a “bag” of vertices initially containing just
the source vertex s
• Whenever we take a vertex u out of the bag, we scan all of
its outgoing edges, looking for something to relax
• Whenever we successfully relax an edge (u, v), we put v in
the bag
30
![Page 32: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/32.jpg)
InitSSSP
InitSSSP(s){
dist(s) = 0;
pred(s) = NULL;
for all vertices v != s{
dist(v) = infinity;
pred(v) = NULL;
}
}
31
![Page 33: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/33.jpg)
GenericSSSP
GenericSSSP(s){
InitSSSP(s);
put s in the bag;
while the bag is not empty{
take u from the bag;
for all edges (u,v){
if (u,v) is tense{
Relax(u,v);
put v in the bag;
}
}
}
}
32
![Page 34: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/34.jpg)
Generic SSSP
• Just as with graph traversal, using different data structures
for the bag gives us different algorithms
• Some obvious choices are: a stack, a queue and a heap
• Unfortunately if we use a stack, we need to perform Θ(2|E|)relaxation steps in the worst case (an exercise for the diligent
student)
• The other possibilities are more efficient
33
![Page 35: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/35.jpg)
Diskstra’s Algorithm
• If we implement the bag as a heap, where the key of a vertex
v is dist(v), we obtain Dijkstra’s algorithm
• Dijkstra’s algorithm does particularly well if the graph has no
negative-weight edges
• In this case, it’s not hard to show (by induction, of course
- see next slides) that the vertices are scanned in increasing
order of their shortest-path length from s
• It follows that each vertex is scanned at most once, and thus
that each edge is relaxed at most once
34
![Page 36: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/36.jpg)
Inductive Proof
• We assume there are no negative edge weights
• GOAL: (1) Dijkstra’s algorithm scans vertices in increasing
order of their shortest path length from s; and (2) before it
scans a vertex, the dist value of that vertex is correct i.e. it
is the shortest path length from s to that vertex.
• Assume the vertices are labelled 1,2, . . . n by increasing order
of shortest path length from s. We break ties in this sorting
the same way that Dijkstra’s breaks ties in removing vertices
from the heap.
• We’ll fix a graph G, and show our goal by induction on x,
the label of the vertices in the above ordering.
35
![Page 37: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/37.jpg)
Inductive Proof
• BC: x = 1: Dijkstra’s scans the vertex s first. s is the vertex
labelled 1 in our sorted list. The dist value of s is 0.
• IH: For all j < x, (1) Dijkstra’s algorithm scans vertices
1,2, . . . , j in increasing order of their shortest path length;
and (2) the dist values for all these vertices are set correctly
when the vertices are scanned.
• IS: Consider the vertex labelled x. The vertex x has a parent
in the final shortest path tree that has some label p, where
p < x. Since p < x, by the IH (1), p was scanned before x;
and (2) the dist value of p was correct when p was scanned.
Hence, when the edge p → x was relaxed, the dist value of x
was set correctly. Thus, dist(x) is correct when x is scanned.
Also, the dist values of vertices with labels more than x must
be greater than or equal to dist(x) when x is scanned, since
dist values are at least equal to shortest path lengths. Thus,
x is scanned right after the vertex with label x− 1.
36
![Page 38: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/38.jpg)
Dijktra’s Algorithm Runtime
• Since the key of each vertex in the heap is its tentative dis-
tance from s, the algorithm performs a DecreaseKey opera-
tion every time an edge is relaxed
• Thus the algorithm performs at most |E| DecreaseKey’s
• Similarly, there are at most |V | Insert and ExtractMin oper-
ations
• Thus if we store the vertices in a Fibonacci heap, the total
running time of Dijkstra’s algorithm is O(|E|+ |V | log |V |)
37
![Page 39: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/39.jpg)
Negative Edges
• This analysis assumes that no edge has negative weight
• The algorithm given here is still correct if there are negative
weight edges but the worst-case run time could be exponen-
tial
• The algorithm in our text book gives incorrect results for
graphs with negative edges (which they make clear)
38
![Page 40: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/40.jpg)
Example
Negative Edges
• This analysis assumes that no edge has negative weight• The algorithm given here is still correct if there are negative
weight edges but the worst-case run time could be exponen-tial
• The algorithm in our text book gives incorrect results forgraphs with negative edges (which they make clear)
36
Example
1
3 2
0 5
10 12
8
4
6 3
7
s
!
!
!
!
4
3
1
3 2
0 5
10 12
8
4
6 3
7
s
0
!
!
!
!
!
!
1
3 2
0 5
10 12
8
4
6 3
7
s
!
!
!
4
3
12
1
3 2
0 5
10 12
8
4
6 3
7
s
!
!
4
3
941
3 2
0 5
10 12
8
4
6 3
7
s
4
3
94
7
14
0 0
0 0
Four phases of Dijkstra’s algorithm run on a graph with no negative edges.At each phase, the shaded vertices are in the heap, and the bold vertex has
just been scanned.The bold edges describe the evolving shortest path tree.
37
15
Four phases of Dijkstra’s algorithm run on a graph with no negative edges.At each phase, the shaded vertices are in the heap, and the bold vertex has
just been scanned.The bold edges describe the evolving shortest path tree.
39
![Page 41: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/41.jpg)
Bellman-Ford
• If we replace the bag in the GenericSSSP with a queue, we
get the Bellman-Ford algorithm
• Bellman-Ford is efficient even if there are negative edges
and it can be used to quickly detect the presence of negative
cycles
• If there are no negative edges, however, Dijkstra’s algorithm
is faster than Bellman-Ford
40
![Page 42: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/42.jpg)
Analysis
• The easiest way to analyze this algorithm is to break the
execution into phases
• Before we begin the alg, we insert a token into the queue
• Whenever we take the token out of the queue, we begin a
new phase by just reinserting the token into the queue
• The 0-th phase consists entirely of scanning the source vertex
s
• The algorithm ends when the queue contains only the token
41
![Page 43: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/43.jpg)
Invariant
• A simple inductive argument (left as an exercise) shows the
following invariant:
• At the end of the i-th phase, for each vertex v, dist(v) is
less than or equal to the length of the shortest path s ❀ v
consisting of i or fewer edges
42
![Page 44: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/44.jpg)
Example
Invariant
• A simple inductive argument (left as an exercise) shows thefollowing invariant:
• At the end of the i-th phase, for each vertex v, dist(v) isless than or equal to the length of the shortest path s ! v
consisting of i or fewer edges
24
Example
!2
1
2
0 5
4
6 3
s
0
!3
!18
a
b
c
d
e
f1
2
0 5
4
6 3
s
0
!3
!18
a
b
c
d
e
f
1
2
0 5
4
6 3
s
0
!
!3
!18
a
b
c
d
e
f1
2
0 5
4
6 3
s
0
!
!
!
!
!
! !3
!18
a
b
c
d
e
f1
2
0 5
4
6 3
s
0
!
!
!
!3
!18
a
b
c
d
e
f
6
4
3 6
2
3
74
3
2
2 7
9
!8!8
!8!8!8
!3 !3
!3 !3
!3
1
9
7
2
3
1
Four phases of Bellman-Ford’s algorithm run on a directedgraph with negative edges.
Nodes are taken from the queue in the orders ! a b c ! d f b ! a e d ! d a ! !, where ! is the token.
Shaded vertices are in the queue at the end of each phase.The bold edges describe the evolving shortest path tree.
25
Analysis
• Since a shortest path can only pass through each vertex once,either the algorithm halts before the |V |-th phase or the graphcontains a negative cycle
• In each phase, we scan each vertex at most once and so werelax each edge at most once
• Hence the run time of a single phase is O(|E|)• Thus, the overall run time of Bellman-Ford is O(|V ||E|)
26
Book Bellman-Ford
• Now that we understand how the phases of Bellman-Fordwork, we can simplify the algorithm
• Instead of using a queue to perform a partial BFS in eachphase, we will just scan through the adjacency list directlyand try to relax every edge in the graph
• This will be much closer to how the textbook presents Bellman-Ford
• The run time will still be O(|V ||E|)• To show correctness, we’ll have to show that are earlier in-
variant holds which can be proved by induction on i
27
Four phases of Bellman-Ford’s algorithm run on a directed
graph with negative edges.
Nodes are taken from the queue in the order
s ⋄ a b c ⋄ d f b ⋄ a e d ⋄ d a ⋄ ⋄, where ⋄ is the token.
Shaded vertices are in the queue at the end of each phase.
The bold edges describe the evolving shortest path tree.
43
![Page 45: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/45.jpg)
Analysis
• Since a shortest path can only pass through each vertex once,
either the algorithm halts before the |V |-th phase or the graph
contains a negative cycle
• In each phase, we scan each vertex at most once and so we
relax each edge at most once
• Hence the run time of a single phase is O(|E|)• Thus, the overall run time of Bellman-Ford is O(|V ||E|)
44
![Page 46: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/46.jpg)
Book Bellman-Ford
• Now that we understand how the phases of Bellman-Ford
work, we can simplify the algorithm
• Instead of using a queue to perform a partial BFS in each
phase, we will just scan through the adjacency list directly
and try to relax every edge in the graph
• This will be much closer to how the textbook presents Bellman-
Ford
• The run time will still be O(|V ||E|)• To show correctness, we’ll have to show that our earlier in-
variant holds which can be proved by induction on i
45
![Page 47: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/47.jpg)
Book Bellman-Ford
Book-BF(s){
InitSSSP(s);
repeat |V| times{
for every edge (u,v) in E{
if (u,v) is tense{
Relax(u,v);
}
}
}
for every edge (u,v) in E{
if (u,v) is tense, return ‘‘Negative Cycle’’
}
}
46
![Page 48: New CS 561, Single Source Shortest Pathssaia/classes/561-f19/lec/lec... · 2019. 12. 5. · CS 561, Single Source Shortest Paths Jared Saia University of New Mexico. ... • Note](https://reader034.vdocuments.net/reader034/viewer/2022051815/60405359d11b0d36121b4a4b/html5/thumbnails/48.jpg)
Take Away
• Dijkstra’s algorithm and Bellman-Ford are both variants of
the GenericSSSP algorithm for solving SSSP
• Dijkstra’s algorithm uses a Fibonacci heap for the bag while
Bellman-Ford uses a queue
• Dijkstra’s algorithm runs in time O(|E|+ |V | log |V |) if there
are no negative edges
• Bellman-Ford runs in time O(|V ||E|) and can handle negative
edges (and detect negative cycles)
47