Shortest Path Algorithms

Similar documents
Dijkstra s Single Source Shortest Path Algorithm. Andreas Klappenecker

Partha Sarathi Manal

Graph Algorithms. Andreas Klappenecker. [based on slides by Prof. Welch]

Introduction to Algorithms. Lecture 11

5.4 Shortest Paths. Jacobs University Visualization and Computer Graphics Lab. CH : Algorithms and Data Structures 456

Single Source Shortest Path

Minimum Spanning Trees My T. UF

Shortest Path Problem

Graph Algorithms. Andreas Klappenecker

Shortest path problems

COMP251: Single source shortest paths

Minimum Spanning Trees

Minimum Spanning Tree

2. True or false: even though BFS and DFS have the same space complexity, they do not always have the same worst case asymptotic time complexity.

Chapter 24. Shortest path problems. Chapter 24. Shortest path problems. 24. Various shortest path problems. Chapter 24. Shortest path problems

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Week 12: Minimum Spanning trees and Shortest Paths

Graphs. Part II: SP and MST. Laura Toma Algorithms (csci2200), Bowdoin College

Minimum Spanning Trees

Minimum Spanning Trees

CS 561, Lecture 10. Jared Saia University of New Mexico

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 20. Example. Shortest Paths Definitions

Shortest Paths. Nishant Mehta Lectures 10 and 11

Shortest Paths. Nishant Mehta Lectures 10 and 11

Introduction to Algorithms

CSE 100 Minimum Spanning Trees Prim s and Kruskal

Part VI Graph algorithms. Chapter 22 Elementary Graph Algorithms Chapter 23 Minimum Spanning Trees Chapter 24 Single-source Shortest Paths

Title. Ferienakademie im Sarntal Course 2 Distance Problems: Theory and Praxis. Nesrine Damak. Fakultät für Informatik TU München. 20.

Single Source Shortest Path (SSSP) Problem

CS 561, Lecture 10. Jared Saia University of New Mexico

Introduction to Algorithms

Tutorial. Question There are no forward edges. 4. For each back edge u, v, we have 0 d[v] d[u].

from notes written mostly by Dr. Carla Savage: All Rights Reserved

Lecture 11: Analysis of Algorithms (CS ) 1

CS200: Graphs. Rosen Ch , 9.6, Walls and Mirrors Ch. 14

Sources for this lecture 2. Shortest paths and minimum spanning trees

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Single Source Shortest Path: The Bellman-Ford Algorithm. Slides based on Kevin Wayne / Pearson-Addison Wesley

Lecture Notes for Chapter 23: Minimum Spanning Trees

Algorithms on Graphs: Part III. Shortest Path Problems. .. Cal Poly CSC 349: Design and Analyis of Algorithms Alexander Dekhtyar..

Chapter 9. Greedy Technique. Copyright 2007 Pearson Addison-Wesley. All rights reserved.

Dijkstra s algorithm for shortest paths when no edges have negative weight.

CSE 421 Greedy Alg: Union Find/Dijkstra s Alg

CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

CS4800: Algorithms & Data Jonathan Ullman

Graphs II - Shortest paths

4/8/11. Single-Source Shortest Path. Shortest Paths. Shortest Paths. Chapter 24

Depth-first Search (DFS)

Theory of Computing. Lecture 7 MAS 714 Hartmut Klauck

Dijkstra s Algorithm. Dijkstra s algorithm is a natural, greedy approach towards

MST & Shortest Path -Prim s -Djikstra s

Breadth-First Search, 1. Slides for CIS 675 DPV Chapter 4. Breadth-First Search, 3. Breadth-First Search, 2

