0% found this document useful (0 votes)
85 views48 pages

Chapter 24: Single-Source Shortest Paths: Given

This document summarizes key concepts about single-source shortest path algorithms. It begins by defining the single-source shortest path problem as finding the shortest path from a single source vertex to all other vertices in a weighted, directed graph. It then outlines the Bellman-Ford algorithm, Dijkstra's algorithm, and concepts like relaxation and predecessor subgraphs. Properties of these algorithms and concepts are defined through lemmas and examples are provided. The document provides a concise yet comprehensive overview of single-source shortest path algorithms.

Uploaded by

Naveen Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
85 views48 pages

Chapter 24: Single-Source Shortest Paths: Given

This document summarizes key concepts about single-source shortest path algorithms. It begins by defining the single-source shortest path problem as finding the shortest path from a single source vertex to all other vertices in a weighted, directed graph. It then outlines the Bellman-Ford algorithm, Dijkstra's algorithm, and concepts like relaxation and predecessor subgraphs. Properties of these algorithms and concepts are defined through lemmas and examples are provided. The document provides a concise yet comprehensive overview of single-source shortest path algorithms.

Uploaded by

Naveen Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 48

Jim Anderson Comp 122, Fall 2003 Single-source SPs - 1

Chapter 24: Single-Source Shortest Paths


Given: A single source vertex in a weighted,
directed graph.
Want to compute a shortest path for each
possible destination.
Similar to BFS.
We will assume either
no negative-weight edges, or
no reachable negative-weight cycles.
Algorithm will compute a shortest-path tree.
Similar to BFS tree.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 2
Outline
General Lemmas and Theorems.
CLRS now does this last. Well still do it first.
Bellman-Ford algorithm.
DAG algorithm.
Dijkstras algorithm.
We will skip Section 24.4.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 3
Corollary: Let p = SP from s to v, where p = s u v. Then,
(s, v) = (s, u) + w(u, v).
General Results (Relaxation)
Lemma 24.1: Let p = v
1
, v
2
, , v
k
be a SP from v
1
to v
k
. Then,
p
ij
= v
i
, v
i+1
, , v
j
is a SP from v
i
to v
j
, where 1 s i s j s k.
So, we have the optimal-substructure property.

Bellman-Fords algorithm uses dynamic programming.

Dijkstras algorithm uses the greedy approach.

Let (u, v) = weight of SP from u to v.

p'
Lemma 24.10: Let s e V. For all edges (u,v) e E, we have
(s, v) s (s, u) + w(u,v).
Jim Anderson
Lemma 24.1 holds because one edge gives the
shortest path, so the other edges must give sums
that are at least as large.
Comp 122, Fall 2003 Single-source SPs - 4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 5
Relaxation
Initialize(G, s)
for each v e V[G] do
d[v] := ;
t[v] := NIL
od;
d[s] := 0
Relax(u, v, w)
if d[v] > d[u] + w(u, v) then
d[v] := d[u] + w(u, v);
t[v] := u
fi
Algorithms keep track of d[v], t[v]. Initialized as follows:
These values are changed when an edge (u, v) is relaxed:
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 6
Properties of Relaxation
d[v], if not , is the length of some path from s
to v.
d[v] either stays the same or decreases with time
Therefore, if d[v] = o(s, v) at any time, this
holds thereafter
Note that d[v] > o(s, v) always
After i iterations of relaxing on all (u,v), if the
shortest path to v has i edges, then d[v] = o(s, v).
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 7
Properties of Relaxation
Consider any algorithm in which d[v], and t[v] are first initialized
by calling Initialize(G, s) [s is the source], and are only changed by
calling Relax. We have:
Lemma 24.11: ( v:: d[v] > o(s, v)) is an invariant.
Implies d[v] doesnt change once d[v] = o(s, v).
Proof:
Initialize(G, s) establishes invariant. If call to Relax(u, v, w)
changes d[v], then it establishes:
d[v] = d[u] + w(u, v)
> o(s, u) + w(u, v) , invariant holds before call.
> o(s, v) , by Lemma 24.10.
Corollary 24.12: If there is no path from s to v, then
d[v] = (s, v) = is an invariant.
Jim Anderson
For lemma 24.11, note that initialization makes
the invariant true at the beginning.
Comp 122, Fall 2003 Single-source SPs - 8
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 9
More Properties
Lemma 24.14: Let p = SP from s to v, where p = s u v.
If d[u] = (s, u) holds at any time prior to calling Relax(u, v, w),
then d[v] = (s, v) holds at all times after the call.

