You are on page 1of 43

SINGLE-SOURCE SHORTEST PATHS

Shortest Path Problems

Directed weighted graph.


Path length is sum of weights of edges on path.
The vertex at which the path begins is the source vertex.
The vertex at which the path ends is the destination vertex.
t
3

s 0

x
9

6
4
2

5
y

11
z

Example
1

2
16

3
5

10

4
2

3
14

Consider Source node 1 and destination node 7


A direct path between Nodes 1 and 7 will cost 14

Example
1

2
16

3
5

10

4
2

3
14

A shorter path will cost only 11

Shortest-Path Variants
Single-source single-destination (1-1): Find the shortest
path from source s to destination v.
Single-source all-destination(1-Many): Find the shortest
path from s to each vertex v.
Single-destination shortest-paths (Many-1): Find a shortest
path to a given destination vertex t from each vertex v.
All-pairs shortest-paths problem (Many-Many): Find a
shortest path from u to v for every pair of vertices u and v.
We talk about directed, weighted graphs

Shortest-Path Variants (Contd)

For un-weighted graphs, the shortest path problem is mapped to BFS


Since all weights are the same, we search for the smallest number of edges

BFS creates a tree called BFS-Tree

2
2

3
4

0 s

Shortest-Path Variants
No need to consider different solution or algorithm for each variant
(we reduce it into two types)

Single-source single-destination (1-1): Find the shortest


path from source s to destination v.
Single-source all-destination(1-Many): Find the shortest
path from s to each vertex v.
Single-destination shortest-paths (Many-1): Find a shortest
path to a given destination vertex t from each vertex v.
All-pairs shortest-paths problem (Many-Many): Find a
shortest path from u to v for every pair of vertices u and v.

Shortest-Path Variants
Single-Source Single-Destination (1-1)

Single-Source All-Destination (1-M)

-No good solution that beats 1-M variant


-Thus, this problem is mapped to the 1-M
variant

-Need to be solved (several algorithms)


-We will study this one

All-Sources Single-Destination (M-1)

All-Sources All-Destinations (M-M)

-Reverse all edges in the graph


-Thus, it is mapped to the (1-M) variant

-Need to be solved (several algorithms)


-We will study it (if time permits)

Shortest-Path Variants
Single-Source Single-Destination (1-1)

Single-Source All-Destination (1-M)

-No good solution that beats 1-M variant


-Thus, this problem is mapped to the 1-M
variant

-Need to be solved (several algorithms)


-We will study this one

All-Sources Single-Destination (M-1)

All-Sources All-Destinations (M-M)

-Reverse all edges in the graph


-Thus, it is mapped to the (1-M) variant

-Need to be solved (several algorithms)


-We will study it (if time permits)

Introduction
Generalization of BFS to handle weighted graphs
Direct Graph G = ( V, E ), edge weight fn ; w : E R
In BFS w(e)=1 for all e E
Weight of path p = v1 v2 vk is
k 1

w( p) w(vi , vi 1 )
i 1

Shortest Path
Shortest Path = Path of minimum weight
(u,v)=

min{(p) : u

v}; if there is a path from u to v,


otherwise.

Several Properties

1- Optimal Substructure Property


Theorem: Subpaths of shortest paths are also shortest paths

Let (1,k) = <v1, ..i, .. j.., .. ,vk > be a shortest path from v1 to vk
Let (i,j) = <vi, ... ,vj > be subpath of (1,k) from vi to vj
for any i, j
Then (I,j) is a shortest path from vi to vj

1- Optimal Substructure Property


Proof: By cut and paste

v0

v1

v2

v3

v4

v5

v6

v7

If some subpath were not a shortest path


We could substitute a shorter subpath to create a shorter
total path
Hence, the original path would not be shortest path

2- No Cycles in Shortest Path


Definition:
(u,v) = weight of the shortest path(s) from u to v
Negative-weight cycle: The problem is undefined
can always get a shorter path by going around the cycle again
cycle
<0

Positive-weight cycle : can be taken out and reduces the cost

3- Negative-weight edges
No problem, as long as no negative-weight cycles are
reachable from the source (allowed)

4- Triangle Inequality
Lemma 1: for a given vertex s in V and for every edge (u,v) E,
(s,v) (s,u) + w(u,v)
Proof: shortest path s v is no longer than any other path.
in particular the path that takes the shortest path s v and
then takes cycle (u,v)
u
s

