1 Introduction
Given a road map of the United States on which the distance between each pair of adjacent
intersections is marked, how can a motorist determine the shortest route from New York City to
San Francisco? The brute-force way is to generate all possible routes from New York City to San
Francisco, and select the shortest one among them. This approach apparently generates too many
routes that are not worth considering. For example, a route from New York City to Miami to San
Francisco is a poor choice. In this chapter we introduce some efficient algorithms for finding all the
shortest paths from a given starting location.