CS 4407 Algorithms Lecture: Shortest Path Algorithms

Similar documents
Design and Analysis of Algorithms

Analysis of Algorithms. Outline. Single Source Shortest Path. Andres Mendez-Vazquez. November 9, Notes. Notes

Introduction to Algorithms

Introduction to Algorithms

Single Source Shortest Paths

Single Source Shortest Paths

CMPS 6610 Fall 2018 Shortest Paths Carola Wenk

Introduction to Algorithms

CMPS 2200 Fall Carola Wenk Slides courtesy of Charles Leiserson with small changes by Carola Wenk. 10/8/12 CMPS 2200 Intro.

Introduction to Algorithms

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

CS 253: Algorithms. Chapter 24. Shortest Paths. Credit: Dr. George Bebis

Discrete Wiskunde II. Lecture 5: Shortest Paths & Spanning Trees

Slides credited from Hsueh-I Lu & Hsu-Chun Hsiao

Lecture 11. Single-Source Shortest Paths All-Pairs Shortest Paths

Shortest Path Algorithms

Introduction to Algorithms

Shortest Paths. CS 320, Fall Dr. Geri Georg, Instructor 320 ShortestPaths 3

Myriad of applications

Dynamic Programming: Shortest Paths and DFA to Reg Exps

Dynamic Programming: Shortest Paths and DFA to Reg Exps

Dijkstra s Single Source Shortest Path Algorithm. Andreas Klappenecker

BFS Dijkstra. Oct abhi shelat

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Data Structures and and Algorithm Xiaoqing Zheng

Algorithm Design and Analysis

A faster algorithm for the single source shortest path problem with few distinct positive lengths

Lecture Notes for Chapter 25: All-Pairs Shortest Paths

Breadth First Search, Dijkstra s Algorithm for Shortest Paths

Discrete Optimization 2010 Lecture 2 Matroids & Shortest Paths

Discrete Optimization 2010 Lecture 3 Maximum Flows

Query Processing in Spatial Network Databases

Chapter 4. Greedy Algorithms. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Undirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11

CS 6301 PROGRAMMING AND DATA STRUCTURE II Dept of CSE/IT UNIT V GRAPHS

COMP251: Bipartite graphs

CS 161: Design and Analysis of Algorithms

Algorithm Design and Analysis

Algorithms Booklet. 1 Graph Searching. 1.1 Breadth First Search

CSE 431/531: Analysis of Algorithms. Dynamic Programming. Lecturer: Shi Li. Department of Computer Science and Engineering University at Buffalo

Algorithms: Lecture 12. Chalmers University of Technology

Partha Sarathi Mandal

Contents Lecture 4. Greedy graph algorithms Dijkstra s algorithm Prim s algorithm Kruskal s algorithm Union-find data structure with path compression

Breadth-First Search of Graphs

8 Priority Queues. 8 Priority Queues. Prim s Minimum Spanning Tree Algorithm. Dijkstra s Shortest Path Algorithm

Analysis of Algorithms I: All-Pairs Shortest Paths

CS675: Convex and Combinatorial Optimization Fall 2014 Combinatorial Problems as Linear Programs. Instructor: Shaddin Dughmi

Design and Analysis of Algorithms

CSE101: Design and Analysis of Algorithms. Ragesh Jaiswal, CSE, UCSD

Scribes: Po-Hsuan Wei, William Kuzmaul Editor: Kevin Wu Date: October 18, 2016

CS 580: Algorithm Design and Analysis

CMPSCI 611: Advanced Algorithms

Matching Residents to Hospitals

Trees. A tree is a graph which is. (a) Connected and. (b) has no cycles (acyclic).

CS781 Lecture 3 January 27, 2011

CS 410/584, Algorithm Design & Analysis, Lecture Notes 4

Part IA Algorithms Notes

ne a priority queue for the nodes of G; ile (! PQ.is empty( )) select u PQ with d(u) minimal and remove it; I Informatik 1 Kurt Mehlhorn

CS675: Convex and Combinatorial Optimization Fall 2016 Combinatorial Problems as Linear and Convex Programs. Instructor: Shaddin Dughmi

Maximum Flow. Reading: CLRS Chapter 26. CSE 6331 Algorithms Steve Lai

IS 709/809: Computational Methods in IS Research Fall Exam Review

6. DYNAMIC PROGRAMMING II. sequence alignment Hirschberg's algorithm Bellman-Ford distance vector protocols negative cycles in a digraph

Assignment 5: Solutions

COMP251: Bipartite graphs

Routing Algorithms. CS60002: Distributed Systems. Pallab Dasgupta Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur

Branch-and-Bound for the Travelling Salesman Problem

Chapter 5 Data Structures Algorithm Theory WS 2017/18 Fabian Kuhn

CS367 Lecture 3 (old lectures 5-6) APSP variants: Node Weights, Earliest Arrivals, Bottlenecks Scribe: Vaggos Chatziafratis Date: October 09, 2015

Observation 4.1 G has a proper separation of order 0 if and only if G is disconnected.

Lecture 7: Shortest Paths in Graphs with Negative Arc Lengths. Reading: AM&O Chapter 5

Fundamental Algorithms 11

Impossibility of Distributed Consensus with One Faulty Process

Algorithms and Theory of Computation. Lecture 11: Network Flow

Running Time. Assumption. All capacities are integers between 1 and C.

CSE 591 Foundations of Algorithms Homework 4 Sample Solution Outlines. Problem 1

CSCE 750 Final Exam Answer Key Wednesday December 7, 2005

Examination paper for TDT4120 Algorithms and Data Structures

1 Review for Lecture 2 MaxFlow

Fibonacci Heaps These lecture slides are adapted from CLRS, Chapter 20.

6. DYNAMIC PROGRAMMING II

6.889 Lecture 4: Single-Source Shortest Paths

General Methods for Algorithm Design

directed weighted graphs as flow networks the Ford-Fulkerson algorithm termination and running time

SI545 VLSI CAD: Logic to Layout. Algorithms

The Matching Polytope: General graphs

Shortest paths with negative lengths

Problem One: Order Relations i. What three properties does a binary relation have to have to be a partial order?

ICS 252 Introduction to Computer Design

Algorithms and Data Structures (COMP 251) Midterm Solutions

Observation 4.1 G has a proper separation of order 0 if and only if G is disconnected.

CSE 417. Chapter 4: Greedy Algorithms. Many Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

Algorithm Design and Analysis

Preliminaries. Graphs. E : set of edges (arcs) (Undirected) Graph : (i, j) = (j, i) (edges) V = {1, 2, 3, 4, 5}, E = {(1, 3), (3, 2), (2, 4)}

cs/ee/ids 143 Communication Networks

CSE 202 Homework 4 Matthias Springer, A

Dynamic Programming. Data Structures and Algorithms Andrei Bulatov

CSC 373: Algorithm Design and Analysis Lecture 12

Priority queues implemented via heaps

Small distortion and volume preserving embedding for Planar and Euclidian metrics Satish Rao

Greedy Alg: Huffman abhi shelat

Transcription:

CS 440 Algorithms Lecture: Shortest Path Algorithms Prof. Gregory Provan Department of Computer Science University College Cork 1

Outline Shortest Path Problem General Lemmas and Theorems. Algorithms Bellman-Ford algorithm. DAG algorithm. Dijkstra s algorithm. Material from Chapter 24, CLRS

Shortest Path Problem Find shortest path in a weighted graph from source to all other vertices z 0 6 u 8 x 5 2 9 2 3 4 v y

Single-Source Shortest Paths Given: A single source vertex in a weighted, directed graph. Want to compute a shortest path for each possible destination. Similar to BFS. We will assume either no negative-weight edges, or no reachable negative-weight cycles. Algorithm will compute a shortest-path tree. Similar to BFS tree. CS 440, Algorithms