Outline. (single-source) shortest path. (all-pairs) shortest path. minimum spanning tree. Dijkstra (Section 4.4) Bellman-Ford (Section 4.

Dijkstra s Algorithm Last time we saw two methods to solve the all-pairs shortest path problem: Min-plus matrix powering in O(n 3 log n) time and the

Outline. Computer Science 331. Definitions: Paths and Their Costs. Computation of Minimum Cost Paths

22 Elementary Graph Algorithms. There are two standard ways to represent a

Introduction to Algorithms

Three Graph Algorithms

Partha Sarathi Mandal

Three Graph Algorithms

Algorithm Design and Analysis

Outline. Computer Science 331. Analysis of Prim's Algorithm

COP 4531 Complexity & Analysis of Data Structures & Algorithms

CSE 101. Algorithm Design and Analysis Miles Jones Office 4208 CSE Building Lecture 6: BFS and Dijkstra s

CS350: Data Structures Dijkstra s Shortest Path Alg.

Dijkstra s Shortest Path Algorithm

Greedy Algorithms CSE 6331

The Shortest Path Problem. The Shortest Path Problem. Mathematical Model. Integer Programming Formulation

Lecture 5: Graph algorithms 1

Unit 2: Algorithmic Graph Theory

1 Dijkstra s Algorithm

Content. 1 Algorithms. 2 Assignment and Knapsack problem 3 Bin Packing. 4 Scheduling

Minimum Spanning Trees

Single Source Shortest Paths

Introduction. I Given a weighted, directed graph G =(V, E) with weight function

CS 161 Lecture 11 BFS, Dijkstra s algorithm Jessica Su (some parts copied from CLRS) 1 Review

Data Structures and Algorithms. Werner Nutt


Solutions to relevant spring 2000 exam problems

L22-23: Graph Algorithms

CS 4349 Lecture October 23rd, 2017

CS420/520 Algorithm Analysis Spring 2009 Lecture 14

CHAPTER 23. Minimum Spanning Trees

Chapter 23. Minimum Spanning Trees

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

CS521 \ Notes for the Final Exam

COMP 182: Algorithmic Thinking Prim and Dijkstra: Efficiency and Correctness

COT 6405 Introduction to Theory of Algorithms

G205 Fundamentals of Computer Engineering. CLASS 21, Mon. Nov Stefano Basagni Fall 2004 M-W, 1:30pm-3:10pm

Classical Shortest-Path Algorithms

CHAPTER 13 GRAPH ALGORITHMS

Minimum-Cost Spanning Tree. Example

Representations of Weighted Graphs (as Matrices) Algorithms and Data Structures: Minimum Spanning Trees. Weighted Graphs

Lecture 13. Reading: Weiss, Ch. 9, Ch 8 CSE 100, UCSD: LEC 13. Page 1 of 29

Example. Minimum-Cost Spanning Tree. Edge Selection Greedy Strategies. Edge Selection Greedy Strategies

Routing Protocols and the IP Layer

Minimum Spanning Tree (undirected graph)

Algorithm Design and Analysis

Algorithm Design and Analysis

Lecture 10: Analysis of Algorithms (CS ) 1

Transcription:

Shortest Path Algorithms Andreas Klappenecker [based on slides by Prof. Welch] 1

Single Source Shortest Path Given: a directed or undirected graph G = (V,E) a source node s in V a weight function w: E -> R. Goal: For each vertex t in V, find a path from s to t in G with minimum weight Warning! Negative weight cycles are a problem: s 4 5 t 2

Constant Weight Functions Suppose that the weights of all edges are the same. How can you solve the singlesource shortest path problem? Breadth-first search can be used to solve the single-source shortest path problem. Indeed, the tree rooted at s in the BFS forest is the solution. 3

Intermezzo: Priority Queues 4

Priority Queues A min-priority queue is a data structure for maintaining a set S of elements, each with an associated value called key. This data structure supports the operations: insert(s,x) which realizes S := S {x} minimum(s) which returns the element with the smallest key. extract-min(s) which removes and returns the element with the smallest key from S. decrease-key(s,x,k) which decreases the value of x s 5

Simple Array Implementation Suppose that the elements are numbered from 1 to n, and that the keys are stored in an array key[1..n]. insert and decrease-key take O(1) time. extract-min takes O(n) time, as the whole array must be searched for the minimum. 6

Binary min-heap Implementation Suppose that we realize the priority queue of a set with n element with a binary min-heap. extract-min takes O(log n) time. decrease-key takes O(log n) time. insert takes O(log n) time. Building the heap takes O(n) time. 7

Fibonacci-Heap Implementation Suppose that we realize the priority queue of a set with n elements with a Fibonacci heap. Then extract-min takes O(log n) amortized time. decrease-key takes O(1) amortized time. insert takes O(1) time. [One can realize priority queues with worst case times as above] 8

Dijkstra s Single Source Shortest Path Algorithm 9

Dijkstra's SSSP Algorithm Assumes all edge weights are nonnegative Similar to Prim's MST algorithm Start with source node s and iteratively construct a tree rooted at s Each node keeps track of tree node that provides cheapest path from s (not just cheapest path from any tree node) At each iteration, include the node whose cheapest path from s is the overall cheapest 10

Prim's vs. Dijkstra's 4 5 1 s 6 Prim's MST 4 5 1 s 6 Dijkstra's SSSP 11

Implementing Dijkstra's Alg. How can each node u keep track of its best path from s? Keep an estimate, d[u], of shortest path distance from s to u Use d as a key in a priority queue When u is added to the tree, check each of u's neighbors v to see if u provides v with a cheaper path from s: compare d[v] to d[u] + w(u,v) 12

Dijkstra's Algorithm input: G = (V,E,w) and source node s // initialization d[s] := 0 d[v] := infinity for all other nodes v initialize priority queue Q to contain all nodes using d values as keys 13

Dijkstra's Algorithm while Q is not empty do u := extract-min(q) for each neighbor v of u do if d[u] + w(u,v) < d[v] then // relax d[v] := d[u] + w(u,v) decrease-key(q,v,d[v]) parent(v) := u 14

Dijkstra's Algorithm Example a 2 12 8 b 10 6 c 4 3 9 d 2 4 e a is source node iteration 0 1 2 3 4 5 Q abcde bcde cde de d Ø d[a] 0 0 0 0 0 0 d[b] 2 2 2 2 2 d[c] 12 10 10 10 10 d[d] 16 13 13 d[e] 11 11 11 11 15

Correctness of Dijkstra's Alg. Let T i be the tree constructed after i-th iteration of the while loop: The nodes in T i are not in Q The edges in T i are indicated by parent variables Show by induction on i that the path in T i from s to u is a shortest path and has distance d[u], for all u in T i. Basis: i = 1. s is the only node in T 1 and d[s] = 0. 16

Correctness of Dijkstra's Alg. Induction: Assume T i is a correct shortest path tree. We need to show that T i+1 is a correct shortest path tree as well. Let u be the node added in iteration i. Let x = parent(u). Need to show path in T i+1 from s s T i x T i+1 u to u is a shortest path, and has distance d[u] 17

Correctness of Dijkstra's Alg s a T i x P, path in T i+1 T i+1 from s to u u P', another path from s to u b (a,b) is first edge in P' that leaves T i 18

Correctness of Dijkstra's Alg Let P1 be part of P' before (a,b). Let P2 be part of P' after (a,b). w(p') = w(p1) + w(a,b) + w(p2) w(p1) + w(a,b) (nonneg wts) s a T i b x P P' T i+1 u wt of path in T i from s to a + w(a,b) (inductive hypothesis) w(s->x path in T i ) + w(x,u) (alg chose u in iteration i and d-values are accurate, by inductive hypothesis = w(p). So P is a shortest path, and d[u] is accurate after iteration i+1. 19