Algorithms to Cover
Dijkstras Algorithm
Shortest Path is DAGs

Initialization
Maintain d[v] for each v in V
d[v] is called shortest-path weight estimate
and it is upper bound on (s,v)
INIT(G, s)
for each v V do
d[v]
[v] NIL
d[s] 0

Upper bound

Parent node

Relaxation
When you find an edge (u,v) then
check this condition and relax d[v] if
possible

RELAX(u, v)
if d[v] > d[u]+w(u,v) then
d[v] d[u]+w(u,v)
[v] u
u

Change d[v]

No chnage

Algorithms to Cover
Dijkstras Algorithm
Shortest Path is DAGs

Dijkstras Algorithm For Shortest Paths

Non-negative edge weight

Like BFS: If all edge weights are equal, then use BFS,
otherwise use this algorithm

Use Q = min-priority queue keyed on d[v] values

Dijkstras Algorithm For Shortest Paths


DIJKSTRA(G, s)
INIT(G, s)
S > set of discovered nodes
QV[G]
while Q do
uEXTRACT-MIN(Q)
SS U {u}
for each v in Adj[u] do
RELAX(u, v)
> May cause
> DECREASE-KEY(Q, v, d[v])

Example: Initialization Step


DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
10
QV[G]
s
while Q do
uEXTRACT-MIN(Q)
5
SS U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])

v
1

Example
u

10
s

Example
DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
10
QV[G]
while Q do
uEXTRACT-MIN(Q)
s

SS U {u}
for each v in Adj[u] do
5
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])

v
1

Example
DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
10
QV[G]
while Q do
s
uEXTRACT-MIN(Q)

SS U {u}
for each v in Adj[u] do
5
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])

v
1

Example
DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
10
QV[G]
while Q do
s
uEXTRACT-MIN(Q)

SS U {u}
for each v in Adj[u] do
5
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])

v
1

Example
DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
10
QV[G]
while Q do
uEXTRACT-MIN(Q)
s

SS U {u}
for each v in Adj[u] do
5
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])

v
1

Example
u

10
s

Dijkstras Algorithm Analysis


O(V)

DIJ KSTRA(G, s)
INIT(G, s)
S
> set of discovered nodes
QV[G]
O(V Log V)
while Q do
uEXTRACT-MIN(Q)
Total in the loop: O(V Log V)
SS U {u}
for each v in Adj[u] do
RELAX(u, v) > May cause
>DECREASE-KEY(Q, v, d[v])
Total in the loop: O(E Log V)

Time Complexity: O (E Log V)

Algorithms to Cover
Dijkstras Algorithm
Shortest Path is DAGs

Key Property in DAGs


If there are no cycles it is called a DAG
In DAGs, nodes can be sorted in a linear order such that all
edges are forward edges
Topological sort

Single-Source Shortest Paths in DAGs

Shortest paths are always well-defined in dags


no cycles => no negative-weight cycles even if
there are negative-weight edges

Idea: If we were lucky


To process vertices on each shortest path from left
to right, we would be done in 1 pass

Single-Source Shortest Paths in DAGs


DAG-SHORTEST PATHS(G, s)
TOPOLOGICALLY-SORT the vertices of G
INIT(G, s)
for each vertex u taken in topologically sorted order do
for each v in Adj[u] do
RELAX(u, v)

Example
6
r

s
0

1
u
7

4
3

Example
6
r

s
0

1
u
7

4
3

Example
6
r

s
0

t
2

1
u
7

4
3

Example
6
r

s
0

t
2

1
u
7

4
3

v
6

w
4

Example
6
r

s
0

t
2

1
u
7

4
3

v
5

w
4

Example
6
r

s
0

t
2

1
u
7

4
3

v
5

w
3

Example
6
r

s
0

t
2

1
u
7

4
3

v
5

w
3

Single-Source Shortest Paths in DAGs:


Analysis
O(V+E)
DAG-SHORTEST PATHS(G, s)
TOPOLOGICALLY-SORT the vertices of G
O(V)
INIT(G, s)
for each vertex u taken in topologically sorted order do
for each v in Adj[u] do
RELAX(u, v)
Total O(E)

Time Complexity: O (V + E)

You might also like