p'
Proof:

After the call we have:
d[v] s d[u] + w(u, v) , by Lemma 24.13.
= o(s, u) + w(u, v) , d[u] = o(s, u) holds.
= o(s, v) , by corollary to Lemma 24.1.

By Lemma 24.11, d[v] > (s, v), so d[v] = (s, v).

Lemma 24.13: Immediately after relaxing edge (u, v) by calling
Relax(u, v, w), we have d[v] s d[u] + w(u, v).
Jim Anderson
Lemma 24.13 follows simply from the structure
of Relax.
Lemma 24.14 shows that the shortest path will
be found one vertex at a time, if not faster.
Thus after a number of iterations of Relax equal
to V(G) - 1, all shortest paths will be found.
Comp 122, Fall 2003 Single-source SPs - 10
Jim Anderson


Bellman-Ford returns a compact representation
of the set of shortest paths from s to all other
vertices in the graph reachable from s. This is
contained in the predecessor subgraph.
Comp 122, Fall 2003 Single-source SPs - 11
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 12
Predecessor Subgraph
Lemma 24.16: Assume given graph G has no negative-weight cycles
reachable from s. Let G
t
= predecessor subgraph. G
t
is always a
tree with root s (i.e., this property is an invariant).
Proof:
Two proof obligations:
(1) G
t
is acyclic.
(2) There exists a unique path from source s to each vertex in V
t
.

Proof of (1):

Suppose there exists a cycle c = v
0
, v
1
, , v
k
, where v
0
= v
k
.
We have t[v
i
] = v
i-1
for i = 1, 2, , k.

Assume relaxation of (v
k-1
, v
k
) created the cycle.
We show cycle has a negative weight.
Note: Cycle must be reachable from s. (Why?)
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 13
Proof of (1) (Continued)
Before call to Relax(v
k-1
, v
k
, w):

t[v
i
] = v
i-1
for i = 1, , k1.
Implies d[v
i
] was last updated by d[v
i
] := d[v
i-1
] + w(v
i-1
, v
i
)
for i = 1, , k1. [Because Relax updates t.]
Implies d[v
i
] > d[v
i-1
] + w(v
i-1
,

v
i
) for i = 1, , k1. [Lemma 24.13]

Because t[v
k
] is changed by call, d[v
k
] > d[v
k-1
] + w(v
k-1
,

v
k
). Thus,

