0% found this document useful (0 votes)
42 views

CISC 235: Topic 11: Shortest Paths Algorithms

This document discusses shortest path algorithms for graphs. It covers algorithms for finding shortest paths in unweighted graphs, weighted directed acyclic graphs (DAGs), and weighted digraphs with no negative edges. For weighted DAGs, it describes using a topological sort order to process vertices and relax edges. For weighted digraphs, it presents Dijkstra's algorithm which uses a priority queue to iteratively extract and relax the closest vertex. Shortest paths are always well-defined in DAGs because there are no cycles that could produce negative cost cycles.
Copyright
© © All Rights Reserved
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)
42 views

CISC 235: Topic 11: Shortest Paths Algorithms

This document discusses shortest path algorithms for graphs. It covers algorithms for finding shortest paths in unweighted graphs, weighted directed acyclic graphs (DAGs), and weighted digraphs with no negative edges. For weighted DAGs, it describes using a topological sort order to process vertices and relax edges. For weighted digraphs, it presents Dijkstra's algorithm which uses a priority queue to iteratively extract and relax the closest vertex. Shortest paths are always well-defined in DAGs because there are no cycles that could produce negative cost cycles.
Copyright
© © All Rights Reserved
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/ 13

CISC 235: Topic 11

Shortest Paths Algorithms


Outline

• Single-Source Shortest Paths


• Algorithm for Unweighted Graphs
• Algorithm for Weighted, Directed Acyclic
Graphs (Weighted DAGs)
• Algorithm for Weighted, Directed Graphs
with no negative weights

CISC 235 Topic 11 2


Single-Source Shortest Paths
Give a graph G = (V,E), we want to find a shortest path
from a given source vertex s  V to each vertex v  V

Why is vertex 5 not


CISC 235 Topic 11 3
included in the list?
Single-Source Shortest Paths

What problems might occur with these two special cases?


CISC 235 Topic 11 4
Properties of Shortest Paths
Can a shortest path contain a cycle?

At most how many edges will a shortest path


contain?

CISC 235 Topic 11 5


Unweighted Graphs

What algorithm can


be used to find the
shortest paths for
unweighted graphs? CISC 235 Topic 11 6
Shortest Paths Algorithms for
Weighted Graphs
For each vertex v  V, we maintain attributes:
d[v] : shortest-path estimate (upper bound on weight of
shortest path from source s to v)
π[v] : predecessor of v on shortest path so far

Initially d[v] is ∞ and π[v] is NIL :

INITIALIZE-SINGLE-SOURCE(G, s)
for each vertex v ∈ V[G]
d[v] ← ∞
π[v] ← NIL
d[s] ← 0 CISC 235 Topic 11 7
Updating Adjacent Vertices
RELAX(u, v, w)
if d[v] > d[u] + w(u, v)
d[v] ← d[u] + w(u, v)
π[v] ← u

CISC 235 Topic 11 8


Algorithm for Weighted DAGs

AG-SHORTEST-PATHS(G, w, s)

topologically sort the vertices of G

INITIALIZE-SINGLE-SOURCE(G, s)

for each vertex u, taken in topologically sorted order


for each vertex v ∈ Adj[u]
RELAX(u, v, w)

CISC 235 Topic 11 9


Example

Shortest paths are always


well-defined in dags. Why?
CISC 235 Topic 11 10
Weighted Digraphs with No
Negative Weights
Dijkstra’s Algorithm
DIJKSTRA(G, w, s)
INITIALIZE-SINGLE-SOURCE(G, s)
S←
Q ← V[G]
while Q  
u ← EXTRACT-MIN(Q)
S ← S ∪ {u}
for each vertex v ∈ Adj[u]
RELAX(u, v, w)
CISC 235 Topic 11 12
Example

CISC 235 Topic 11 13

You might also like