Algorithms

Algorithms
Shortest Path Problems
CS 8833
Algorithms
G = (V, E)
weighted directed graph
w: ER
weight function
Weight of a path p = <v0, v1,. . ., vn>
n
w( p)   w(vi 1v)
i 1
Shortest path weight from u to v
p

 (u, v)  min{ w( p) : u  v} if a u, v path exits


otherwise
Shortest path from u to v: Any path from u to v
with w(p) = (u,v)
[v]
predecessor of v on a path
CS 8833
Algorithms












CS 8833

Algorithms
Variants

Single-source shortest paths:
find shortest paths from source vertex to
every other vertex

Single-destination shortest paths:
find shortest paths to a destination from
every vertex

Single-pair shortest-path
find shortest path from u to v

All pairs shortest paths
CS 8833
Algorithms
Lemma 25.1

Subpaths of shortest paths are shortest
paths.
Given G=(G,E)
w: E  R
Let p = p = <v1, v2,. . ., vk> be a shortest path
from v1 to vk
For any i,j such that 1 i j k, let pij be a
subpath from vi to vj.. Then pij is a shortest
path from vi to vj.
CS 8833
Algorithms
p
1
i
CS 8833
Algorithms
j
k
Corollary 25.2
Let G = (V,E)
w: E  R
Suppose shortest path p from a source s
to vertex v can be decomposed into
p’
s
u
v
for vertex u and path p’.
Then weight of the shortest path from s to
v is
(s,v) = (s,u) + w(u,v)
CS 8833
Algorithms
Lemma 25.3
Let G = (V,E)
Source vertex s
w: E  R
For all edges (u,v)E
(s,v) (s,u) + w(u,v)
CS 8833
Algorithms
u1
u2
u3
s
u4
un
CS 8833
Algorithms
v
Relaxation

Shortest path estimate
d[v] is an attribute of each vertex which is an
upper bound on the weight of the shortest
path from s to v

Relaxation is the process of
incrementally reducing d[v] until it is an
exact weight of the shortest path from s
to v
CS 8833
Algorithms
INITIALIZE-SINGLE-SOURCE(G, s)
1. for each vertex v V(G)
2.
3.
d[v] 
do
[v]  nil
4. d[s]  0
CS 8833
Algorithms












CS 8833

Algorithms
Relaxing an Edge (u,v)
Question: Can we improve the shortest
path to v found so far by going through
u?
 If yes, update d[v] and [v]

CS 8833
Algorithms
RELAX(u,v,w)
1. if d[v] > d[u] + w(u,v)
2.
then d[v]  d[u] + w(u,v)
3.
CS 8833
[v]  u
Algorithms
EXAMPLE 1
s
s


Relax

u
CS 8833


v
Algorithms

u


v
EXAMPLE 2
s
s


Relax

u
CS 8833


v
Algorithms

u


v
Dijkstra’s Algorithm

Problem:
– Solve the single source shortest-path
problem on a weighted, directed graph
G(V,E) for the cases in which edge weights
are non-negative
CS 8833
Algorithms
Dijkstra’s Algorithm

Approach
– maintain a set S of vertices whose final
shortest path weights from the source s
have been determined.
– repeat
» select vertex from V-S with the minimum
shortest path estimate
» insert u in S
» relax all edges leaving u
CS 8833
Algorithms
DIJKSTRA(G,w,s)
1. INITIALIZE-SINGLE-SOURCE(G,s)
2. S 
3. Q  V[G]
4. while Q 
5.
do u  EXTRACT-MIN(Q)
6.
S  S {u}
7.
for each vertex v Adj[u]
8.
do RELAX(u,v,w)
CS 8833
Algorithms












CS 8833

Algorithms
Analysis of Dijkstra’s
Algorithm

Suppose priority Q is:
– an ordered (by d) linked list
» Building the Q
» Each EXTRACT-MIN
» This is done V times
» Each edge is relaxed one time
» Total time O(V2 + E) = O(V2)
CS 8833
Algorithms
O(V lg V)
O(V)
O(V2)
O(E)
Analysis of Dijkstra’s
Algorithm

Suppose priority Q is:
– a binary heap
» BUILD-HEAP
» Each EXTRACT-MIN
» This is done V times
» Each edge is relaxation
» Each edge relaxed one time
» Total time O(V lg V + E lg V))
CS 8833
Algorithms
O(V)
O(lg V)
O(V lg V)
O(lg V)
O(E lg V)
Properties of Relaxation

