Shortest Path Problem

After reading this chapter and engaging in the embedded activities and reflections, you should be able to:

  • Describe a general Graph Search problem variant 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 general Graph Search problem variant that finds a distance between a source and every reachable vertex. Distance is defined as the length of a path from the 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 the 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 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.

This chapter does not have a starter/solution code.