Shortest Path Label-Setting Algorithms
Introduction & Assumptions
Problem Definition & Assumptions
Problem: Given a network G = (N, A) in which each arc (i, j)
has an associated length or cost cij, let node s be the source.
The length of a directed path is the sum of the lengths of the
arcs in the path. For every node i s, find a shortest length
directed path from s to i.
– All arc lengths are integers (if rational but not integer, multiply them
by a suitably large number)
– The network contains a directed path from node s to every node i s
(if not, add an arc (s, i) with very large cost)
– The network does not contain a negative cycle (otherwise see Ch. 5)
– The network is directed (transform undirected arcs w/positive costs
as in Ch. 2; undirected arcs w/negative costs will create neg. cycles)
Types of Shortest Path Problems
Single-source shortest path
One node to all others with nonnegative arc lengths – Chapter 4
Variations: maximum capacity path, maximum reliabiltiy path
One node to all others with arbitrary arc lengths – Chapter 5
All-pairs shortest path: every node to every other node –
String model for shortest path from s to t:
Arcs = strings, knots = nodes; hold s and t and pull tight.
Shortest paths will be taut: for i and j on a shortest path connected by arc
(i, j), distance s-i plus cij distance s-j
Associated “dual” maximization problem: pulling s and t as far apart as
Single-Source Shortest Paths
Solution is a shortest-path tree rooted at s.
Property 4.1. If the path s = i1 – i2 – … – ih = k is a shortest
path from s to k, then for every q = 2, 3, …, h-1, the
subpath s = i1 – i2 – … – iq is a shortest path from the
source node to iq.
Property 4.2. Let the vector d represent the shortest path
distances. Then a directed path P from s to k is a shortest
path if and only if for i, j P, d j d i cij
Store the shortest path tree as a vector of n-1 predecessor
nodes: pred(j) is the node i that satisfies above equality.
Acyclic Networks: Reaching
Examine the nodes in topological order; perform a breadth-first
search to find a shortest-path tree.
0. d(s) 0, d(j) for j s, i s
1. If A(i) is empty, then stop. Otherwise, to examine node i,
scan the arcs in A(i). If for any arc (i, j), d(j) d(i) + cij ,
then set d(j) = d(i) + cij .
2. Set i to the next node in topological order and return to 1.
Solves shortest path problem on acyclic networks in O(m) time.
Shortest paths from source node to all other nodes with
nonnegative arc lengths (cycles permitted)
d(i) is the distance from s to i along a shortest path
pred(i) is the predecessor of i along a shortest path
S = set of permanently labeled nodes (L in GIDEN)
S set of temporarily labeled nodes (P in GIDEN)
GIDEN also has set U for unlabeled nodes
At each iteration, one node moves to S from S
Dijkstra’s Algorithm in GIDEN
• Node selection requires time proportional to
n n 1 n 2 ... 1 O n2
• Distance updates are performed for each arc emanating
from node i; total of m updates in the entire algorithm
• Since n2 m, the complexity is O n2
• For dense networks, n 2 m
– Complexity can be improved for sparse networks by cleverness
and special data structures