# Algorithms Algorithms Shortest Path by ewghwehws

VIEWS: 11 PAGES: 69

• pg 1
```									               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
min{w( p) : u  v} if a u, v path exits
 (u, v)  

                       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        j   k

CS 8833   Algorithms
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)           w: E  R
Source vertex s

For all edges (u,v)  E
(s,v)  (s,u) + w(u,v)

CS 8833   Algorithms
u1
u2

s                     u3        v
u4
un

CS 8833   Algorithms
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.        do     d[v]  
3.             [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.           [v]  u

CS 8833      Algorithms
EXAMPLE 1

s   
s      
Relax


                           
               
v             u       v
u

CS 8833       Algorithms
EXAMPLE 2

s   
s      
Relax


                          
               
v            u       v
u

CS 8833       Algorithms
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                  O(V lg V)
» Each EXTRACT-MIN                     O(V)
» This is done V times                 O(V2)
» Each edge is relaxed one time        O(E)
» Total time O(V2 + E) = O(V2)

CS 8833   Algorithms
Analysis of Dijkstra’s
Algorithm
   Suppose priority Q is:
– a binary heap
» BUILD-HEAP                       O(V)
» Each EXTRACT-MIN                 O(lg V)
» This is done V times             O(V lg V)
» Each edge is relaxation          O(lg V)
» Each edge relaxed one time       O(E lg V)
» Total time O(V lg V + E lg V))

CS 8833   Algorithms
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 INITIALIZE-
SINGLE-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 negative-
weight 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
a
7           10

b               c
-4

Would Dikjstra’s Algorithm work with this
graph?

CS 8833     Algorithms
a
7           6

b               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      do if d[v] > d[u] + w(u,v)
7          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.

dk [u]  min{dk 1[u], min{distk 1[i]  w(i, u)}}
i

CS 8833    Algorithms
a
7         10       Processing order
1     2    3
b                  c
(a,c)
-4
(b,a)
9             -5
(c,b)
d             (c,d)
(d,b)

CS 8833     Algorithms
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

a         c                           g

d                   f

a    d        c   b   e   f       g

CS 8833   Algorithms
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
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      do color[u]  white
3         [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
5             then [v]  u
6                  DFS-VISIT(v)
7 color[u]  black
8 f[u]  time           time  time +1

CS 8833     Algorithms
b                    e

1/                c
a                             g

d           f

CS 8833       Algorithms
b 2/              e

1/              c
a                          g

d           f

CS 8833    Algorithms
b 2/               e
3/

1/              c
a                           g

d           f

CS 8833    Algorithms
b 2/               e
3/

1/                          4/
c
a                           g

d           f

CS 8833    Algorithms
b 2/               e
3/

1/                          4/5
c
a                           g

d           f

CS 8833    Algorithms
b 2/                e
3/6

1/                           4/5
c
a                            g

d           f

CS 8833    Algorithms
b 2/7               e
3/6

1/                           4/5
c
a                            g

d           f

CS 8833    Algorithms
b 2/7               e
3/6

1/         8/ c              4/5
a                            g

d           f

CS 8833    Algorithms
b 2/7               e
3/6

1/         8/9 c             4/5
a                            g

d           f

CS 8833    Algorithms
b 2/7               e
3/6

1/         8/9 c             4/5
a                            g
10/
d           f

CS 8833    Algorithms
b 2/7                e
3/6

1/         8/9 c              4/5
a                             g
10/         11/
d            f

CS 8833    Algorithms
b 2/7                 e
3/6

1/         8/9 c               4/5
a                              g

10/          11/12

d            f

CS 8833    Algorithms
b 2/7                 e
3/6

1/         8/9 c               4/5
a                              g

10/13        11/12

d            f

CS 8833    Algorithms
b 2/7                 e
3/6

1/14       8/9 c               4/5
a                              g

10/13        11/12

d            f

CS 8833    Algorithms
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

CS 8833   Algorithms
8
b 7                              e
6

7              4
7
10
2
14             9 c                            5
a                                         6
1                         g
3
13                    12
9
d                      f

CS 8833        Algorithms
Running Time for DAG-
SHORTEST-PATHS
 Topological sort
 Initialize-single source
 3-5 each edge examined one time

CS 8833   Algorithms

```
To top