Why not BFS? BFS assumes that shortest path is the path with fewest edges This is violated by weighted graphs New algorithmic structure For every new node reached, examine potential new paths in G relax operation CS 440, Algorithms

Bellman-Ford Algorithm Can have negative-weight edges. Will detect reachable negative-weight cycles. Initialize(G, s); for i := 1 to V[G] 1 do for each (u, v) in E[G] do Relax(u, v, w) od od; for each (u, v) in E[G] do if d[v] > d[u] + w(u, v) then return false fi od; return true Time Complexity is O(VE).

Example: Bellman-Ford Algorithm z 0 6 u 8 5 2 2 3 4 v x 9 y

Example z 0 6 u 6 8 5 2 2 3 4 v x 9 y

Example z 0 6 u 6 8 5 2 2 3 4 v 4 x 9 2 y

Example z 0 6 u 2 8 5 2 2 3 4 v 4 x 9 2 y

Example z 0 6 u 2 8 5 2 2 3 4 v 4 x 9-2 y

Relaxation Algorithms keep track of d[v], [v]. Initialized as follows: Initialize(G, s) for each v V[G] do d[v] := ; [v] := NIL od; d[s] := 0 These values are changed when an edge (u, v) is relaxed: Relax(u, v, w) if d[v] > d[u] + w(u, v) then d[v] := d[u] + w(u, v); [v] := u fi CS 440, Algorithms

General Results (Relaxation) Lemma 24.1: Let p = v 1, v 2,, v k be a SP from v 1 to v k. Then, p ij = v i, v i+1,, v j is a SP from v i to v j, where 1 i j k. So, we have the optimal-substructure property. Bellman-Ford s algorithm uses dynamic programming. Dijkstra s algorithm uses the greedy approach. Let δ(u, v) = weight of SP from u to v. Corollary: Let p = SP from s to v, where p = s δ(s, v) = δ(s, u) + w(u, v). p' u v. Then, Lemma 24.10: Let s V. For all edges (u,v) E, we have δ(s, v) δ(s, u) + w(u,v).

Shortest Paths in DAGs Topologically sort vertices in G; Initialize(G, s); for each u in V[G] (in order) do for each v in Adj[u] do Relax(u, v, w) od od

Example 6 1 r s t u v w 5 2 1 2 0 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 2 6 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 2 6 6 4 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 2 6 5 4 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 2 6 5 3 3 4 2

Example 6 1 r s t u v w 5 2 1 2 0 2 6 5 3 3 4 2

Dijkstra s Algorithm for Single Source Shortest Path Classic algorithm for solving shortest path in weighted graphs (with only positive edge weights) Similar to breadth-first search, but uses a priority queue instead of a FIFO queue: Always select (expand) the vertex that has a lowest-cost path to the start vertex a kind of greedy algorithm Correctly handles the case where the lowest-cost (shortest) path to a vertex is not the one with fewest edges

Dijkstra s Algorithm Assumes no negative-weight edges. Maintains a set S of vertices whose SP from s has been determined. Repeatedly selects u in V S with minimum SP estimate (greedy choice). Store V S in priority queue Q. Initialize(G, s); S := ; Q := V[G]; while Q do u := Extract-Min(Q); S := S {u}; for each v Adj[u] do Relax(u, v, w) od od

Example u 1 v s 0 10 2 3 9 4 6 5 x 2 y

Example u 10 1 v s 0 10 2 3 9 4 6 5 5 x 2 y

Example u 8 1 v 14 s 0 10 2 3 9 4 6 5 5 x 2 y

Example u 8 1 v 13 s 0 10 2 3 9 4 6 5 5 x 2 y

Example u 8 1 v 9 s 0 10 2 3 9 4 6 5 5 x 2 y