cycle! weight - neg. i.e., 0, ) v , w(v , ] d[v ] d[v Because
) v , w(v ] d[v
)) v , w(v ] (d[v ] d[v
k
1 i
i 1 i
k
1 i
1 i
k
1 i
i
k
1 i
k
1 i
i 1 i 1 i
k
1 i
k
1 i
i 1 i 1 i i
< =
+ =
+ >



=

=

=
= =

= =

Jim Anderson
Comment on Proof
d[v
i
] > d[v
i-1
] + w(v
i-1
,

v
i
) for i = 1, , k1
because when Relax(v
i-1
,

v
i
, w) was called,
there was an equality, and d[v
i-1
] may have
gotten smaller by further calls to Relax.
d[v
k
] > d[v
k-1
] + w(v
k-1
,

v
k
) before the last call to
Relax because that last call changed d[v
k
].
Comp 122, Fall 2003 Single-source SPs - 14
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 15
Proof of (2)
Proof of (2):

( v: v e V
t
:: (- path from s to v)) is an invariant.

So, for any v in V
t
, - at least 1 path from s to v.

Show s 1 path.

Assume 2 paths.




s u
y
x
z v
impossible!
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 16
Lemma 24.17
Lemma 24.17: Same conditions as before. Call Initialize & repeatedly
call Relax until d[v] = (s, v) for all v in V. Then, G
t
is a shortest-path
tree rooted at s.
Proof:

Key Proof Obligation: For all v in V
t
, the unique simple path p from
s to v in G
t
(path exists by Lemma 24.16) is a shortest path from s to v
in G.

Let p = v
0
, v
1
, , v
k
, where v
0
= s and v
k
= v.

We have d[v
i
] = (s, v
i
)
d[v
i
] > d[v
i-1
] + w(v
i-1
,

v
i
) (reasoning as before)

Implies w(v
i-1
,

v
i
) s (s, v
i
) (s, v
i-1
).
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 17
Proof (Continued)
) v , (s
) v , (s ) v , (s
)) v , (s ) v , (s (
) v , w(v
w(p)
k
0 k
1 - i i
k
1 i
k
1 i
i 1 i
=
=
s
=

=
=

So, equality holds and p is a shortest path.
Jim Anderson
And note that this shortest path tree will be
found after V(G) - 1 iterations of Relax.
Comp 122, Fall 2003 Single-source SPs - 18
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 19
Bellman-Ford Algorithm
Can have negative-weight edges. Will detect reachable negative-weight
cycles.
Initialize(G, s);
for i := 1 to |V[G]| 1 do
for each (u, v) in E[G] do
Relax(u, v, w)
od
od;
for each (u, v) in E[G] do
if d[v] > d[u] + w(u, v) then
return false
fi
od;
return true
Time
Complexity
is O(VE).
Jim Anderson
So if Bellman-Ford has not converged after
V(G) - 1 iterations, then there cannot be a
shortest path tree, so there must be a negative
weight cycle.
Comp 122, Fall 2003 Single-source SPs - 20
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 21
Example
0


z
u v
x y
6
5
3
9
7
7
8
2
4
2
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 22
Example
0
7
6
z
u v
x y
6
5
3
9
7
7
8
2
4
2
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 23
Example
0
2 7
4 6
z
u v
x y
6
5
3
9
7
7
8
2
4
2
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 24
Example
0
2 7
4 2
z
u v
x y
6
5
3
9
7
7
8
2
4
2
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 25
Example
0
-2 7
4 2
z
u v
x y
6
5
3
9
7
7
8
2
4
2
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 26
Another Look
Note: This is essentially dynamic programming.

Let d(i, j) = cost of the shortest path from s to i that is at most j hops.


d(i, j) =
0 if i = s . j = 0
if i = s . j = 0
min({d(k, j1) + w(k, i): i e Adj(k)}
{d(i, j1)}) if j > 0
z u v x y
1 2 3 4 5
0 0
1 0 6 7
2 0 6 4 7 2
3 0 2 4 7 2
4 0 2 4 7 2
j
i
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 27
Lemma 24.2
Lemma 24.2: Assuming no negative-weight cycles reachable from
s, d[v] = o(s, v) holds upon termination for all vertices v reachable
from s.
Proof:

Consider a SP p, where p = v
0
, v
1
, , v
k
, where v
0
= s and v
k
= v.

Assume k s |V| 1, otherwise p has a cycle.

Claim: d[v
i
] = o(s, v
i
) holds after the i
th
pass over edges.
Proof follows by induction on i.

By Lemma 24.11, once d[v
i
] = o(s, v
i
) holds, it continues to hold.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 28
Correctness
Claim: Algorithm returns the correct value.

(Part of Theorem 24.4. Other parts of the theorem follow easily from earlier results.)

Case 1: There is no reachable negative-weight cycle.

Upon termination, we have for all (u, v):
d[v] = o(s, v) , by lemma 24.2 (last slide) if v is reachable;
d[v] = o(s, v) = otherwise.
s o(s, u) + w(u, v) , by Lemma 24.10.
= d[u] + w(u, v)

So, algorithm returns true.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 29
Case 2
Case 2: There exists a reachable negative-weight cycle
c = v
0
, v
1
, , v
k
, where v
0
= v
k
.

We have E
i = 1, , k
w(v
i-1
, v
i
) < 0. (*)

Suppose algorithm returns true. Then, d[v
i
] s d[v
i-1
] + w(v
i-1
, v
i
) for
i = 1, , k. (because Relax didnt change any d[v
i
] ). Thus,

E
i = 1, , k
d[v
i
] s E
i = 1, , k
d[v
i-1
] + E
i = 1, , k
w(v
i-1
, v
i
)

But, E
i = 1, , k
d[v
i
] = E
i = 1, , k
d[v
i-1
].

Can show no d[v
i
] is infinite. Hence, 0 s E
i = 1, , k
w(v
i-1
, v
i
).

Contradicts (*). Thus, algorithm returns false.

Jim Anderson Comp 122, Fall 2003 Single-source SPs - 30
Shortest Paths in DAGs
Topologically sort vertices in G;
Initialize(G, s);
for each u in V[G] (in order) do
for each v in Adj[u] do
Relax(u, v, w)
od
od
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 31
Example
0
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 32
Example
0
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 33
Example
0 2 6
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 34
Example
0 2 6 6 4
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 35
Example
0 2 6 5 4
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 36
Example
0 2 6 5 3
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 37
Example
0 2 6 5 3
r s t
u
v w
5 2 7 1 2
6 1
3
2
4
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 38
Dijkstras Algorithm
Assumes no negative-weight edges.
Maintains a set S of vertices whose SP from s has been determined.
Repeatedly selects u in VS with minimum SP estimate (greedy choice).
Store VS in priority queue Q.
Initialize(G, s);
S := C;
Q := V[G];
while Q = C do
u := Extract-Min(Q);
S := S {u};
for each v e Adj[u] do
Relax(u, v, w)
od
od
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 39
Example
0


s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 40
Example
0
5
10
s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 41
Example
0
7 5
14 8
s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 42
Example
0
7 5
13 8
s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 43
Example
0
7 5
9 8
s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 44
Example
0
7 5
9 8
s
u v
x y
10
1
9
2
4 6
5
2 3
7
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 45
Correctness
Theorem 24.6: Upon termination, d[u] = (s, u) for all u in V
(assuming non-negative weights).
Proof:

By Lemma 24.11, once d[u] = (s, u) holds, it continues to hold.

We prove: For each u in V, d[u] = o(s, u) when u is inserted in S.

Suppose not. Let u be the first vertex such that d[u] = o(s, u) when
inserted in S.

Note that d[s] = o(s, s) = 0 when s is inserted, so u = s.

S = C just before u is inserted (in fact, s e S).
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 46
Proof (Continued)
Note that there exists a path from s to u, for otherwise
d[u] = o(s, u) = by Corollary 24.12.

there exists a SP from s to u. SP looks like this:
x
s
y
u
S
p
1

p
2

Jim Anderson Comp 122, Fall 2003 Single-source SPs - 47
Proof (Continued)
Claim: d[y] = o(s, y) when u is inserted into S.

We had d[x] = o(s, x) when x was inserted into S.

Edge (x, y) was relaxed at that time.

By Lemma 24.14, this implies the claim.

Now, we have: d[y] = o(s, y) , by Claim.
s o(s, u) , nonnegative edge weights.
s d[u] , by Lemma 24.11.

Because u was added to S before y, d[u] s d[y].

Thus, d[y] = o(s, y) = o(s, u) = d[u].

Contradiction.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 48
Complexity
Running time is

O(V
2
) using linear array for priority queue.

O((V + E) lg V) using binary heap.

O(V lg V + E) using Fibonacci heap.

(See book.)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy