A spanning tree of the connected graph is a subgraph containing every vertex, connected and without cycles in a graph. Equivalently, between every pair of vertices it has exactly one graph path. For a finite graph with vertices, it has edges.
A shortest-path tree rooted at is a spanning tree such that, for every vertex , the unique graph path in has minimum total edge length among all graph paths in . The objective is the sum of the lengths along each route, not the sum of all the tree's edge lengths.
For Dijkstra's algorithm, initialize and for other vertices, with no predecessor initially. Repeatedly select an unfinalized vertex of least tentative distance, finalize it, and relax each edge : if , replace by that value and set the predecessor of to . Continue until all vertices are finalized. The predecessor edges form the shortest-path tree.
To justify finalization, consider a supposedly shorter route to the next selected vertex. Its first unfinalized vertex is preceded by a finalized one, whose relaxation would already have offered a tentative distance no greater than the length of that route's prefix. Nonnegative remaining lengths would contradict the selected vertex's minimal tentative label. Thus final labels are the true shortest distances. Strictly positive lengths also make predecessors have smaller distances, ruling out predecessor cycles in a graph.
Starting from , the initial tentative distances to are . Finalize next. Its edges improve these to , , and . No subsequent relaxation improves them. Hence one shortest-path tree is
These values follow either by completing Dijkstra's algorithm in the order , or by observing that any internal vertex on a simple route adds to the direct-edge cost: only the internal vertex can reduce it.
There is an index slip in the source: starting with and performing steps produces the final graph . Write for that final graph. The literal assertion for can fail: take a triangle with , , . Before the final step the extra edge remains; only the final deletion removes it.
The invariant is that and remain connected. Choose a simple graph path in . If an edge of did not lie in , then at its processing time was still present and avoided that edge. The algorithm would therefore have deleted it, a contradiction. Thus every edge of lies in . The final graph is precisely an path and possibly isolated vertices.
Let be the smallest threshold for which the edges of length at most connect to . This is exactly the optimum value of the bottleneck shortest path problem. While any edge longer than is being processed, every edge of some threshold- route is still present, because shorter edges have not yet been processed. Thus all edges longer than are deleted. The final path from part (i) consequently has maximum edge length at most . It cannot have a smaller maximum by the definition of , proving optimality. Ties in edge ordering do not affect this argument.
Take a minimum spanning tree , for example one constructed by Kruskal's algorithm. Fix and let be a longest edge of the tree's unique path. Deleting partitions into two components separating and . Any alternative path crosses this graph cut. If all of its edges were shorter than , a crossing edge would let us replace by , producing a spanning tree of smaller total length. This contradicts minimality of .
Therefore every competing path has an edge at least as long as , and the tree path solves the bottleneck shortest path problem. The same minimum spanning tree works simultaneously for every ; this is the minimax path property of a minimum spanning tree.

Articles by others on the same topic (0)

There are currently no matching articles.