Chapter 4.4: Shortest Paths in Graphs

It is possible to use a greedy algorithm to find the shortest path in a graph, whether the graph is directed or undirected, weighted or unweighted.

Dijkstra's Algorithm

This algorithm maintains a set S of vertices u for which we have determined the shortest path distance d(u) from s. We call this the “explored” part of the graph. Initially, S={s} and d(s)=0. For each node v in V-S, we determine the shortest path that can be constructed by traveling along a path through the explored part S to some u in S, followed by the single edge (u,v). We consider d'(v)=min_e(u,v) d(u)+l_e. We choose the node v in V-S for which this quantity is minimized and add v to S and define d(v)=d'(v).

This can be clarified by the pictures used in the lecture slides.

At any point in the algorithm, the path P_u is the shortest s-u path. This algorithm fails if edges have negative lengths. It is also important to note that Dijkstra's Algorithm is a continuous version of the standard BFS used to traverse graphs.

Using a priority queue, Dijkstra's Algorithm can be implemented on a graph with n nodes and m edges to run in O(m) time, plus the time for n ExtractMin and m ChangeKey operations. So the overall running time is O(mlogn).

I would rate this section an 8. It was easy to read but the lecture was easier to understand.

courses/cs211/winter2014/journals/alyssa/chapter_4.4.txt · Last modified: 2014/02/26 02:49 by hardnetta
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0