Given a graph G: (V, E, w), initial vertex a, and goal vertex z, find the length of the shortest path between a and z. The shortest path is given by a labeling of each vertex v by L, L(v), satisfying the following constraints:
maximize L(z)
subject to
L(a) = 0
& for all {u, v} in E, L(u) <= L(v) + w(u, v)
Maximizing L(z) at the same time that each vertex's
L-value is upper bounded has the same effect as using
min. Dijkstra's algorithm essentially solves this particular
form of linear program. Each iteration improves the estimate of
lengths.