CSC 213 – Large Scale Programming
Today’s Goals Discuss what is meant by weighted graphs Where weights placed within Graph How to use Graph ’s weights to model problems How to solve problems once Graph is set up Learn about myth & legend of Edsgar Dijkstra Who was he? Why should we care? How is it related? What was his largest contribution to graph theory? How does Dijkstra’s algorithm find smallest path?
Weighted Graphs Edge’s weight is cost of using edge Distance, cost, travel time, &c. usable as the weight Weights below are distance in miles ORD PVD MIA DFW SFO LAX LGA HNL
Cheapest Path Problem Find path with min. weight between 2 vertices Sum of edge weights is the path weight Consider the cheapest path from PVD to HNL None of edges is cheapest in this example ORD PVD MIA DFW SFO LAX LGA HNL
Cheapest Path Problem Subpath on shortest path is shortest path also Otherwise we would use shorter subpath Tree made by all shortest paths from vertex Consider all shortest paths from PVD ORD PVD MIA DFW SFO LAX LGA HNL
Dijkstra’s Algorithm Finds cheapest paths from single vertex Normally, computes cheapest path to all vertices Stop once vertex computed for single target vertex Makes several fundamental assumptions Connected graph needed when targeting all vertices edge weights must be nonnegative Only works if edge weights must be nonnegative
Dijkstra’s Algorithm Grows cloud of vertices as it goes Cloud starts with source vetex Add vertex to cloud with each step Tracks distances to each vertex not in cloud For each vertex, considers only cheapest path Only uses 1 edge from cloud to vertex not in cloud Each step uses vertex with smallest distance Adds this vertex to cloud, if not done yet Checks if creates smaller path to any vertices
Edge Relaxation Consider e from u to z When u added to cloud Check adjacent vertices Assume z not in cloud Found faster path! Update via relaxation New minimum selected: d( z ) = 75 z s u d( u ) = e
Edge Relaxation Consider e from u to z When u added to cloud Check adjacent vertices Assume z not in cloud Found faster path! Update via relaxation New minimum selected: d( z ) = 75 z s u d( u ) = e d( z ) = 60
Edge Relaxation Consider e from u to z When u added to cloud Check adjacent vertices Assume z not in cloud Found faster path! Update via relaxation New minimum selected: d( z ) = 75 z s u d( u ) = e d( z ) = 60
Edge Relaxation Consider e from u to z When u added to cloud Check adjacent vertices Assume z not in cloud Found faster path! Update via relaxation New minimum selected: z s u d( u ) = e d( z ) = 60
Dijkstra Example CB A E D F
C B A E D F
Dijkstra Example C B A E D F
C B A E D F
CB A E D F
CB A E D F
Why Dijkstra’s Algorithm Works Ultimately, Dijkstra was smart Smarter than me, if that is possible
Why Dijkstra’s Algorithm Works Ultimately, Dijkstra was smart Smarter than me, if that is possible
Why Dijkstra’s Algorithm Works Ultimately, Dijkstra was smart Smarter than me, if that is possible Example of a greedy algorithm Takes best choice at each point in time Vertices added in increasing distance Brings vertices closer at each step Stops when vertex cannot move closer
Why No Negative-Weight Edges? Assume edge has negative weight Greedily chose vertex before finding edge Cloud will include only one endpoint Negative weight changes everything, however Vertices not added in order Negative weight cycles? Repeat cycle to optimize CB A E D F
Why No Negative-Weight Edges? Assume edge has negative weight Greedily chose vertex before finding edge Cloud will include only one endpoint Negative weight changes everything, however Vertices not added in order Negative weight cycles? Repeat cycle to optimize C added when distance was 5, but cheapest distance is 1! CB A E D F
Not All Is Lost Slower cheapest paths algorithms can work Bellman-Ford algorithm takes time O ( nm ) DAG-based algorithms takes time O ( n + m ) Merlin algorithm takes time O ( n + m )
Not All Is Lost Slower cheapest paths algorithms can work Bellman-Ford algorithm takes time O ( nm ) DAG-based algorithms takes time O ( n + m ) Merlin algorithm takes time O ( n + m )
For Next Lecture