Lemma 25.4
G=(V,E)
w: E  R
(u,v)  E
After relaxing edge (u,v) by executing
RELAX(u,v,w) we have
d[v]  d[u] + w(u,v)
CS 8833
Algorithms

Lemma 25.5
– Given:
G=(V,E)
w: E  R
source s  V
Graph initialized by
INITIALIZE-SINGLE-SOURCE(G,s)
– then
d[v]  (s,v) for all v V
and this invariant is maintained over all relaxation
steps
Once d[v] achieves a lower bound (s,v), it
never changes
CS 8833
Algorithms

Corollary 25.6
– Given:
G=(V,E)
w: E  R
source s  V
No path connects s to given v
– then
after initialization
d[v]  (s,v)
and this inequality is maintained over all
relaxation steps.
CS 8833
Algorithms

Lemma 25.7
– Given:
G=(V,E)
w: E  R
source s  V
Let s - - u v be the shortest path in G
for all vertices u and v.
Suppose G initialized by INITIALIZESINGLE-SOURCE is followed by a
sequence of relaxations including
RELAX(u,v,w)
– Then d[u] = (s,u) prior to call implies that
d[u] = (s,u) after the call
CS 8833
Algorithms
Bottom Line

Therefore, relaxation causes the
shortest path estimates to descend
monotonically toward the actual
shortest-path weights.
CS 8833
Algorithms
Shortest-Paths Tree of G(V,E)

The shortest-paths tree at S of G(V,E) is
a directed subgraph G’-(V’,E’), where
V’ V, E’E, such that
– V’ is the set of vertices reachable from S in
G
– G’ forms a rooted tree with root s, and
– for all v V’, the unique simple path from s
to v in G’ is a shortest path from s to v in G
CS 8833
Algorithms
Goal

We want to show that successive
relaxations will yield a shortest-path tree
CS 8833
Algorithms

Lemma 25.8
– Given:
G=(V,E)
w: E  R
source s  V
Assume that G contains no negativeweight cycles reachable from s.
– Then after the graph is initialized with
INITIALIZE-SINGLE-SOURCE
• the predecessor subgraph G forms a
rooted tree with root s, and
• any sequence of relaxation steps on
edges in G maintains this property as an
invariant.
CS 8833
Algorithms
Algorithms
Bellman-Ford Algorithm
Directed-Acyclic Graphs
All Pairs-Shortest Path Algorithm
CS 8833
Algorithms
Why does Dijkstra’s greedy
algorithm work?
Because we know that when we add a
node u to the set S, the value d is the
length of the shortest path from s to u.
 But, this only works if the edges of the
graph are nonnegative.

CS 8833
Algorithms
7
a
b
10
c
-4
Would Dikjstra’s Algorithm work with this
graph?
CS 8833
Algorithms
7
a
b
6
c
-14
What is the length of the shortest path from
a to c in this graph?
CS 8833
Algorithms
Bellman-Ford Algorithm
The Bellman-Ford algorithm can be
used to solve the general single source
shortest path problem
 Negative weights are allowed
 The algorithm detects negative cycles
and returns false if the graph contains
one.

CS 8833
Algorithms
BELLMAN-FORD(G,w,s)
1 INITIALIZE-SINGLE-SOURCE(G,s)
2 for i  1 to |V[G]| -1
3
do for each edge (u,v)  E[G]
4
do RELAX(u,v,w)
5 for each edge (u,v)  E[G]
6
7
do if d[v] > d[u] + w(u,v)
then return false
8 return true
CS 8833
Algorithms

When there are no cycles of negative
length, what is maximum number of
edges in a shortest path when the graph
has |V[G]| vertices and |E[G]| edges?
CS 8833
Algorithms
Dynamic Programming
Formulation

The following recurrence shows how the
Bellman Ford algorithm computes the d
values for paths of length k.
d k [u]  min{ d k 1[u ], min {dist k 1[i]  w(i, u )}}
i
CS 8833
Algorithms
7
a
10
Processing order
1
b
c
-4
(a,c)
(b,a)
-5
9
d
(c,b)
(c,d)
(d,b)
CS 8833
Algorithms
2
3
Complexity of the Bellman
Ford Algorithm

Time complexity:

Performance can be improved by
– adding a test to the loop to see if any d
values were updated on the previous
iteration, or
– maintain a queue of vertices whose d value
changed on the previous iteration-only
process these on the next iteration
CS 8833
Algorithms
Single-source shortest paths
in directed acyclic graphs
Topological sorting is the key to efficient
algorithms for many DAG applications.
 A topological sort of a DAG is a linear
