The most obvious applications arise in transportation or communications,
such as finding the best route to drive between Chicago and Phoenix or figuring how to
direct packets to a destination across a network.

Consider the problem of image segmentation, that is, separating two characters in a scanned, bit-mapped
image of printed text. We need to find the separating line between two points that cuts through the fewest number
of black pixels. This grid of pixels can be modeled as a graph, with any edge across a black pixel given a high
cost. The shortest path from top to bottom defines the best separation between
left and right.

A major problem in speech recognition is distinguishing between words
that sound alike (homophones), such as to, two, and too.
We can construct a graph whose vertices correspond to possible
words, with an edge between possible neighboring words.
If the weight of each edge measures the likelihood of transition, the shortest
path across the graph defines the best interpretation of a sentence.

Suppose we want to draw an informative picture of a graph.
The center of the page should coorespond to the ``center'' of the graph,
whatever that means.
A good definition of the center is the vertex that minimizes the maximum
distance to any other vertex in the graph.
Finding this center point requires knowing the distance (i.e. shortest
path) between all pairs of vertices.