# Lecture 32

Shortest Path Problem

## Learning Outcomes

At the end of this lecture, you’ll be able to:

• Describe a variant of the general Graph Search problem that finds a path between a source and every reachable vertex.
• Modify BFS/DFS to find a path between a source and every reachable vertex.
• Describe a variant of the general Graph Search problem that finds the distance between a source and every reachable vertex where distance is defined as the length of a path from source to that vertex.
• Modify BFS/DFS to find the distance between a source and every reachable vertex where distance is the length of a path from source to that vertex.
• Trace shortest path algorithm in unweighted graph by specifying the values in auxiliary data structures.
• Analyze the running time of the (unweighted) shortest path algorithm, assuming an incidence/adjacency list Graph implementation.
• Recognize that (unweighted) shortest path algorithm is a modified BFS.
• Explain why the modified BFS will not find the shortest path in weighted graphs.
• Trace Dijkstra’s algorithm (shortest path in weighted graph) by specifying the values in auxiliary data structures.
• Analyze the running time of the Dijkstra’s algorithm, assuming an incidence/adjacency list Graph implementation.
• Describe the role of support data structures in reducing the running time of Dijkstra’s algorithm from quadratic to log-linear.
• Implement Dijkstra’s algorithm efficiently for application to a specific problem.

## Lecture Plan

In this lecture, we'll cover the following lessons:

Lessons marked with ⚡ contain exercise/activity.