Example u 8 1 v 9 s 0 10 2 3 9 4 6 5 5 x 2 y

Complexity Running time is O(V 2 ) using linear array for priority queue. O((V + E) lg V) using binary heap. O(V lg V + E) using Fibonacci heap. (See CLRS.)

Lecture Summary Examined shortest path algorithms Theory General Lemmas and Theorems. Algorithms studied Bellman-Ford algorithm. DAG algorithm. Dijkstra s algorithm.

Proofs for Bellman-Ford Algorithm CS 440, Algorithms

Properties of Relaxation Consider any algorithm in which d[v], and [v] are first initialized by calling Initialize(G, s) [s is the source], and are only changed by calling Relax. We have: Lemma 24.11: ( v:: d[v] (s, v)) is an invariant. Implies d[v] doesn t change once d[v] = (s, v). Proof: Initialize(G, s) establishes invariant. If call to Relax(u, v, w) changes d[v], then it establishes: d[v] = d[u] + w(u, v) (s, u) + w(u, v), invariant holds before call. (s, v), by Lemma 24.10. Corollary 24.12: If there is no path from s to v, then d[v] = δ(s, v) = is an invariant. CS 440, Algorithms

More Properties Lemma 24.13: Immediately after relaxing edge (u, v) by calling Relax(u, v, w), we have d[v] d[u] + w(u, v). Lemma 24.14: Let p = SP from s to v, where p = s u v. If d[u] = δ(s, u) holds at any time prior to calling Relax(u, v, w), then d[v] = δ(s, v) holds at all times after the call. Proof: CS 440, Algorithms p' After the call we have: d[v] d[u] + w(u, v), by Lemma 24.13. = (s, u) + w(u, v), d[u] = (s, u) holds. = (s, v), by corollary to Lemma 24.1. By Lemma 24.11, d[v] δ(s, v), so d[v] = δ(s, v).

Predecessor Subgraph Lemma 24.16: Assume given graph G has no negative-weight cycles reachable from s. Let G = predecessor subgraph. G is always a tree with root s (i.e., this property is an invariant). Proof: Two proof obligations: (1) G is acyclic. (2) There exists a unique path from source s to each vertex in V. Proof of (1): Suppose there exists a cycle c = v 0, v 1,, v k, where v 0 = v k. We have [v i ] = v i-1 for i = 1, 2,, k. Assume relaxation of (v k-1, v k ) created the cycle. We show cycle has a negative weight. Note: Cycle must be reachable from s. CS 440, Algorithms

Proof of (1) (Continued) Before call to Relax(v k-1, v k, w): [v i ] = v i-1 for i = 1,, k 1. Implies d[v i ] was last updated by d[v i ] := d[v i-1 ] + w(v i-1, v i ) for i = 1,, k 1. Implies d[v i ] d[v i-1 ] + w(v i-1, v i ) for i = 1,, k 1. Because [v k ] is changed by call, d[v k ] > d[v k-1 ] + w(v k-1, v k ). Thus, k i1 d[v Because i ] k i1 k i1 k i1 (d[v d[v d[v i i1 i1 ] ] ] k i1 w(v k i1 d[v i1 w(v i1 ],, v i i1 )), v k i1 i ) w(v i1, v ) CS 440, Algorithms i 0, i.e., neg. - weight cycle!

Proof of (2) Proof of (2): ( v: v V :: ( path from s to v)) is an invariant. So, for any v in V, at least 1 path from s to v. Show 1 path. Assume 2 paths. x s u z v y impossible!

Lemma 24.1 Lemma 24.1: Same conditions as before. Call Initialize & repeatedly call Relax until d[v] = δ(s, v) for all v in V. Then, G is a shortest-path tree rooted at s. Proof: Key Proof Obligation: For all v in V, the unique simple path p from s to v in G (path exists by Lemma 24.16) is a shortest path from s to v in G. Let p = v 0, v 1,, v k, where v 0 = s and v k = v. We have d[v i ] = δ(s, v i ) d[v i ] d[v i-1 ] + w(v i-1, v i ) Implies w(v i-1, v i ) δ(s, v i ) δ(s, v i-1 ). CS 440, Algorithms

