Unformatted text preview: s have been developed. In particular, there are many ways to compute
minimum-cost path between any two nodes. For instance, one might use the BellmanFord method developed in Section 18.4. That algorithm is well-suited to a distributed implementation because it iteratively converges to the right answer as new updates arrive,
but applying the algorithm on a complete graph is slower than some alternatives.
One of these alternatives was developed a few decades ago, a few years after the
Bellman-Ford method, by a computer scientist named Edsger Dijkstra. Most link-state
protocol implementations use Dijkstra’s shortest-paths algorithm (and numerous extensions to it) in their integration step. One crucial assumption for this algorithm, which is
fortunately true in most networks, is that the link costs must be non-negative.
Dijkstra’s algorithm uses the following property of shortest paths: if a shortest path from
node X to node Y goes through node Z , then the sub-path from X to Z must also be a shortest path.
It is easy to see why this property must hold. If the sub-path from X to Z is not a shortest
path, then one could ﬁnd a shorter path from X to Y that uses a different, and shorter,
sub-path from X to Z instead of the original sub-path, and then continue from Z to Y . By
the same logic, the sub-path from Z to Y must also be a shortest path in the network. As
a result, shortest paths can be concatenated together to form a shortest path between the
nodes at the ends of the sub-paths.
This property suggests an iterative approach toward ﬁnding paths from a node, n, to all
the other destinations in the network. The algorithm maintains two disjoint sets of nodes,
S and X = V − S , where V is the set of nodes in the network. Initially S is empty. In
each step, we will add one more node to S , and correspondingly remove that node from
X . The node, v , we will add satisﬁes the following property: it is the node in X that has
the shortest path from n. Thus, the algorithm adds nodes to S in non-decreasin...
View Full Document
This document was uploaded on 02/26/2014 for the course CS 6.02 at MIT.
- Fall '13