Running Time of Dijstra's Alg. initialization: insert each node once O(V T ins ) O(V) iterations of while loop one extract-min per iteration => O(V T ex ) for loop inside while loop has variable number of iterations For loop has O(E) iterations total one decrease-key per iteration => O(E T dec ) 20

Running Time using Binary Heaps and Fibonacci Heaps O(V(T ins + T ex ) + E T dec ) If priority queue is implemented with a binary heap, then T ins = T ex = T dec = O(log V) total time is O(E log V) There are fancier implementations of the priority queue, such as Fibonacci heap: T ins = O(1), T ex = O(log V), T dec = O(1) (amortized) total time is O(V log V + E) 21

Using Simpler Heap O(V(T ins + T ex ) + E T dec ) If graph is dense, so that E = Θ(V 2 ), then it doesn't help to make T ins and T ex to be at most O(V). Instead, focus on making T dec be small, say constant. Implement priority queue with an unsorted array: T ins = O(1), T ex = O(V), T dec = O(1) 22

The Bellman-Ford Algorithm 23

What About Negative Edge Dijkstra's SSSP algorithm requires all edge weights to be nonnegative. This is too restrictive, since it suffices to outlaw negative weight cycles. Bellman-Ford SSSP algorithm can handle negative edge weights. [It even can detect negative weight cycles if they exist.] 24

Bellman-Ford: The Basic Idea Consider each edge (u,v) and see if u offers v a cheaper path from s compare d[v] to d[u] + w(u,v) Repeat this process V - 1 times to ensure that accurate information propgates from s, no matter what order the edges are considered in 25

Bellman-Ford SSSP Algorithm input: directed or undirected graph G = (V,E,w) //initialization initialize d[v] to infinity and parent[v] to nil for all v in V other than the source initialize d[s] to 0 and parent[s] to s // main body for i := 1 to V - 1 do for each (u,v) in E do if d[u] + w(u,v) < d[v] then d[v] := d[u] + w(u,v) parent[v] := u // consider in arbitrary order 26

Bellman-Ford SSSP Algorithm // check for negative weight cycles for each (u,v) in E do if d[u] + w(u,v) < d[v] then output "negative weight cycle exists" 27

Running Time of Bellman-Ford O(V) iterations of outer for loop O(E) iterations of inner for loop O(VE) time total 28

Correctness of Bellman-Ford Assume no negative-weight cycles. Lemma: d[v] is never an underestimate of the actual shortest path distance from s to v. Lemma: If there is a shortest s-to-v path containing at most i edges, then after iteration i of the outer for loop, d[v] is at most the actual shortest path distance from s to v. Theorem: Bellman-Ford is correct. This follows from the two lemmas and the fact 29

Bellman-Ford Example s 3 4 4 c a 2 1 b process edges in order (c,b) (a,b) (c,a) (s,a) (s,c) Exercise! 30

Correctness of Bellman-Ford Suppose there is a negative weight cycle. Then the distance will decrease even after iteration V - 1 shortest path distance is negative infinity This is what the last part of the code checks for. 31

The Boost Graph Library The BGL contains generic implementations of all the graph algorithms that we have discussed: Breadth-First-Search Depth-First-Search Kruskal s MST algorithm Prim s MST algorithm Strongly Connected Components Dijkstra s SSSP algorithm Bellman-Ford SSSP algorithm I recommend that you gain experience with this useful library. Recommended reading: The Boost Graph Library by J.G. Siek, L.-Q. Lee, and A. Lumsdaine, Addison-Wesley, 2002. 32