Proof (Continued) w(p) k i1 k i1 w(v δ(s, v δ(s, v (δ(s, v k k i1, v i ) ) δ(s, v ) δ(s, v ) So, p is a shortest path. i 0 ) i-1 ))

Another Look Note: This is essentially dynamic programming. Let d(i, j) = cost of the shortest path from s to i that is at most j hops. d(i, j) = 0 if i = s j = 0 if i s j = 0 min({d(k, j 1) + w(k, i): i Adj(k)} {d(i, j 1)}) if j > 0 j i z u v x y 1 2 3 4 5 0 0 1 0 6 2 0 6 4 2 3 0 2 4 2 4 0 2 4 2 CS 440, Algorithms

Lemma 24.2 Lemma 24.2: Assuming no negative-weight cycles reachable from s, d[v] = (s, v) holds upon termination for all vertices v reachable from s. Proof: Consider a SP p, where p = v 0, v 1,, v k, where v 0 = s and v k = v. Assume k V 1, otherwise p has a cycle. Claim: d[v i ] = (s, v i ) holds after the i th pass over edges. Proof follows by induction on i. By Lemma 24.11, once d[v i ] = (s, v i ) holds, it continues to hold.

Correctness Claim: Algorithm returns the correct value. (Part of Theorem 24.4. Other parts of the theorem follow easily from earlier results.) Case 1: There is no reachable negative-weight cycle. Upon termination, we have for all (u, v): d[v] = (s, v), by Lemma 24.2 if v is reachable; d[v] = (s, v) = otherwise. (s, u) + w(u, v), by Lemma 24.10. = d[u] + w(u, v) So, algorithm returns true.

Case 2 Case 2: There exists a reachable negative-weight cycle c = v 0, v 1,, v k, where v 0 = v k. We have i = 1,, k w(v i-1, v i ) < 0. (*) Suppose algorithm returns true. Then, d[v i ] d[v i-1 ] + w(v i-1, v i ) for i = 1,, k. Thus, i = 1,, k d[v i ] i = 1,, k d[v i-1 ] + i = 1,, k w(v i-1, v i ) But, i = 1,, k d[v i ] = i = 1,, k d[v i-1 ]. Can show no d[v i ] is infinite. Hence, 0 i = 1,, k w(v i-1, v i ). Contradicts (*). Thus, algorithm returns false.

Proofs for Dijsktra s Algorithm CS 440, Algorithms

Correctness Theorem 24.6: Upon termination, d[u] = δ(s, u) for all u in V (assuming non-negative weights). Proof: By Lemma 24.11, once d[u] = δ(s, u) holds, it continues to hold. We prove: For each u in V, d[u] = (s, u) when u is inserted in S. Suppose not. Let u be the first vertex such that d[u] (s, u) when inserted in S. Note that d[s] = (s, s) = 0 when s is inserted, so u s. S just before u is inserted (in fact, s S).

Proof (Continued) Note that there exists a path from s to u, for otherwise d[u] = (s, u) = by Corollary 24.12. there exists a SP from s to u. SP looks like this: p 2 s p 1 u S x y

Proof (Continued) Claim: d[y] = (s, y) when u is inserted into S. We had d[x] = (s, x) when x was inserted into S. Edge (x, y) was relaxed at that time. By Lemma 24.14, this implies the claim. Now, we have: d[y] = (s, y), by Claim. (s, u), nonnegative edge weights. d[u], by Lemma 24.11. Because u was added to S before y, d[u] d[y]. Thus, d[y] = (s, y) = (s, u) = d[u]. Contradiction. CS 440, Algorithms