ordering of all of its vertices such that if
G contains an edge (u,v), then u
appears before v in the ordering.

CS 8833
Algorithms
b
e
c
a
g
d
a
d
CS 8833
f
c
b
Algorithms
e
f
g
DAG-SHORTEST-PATHS(G,w,s)
1 topologically sort the vertices of G
2 INITIALIZE-SINGLE-SOURCE(G,s)
3 for each vertex u taken in topological order
4
do for each vertex v  Adj[u]
5
do RELAX(u,v,w)
CS 8833
Algorithms
Topological Sorting
TOPOLOGICAL-SORT(G)
1 call DFS(G) to compute finishing times f[v] for each
vertex v
2 as each vertex is finished, insert it onto the front of
a linked list
3 return the linked list of vertices
CS 8833
Algorithms
Depth-first search
Goal: search all edges in the graph one
time
 Strategy: Search deeper in the graph
whenever possible
 Edges are explored out of the most
recently discovered vertex v that still
has unexplored edges leaving it.
 Backtrack when a dead end is
encountered

CS 8833
Algorithms
Predecessor subgraph

The predecessor subgraph of a depth
first search
– forms a depth-first forest
– composed of depth-first trees

The edges in E are called tree edges
CS 8833
Algorithms
Vertex coloring scheme
All vertices are initially white
 A vertex is colored gray when it is
discovered
 A vertex is colored black when it is
finished (all vertices adjacent to the
vertex have been examined completely)

CS 8833
Algorithms
Time Stamps

Each vertex v has two time-stamps
– d[v] records when v is first discovered (and
grayed)
– f[v] records when the search finishes
examining its adjacency list (and is
blackened)

For every vertex u
– d[u] < f[u]
CS 8833
Algorithms
Color and Time Stamp
Summary

Vertex u is
– white before d[u]
– gray between d[u] and f[u]
– black after f[u]

Time is a global variable in the
pseudocode
CS 8833
Algorithms
DFS(G)
1 for each vertex u  V[G]
2
3
do color[u] white
[u] nil
4 time 0
5 do for each vertex u  Adj[u]
6
do if color[u] = white
7
then DFS-VISIT(u)
CS 8833
Algorithms
DFS-VISIT(u)
1 color[u] gray
2 d[u] time
time time +1
3 for each vertex v  Adj[u]
4
do if color[v] = white
then [v] u
5
6
DFS-VISIT(v)
7 color[u] black
8 f[u] time
CS 8833
time time +1
Algorithms
b
e
1/
a
c
g
d
CS 8833
Algorithms
f
b 2/
1/
a
e
c
g
d
CS 8833
Algorithms
f
b 2/
1/
a
3/
c
g
d
CS 8833
e
Algorithms
f
b 2/
1/
a
3/
4/
c
g
d
CS 8833
e
Algorithms
f
b 2/
1/
a
3/
4/5
c
g
d
CS 8833
e
Algorithms
f
b 2/
1/
a
3/6
4/5
c
g
d
CS 8833
e
Algorithms
f
b 2/7
1/
a
3/6
4/5
c
g
d
CS 8833
e
Algorithms
f
b 2/7
1/
a
8/ c
e
4/5
g
d
CS 8833
3/6
Algorithms
f
b 2/7
1/
a
8/9 c
e
4/5
g
d
CS 8833
3/6
Algorithms
f
b 2/7
1/
a
3/6
8/9 c
4/5
g
10/
d
CS 8833
e
Algorithms
f
b 2/7
1/
a
8/9 c
e
4/5
g
10/
d
CS 8833
3/6
Algorithms
11/
f
b 2/7
1/
a
8/9 c
e
4/5
g
10/
d
CS 8833
3/6
Algorithms
11/12
f
b 2/7
1/
a
8/9 c
e
4/5
g
10/13
d
CS 8833
3/6
Algorithms
11/12
f
b 2/7
1/14
3/6
8/9 c
4/5
a
g
10/13
d
CS 8833
e
Algorithms
11/12
f
Running time of DFS
lines 1-3 of DFS
 lines 5-7 of DFS
 lines 2-6 of DFS-VISIT

CS 8833
Algorithms
Running Time of Topological
Sort
DFS
 Insertion in linked list

CS 8833
Algorithms
8
b 7
e
6
4
7
7
10
2
9 c
14
a
5
6
1
3
12
13
d
CS 8833
Algorithms
9
f
g
Running Time for DAGSHORTEST-PATHS
Topological sort
 Initialize-single source
 3-5 each edge examined one time

CS 8833
Algorithms