Introduction to Algorithms

Similar documents
Introduction to Algorithms

Introduction to Algorithms

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

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

Single Source Shortest Paths

Introduction to Algorithms

CMPS 6610 Fall 2018 Shortest Paths Carola Wenk

Single Source Shortest Paths

CS 4407 Algorithms Lecture: Shortest Path Algorithms

Design and Analysis of Algorithms

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

Introduction to Algorithms

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

Shortest Path Algorithms

Data Structures and and Algorithm Xiaoqing Zheng

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

Dijkstra s Single Source Shortest Path Algorithm. Andreas Klappenecker

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

Algorithm Design and Analysis

Algorithm Design and Analysis

BFS Dijkstra. Oct abhi shelat

Lecture Notes for Chapter 25: All-Pairs Shortest Paths

COMP251: Bipartite graphs

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

Breadth First Search, Dijkstra s Algorithm for Shortest Paths

Discrete Optimization 2010 Lecture 2 Matroids & Shortest Paths

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

Discrete Optimization 2010 Lecture 3 Maximum Flows

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

Myriad of applications

COMP251: Bipartite graphs

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

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

Algorithms Booklet. 1 Graph Searching. 1.1 Breadth First Search

Algorithms: Lecture 12. Chalmers University of Technology

Query Processing in Spatial Network Databases

Design and Analysis of Algorithms

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

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

Breadth-First Search of Graphs

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

CSCE 750 Final Exam Answer Key Wednesday December 7, 2005

Lecture Notes Discrete Optimization

Partha Sarathi Mandal

L feb abhi shelat

ICS 252 Introduction to Computer Design

Matching Residents to Hospitals

Discrete Mathematics, Spring 2004 Homework 9 Sample Solutions

CS781 Lecture 3 January 27, 2011

1. The graph of a function f is given above. Answer the question: a. Find the value(s) of x where f is not differentiable. Ans: x = 4, x = 3, x = 2,

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

Worksheets for GCSE Mathematics. Quadratics. mr-mathematics.com Maths Resources for Teachers. Algebra

Ngày 20 tháng 7 năm Discrete Optimization Graphs

Dynamic Programming: Shortest Paths and DFA to Reg Exps

16.1 Min-Cut as an LP

Dynamic Programming: Shortest Paths and DFA to Reg Exps

CS 580: Algorithm Design and Analysis

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

Solutions to Exercises

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

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

Another way of saying this is that amortized analysis guarantees the average case performance of each operation in the worst case.

Analysis of Algorithms I: All-Pairs Shortest Paths

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

Examination paper for TDT4120 Algorithms and Data Structures

The Matching Polytope: General graphs

All-Pairs Shortest Paths

Part IA Algorithms Notes

Algorithms and Data Structures (COMP 251) Midterm Solutions

arxiv: v1 [cs.cg] 29 Jun 2012

INVERSE SPANNING TREE PROBLEMS: FORMULATIONS AND ALGORITHMS

arxiv: v1 [cs.ds] 20 Nov 2016

Discrete Mathematics

Question Paper Code :

Dynamic Programming. Data Structures and Algorithms Andrei Bulatov

25. Minimum Spanning Trees

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

25. Minimum Spanning Trees

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

Algorithm Design and Analysis

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

CMPSCI 611: Advanced Algorithms

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

Connectivity of addable graph classes

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

from notes written mostly by Dr. Matt Stallmann: All Rights Reserved

Greedy Alg: Huffman abhi shelat

Impossibility of Distributed Consensus with One Faulty Process

MA015: Graph Algorithms

Chapter 6. Properties of Regular Languages

Introduction to Algorithms

6.889 Lecture 4: Single-Source Shortest Paths

Partial cubes: structures, characterizations, and constructions

University of Toronto Department of Electrical and Computer Engineering. Final Examination. ECE 345 Algorithms and Data Structures Fall 2016

Uncertain Compression & Graph Coloring. Madhu Sudan Harvard

arxiv: v1 [math.co] 12 Jul 2017

CMPUT 675: Approximation Algorithms Fall 2014

CMU Lecture 4: Informed Search. Teacher: Gianni A. Di Caro

Calculus II - Fall 2013

Transcription:

Introduction to Algorithms 6.046J/18.401J LECTURE 14 Shortest Paths I Properties of shortest paths Dijkstra s algorithm Correctness Analysis Breadth-first search Prof. Charles E. Leiserson

Paths in graphs Consider a digraph G = (V, E) with edge-weight function w : E R. The weight of path p = v 1 v 2 L v k is defined to be k 1 i= 1 w ( p) = w( v i, v i + 1). Introduction to Algorithms November 1, 2004 L14.2

Paths in graphs Consider a digraph G = (V, E) with edge-weight function w : E R. The weight of path p = v 1 v 2 L v k is defined to be Example: k 1 i= 1 w ( p) = w( v i, v i + 1). v 1 v 2 v 3 v 5 v 2 v 4 4 2 5 1 w(p) = 2 Introduction to Algorithms November 1, 2004 L14.3

Shortest paths A shortest path from u to v is a path of minimum weight from u to v. The shortestpath weight from u to v is defined as δ(u, v) = min{w(p) : p is a path from u to v}. Note: δ(u, v) = if no path from u to v exists. Introduction to Algorithms November 1, 2004 L14.4

Optimal substructure Theorem. A subpath of a shortest path is a shortest path. Introduction to Algorithms November 1, 2004 L14.5

Optimal substructure Theorem. A subpath of a shortest path is a shortest path. Proof. Cut and paste: Introduction to Algorithms November 1, 2004 L14.6

Optimal substructure Theorem. A subpath of a shortest path is a shortest path. Proof. Cut and paste: Introduction to Algorithms November 1, 2004 L14.7

Triangle inequality Theorem. For all u, v, x V, we have δ(u, v) δ(u, x) + δ(x, v). Introduction to Algorithms November 1, 2004 L14.8

Triangle inequality Theorem. For all u, v, x V, we have δ(u, v) δ(u, x) + δ(x, v). Proof. uu δ(u, v) vv δ(u, x) δ(x, v) xx Introduction to Algorithms November 1, 2004 L14.9

Well-definedness of shortest paths If a graph G contains a negative-weight cycle, then some shortest paths may not exist. Introduction to Algorithms November 1, 2004 L14.10

Well-definedness of shortest paths If a graph G contains a negative-weight cycle, then some shortest paths may not exist. Example: < 0 uu vv Introduction to Algorithms November 1, 2004 L14.11

Single-source shortest paths Problem. From a given source vertex s V, find the shortest-path weights δ(s, v) for all v V. If all edge weights w(u, v) are nonnegative, all shortest-path weights must exist. IDEA: Greedy. 1. Maintain a set S of vertices whose shortestpath distances from s are known. 2. At each step add to S the vertex v V S whose distance estimate from s is minimal. 3. Update the distance estimates of vertices adjacent to v. Introduction to Algorithms November 1, 2004 L14.12

Dijkstra s algorithm d[s] 0 for each v V {s} do d[v] S Q V Q is a priority queue maintaining V S Introduction to Algorithms November 1, 2004 L14.13

Dijkstra s algorithm d[s] 0 for each v V {s} do d[v] S Q V Q is a priority queue maintaining V S while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Introduction to Algorithms November 1, 2004 L14.14

Dijkstra s algorithm d[s] 0 for each v V {s} do d[v] S Q V while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Q is a priority queue maintaining V S relaxation step Implicit DECREASE-KEY Introduction to Algorithms November 1, 2004 L14.15

Example of Dijkstra s algorithm Graph with nonnegative edge weights: AA 10 BB 2 D 8 1 4 7 9 3 CC 2 EE Introduction to Algorithms November 1, 2004 L14.16

Example of Dijkstra s algorithm Initialize: 10 BB 2 D 0 AA 8 1 4 7 9 Q: A B C D E 0 3 CC 2 EE S: {} Introduction to Algorithms November 1, 2004 L14.17

Example of Dijkstra s algorithm A EXTRACT-MIN(Q): 0 AA Q: A B C D E 0 10 3 BB CC 2 D 8 1 4 7 9 2 EE S: { A } Introduction to Algorithms November 1, 2004 L14.18

Example of Dijkstra s algorithm Relax all edges leaving A: Q: 0 A B C D E 0 10 3 AA 10 3 10 BB CC S: { A } 2 D 8 1 4 7 9 2 EE 3 Introduction to Algorithms November 1, 2004 L14.19

Example of Dijkstra s algorithm C EXTRACT-MIN(Q): Q: 0 A B C D E 0 10 3 AA 10 3 10 BB CC 2 D 8 1 4 7 9 S: { A, C } 2 EE 3 Introduction to Algorithms November 1, 2004 L14.20

Example of Dijkstra s algorithm Relax all edges leaving C: Q: 0 A B C D E 0 10 3 7 11 5 AA 10 3 7 BB CC 2 11 D 8 1 4 7 9 S: { A, C } 2 EE 3 5 Introduction to Algorithms November 1, 2004 L14.21

Example of Dijkstra s algorithm E EXTRACT-MIN(Q): Q: 0 A B C D E 0 10 3 7 11 5 AA 10 3 7 BB CC 2 11 D 8 1 4 7 9 2 S: { A, C, E } EE 3 5 Introduction to Algorithms November 1, 2004 L14.22

Example of Dijkstra s algorithm Relax all edges leaving E: Q: 0 A B C D E 0 10 3 7 11 5 7 11 AA 10 3 7 BB CC 2 11 D 8 1 4 7 9 2 S: { A, C, E } EE 3 5 Introduction to Algorithms November 1, 2004 L14.23

Example of Dijkstra s algorithm B EXTRACT-MIN(Q): Q: 0 A B C D E 0 10 3 7 11 5 7 11 AA 10 3 7 BB CC 2 11 D 8 1 4 7 9 2 S: { A, C, E, B } EE 3 5 Introduction to Algorithms November 1, 2004 L14.24

Example of Dijkstra s algorithm Relax all edges leaving B: Q: 0 A B C D E 0 10 3 7 11 5 7 11 9 AA 10 3 7 BB CC 2 9 D 8 1 4 7 9 2 S: { A, C, E, B } EE 3 5 Introduction to Algorithms November 1, 2004 L14.25

Example of Dijkstra s algorithm D EXTRACT-MIN(Q): Q: 0 A B C D E 0 10 3 7 11 5 7 11 9 AA 10 3 7 BB CC 2 9 D 8 1 4 7 9 2 EE 3 5 S: { A, C, E, B, D } Introduction to Algorithms November 1, 2004 L14.26

Correctness Part I Lemma. Initializing d[s] 0 and d[v] for all v V {s} establishes d[v] δ(s, v) for all v V, and this invariant is maintained over any sequence of relaxation steps. Introduction to Algorithms November 1, 2004 L14.27

Correctness Part I Lemma. Initializing d[s] 0 and d[v] for all v V {s} establishes d[v] δ(s, v) for all v V, and this invariant is maintained over any sequence of relaxation steps. Proof. Suppose not. Let v be the first vertex for which d[v] < δ(s, v), and let u be the vertex that caused d[v] to change: d[v] = d[u] + w(u, v). Then, d[v] < δ(s, v) supposition δ(s, u) + δ(u, v) triangle inequality δ(s,u) + w(u, v) sh. path specific path d[u] + w(u, v) v is first violation Contradiction. Introduction to Algorithms November 1, 2004 L14.28

Correctness Part II Lemma. Let u be v s predecessor on a shortest path from s to v. Then, if d[u] = δ(s, u) and edge (u, v) is relaxed, we have d[v] = δ(s, v) after the relaxation. Introduction to Algorithms November 1, 2004 L14.29

Correctness Part II Lemma. Let u be v s predecessor on a shortest path from s to v. Then, if d[u] = δ(s, u) and edge (u, v) is relaxed, we have d[v] = δ(s, v) after the relaxation. Proof. Observe that δ(s, v) = δ(s, u)+ w(u, v). Suppose that d[v] > δ(s, v) before the relaxation. (Otherwise, we re done.) Then, the test d[v] > d[u] + w(u, v) succeeds, because d[v] > δ(s, v) = δ(s, u)+ w(u, v) = d[u] + w(u, v), and the algorithm sets d[v] = d[u] + w(u, v) = δ(s, v). Introduction to Algorithms November 1, 2004 L14.30

Correctness Part III Theorem. Dijkstra s algorithm terminates with d[v] = δ(s, v) for all v V. Introduction to Algorithms November 1, 2004 L14.31

Correctness Part III Theorem. Dijkstra s algorithm terminates with d[v] = δ(s, v) for all v V. Proof. It suffices to show that d[v] = δ(s, v) for every v V when v is added to S. Suppose u is the first vertex added to S for which d[u] >δ(s, u). Let y be the first vertex in V S along a shortest path from s to u, and let x be its predecessor: S, just before adding u. ss xx yy uu Introduction to Algorithms November 1, 2004 L14.32

Correctness Part III (continued) ss S xx yy uu Since u is the first vertex violating the claimed invariant, we have d[x] = δ(s, x). When x was added to S, the edge (x, y) was relaxed, which implies that d[y] =δ(s, y) δ(s, u) < d[u]. But, d[u] d[y] by our choice of u. Contradiction. Introduction to Algorithms November 1, 2004 L14.33

Analysis of Dijkstra while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Introduction to Algorithms November 1, 2004 L14.34

Analysis of Dijkstra V times while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Introduction to Algorithms November 1, 2004 L14.35

Analysis of Dijkstra V times degree(u) times while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Introduction to Algorithms November 1, 2004 L14.36

Analysis of Dijkstra V times degree(u) times while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Handshaking Lemma Θ(E) implicit DECREASE-KEY s. Introduction to Algorithms November 1, 2004 L14.37

Analysis of Dijkstra V times degree(u) times while Q do u EXTRACT-MIN(Q) S S {u} for each v Adj[u] do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v) Handshaking Lemma Θ(E) implicit DECREASE-KEY s. Time = Θ(V T EXTRACT -MIN + E T DECREASE-KEY ) Note: Same formula as in the analysis of Prim s minimum spanning tree algorithm. Introduction to Algorithms November 1, 2004 L14.38

Analysis of Dijkstra (continued) Time = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q T EXTRACT -MIN T DECREASE-KEY Total Introduction to Algorithms November 1, 2004 L14.39

Analysis of Dijkstra (continued) Time = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q T EXTRACT -MIN T DECREASE-KEY Total array O(V) O(1) O(V 2 ) Introduction to Algorithms November 1, 2004 L14.40

Analysis of Dijkstra (continued) Time = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q T EXTRACT -MIN T DECREASE-KEY Total array O(V) O(1) O(V 2 ) binary heap O(lg V) O(lg V) O(E lg V) Introduction to Algorithms November 1, 2004 L14.41

Analysis of Dijkstra (continued) Time = Θ(V) T EXTRACT -MIN + Θ(E) T DECREASE-KEY Q T EXTRACT -MIN T DECREASE-KEY Total array O(V) O(1) O(V 2 ) binary heap Fibonacci heap O(lg V) O(lg V) O(E lg V) O(lg V) amortized O(1) amortized O(E + V lg V) worst case Introduction to Algorithms November 1, 2004 L14.42

Unweighted graphs Suppose that w(u, v) = 1 for all (u, v) E. Can Dijkstra s algorithm be improved? Introduction to Algorithms November 1, 2004 L14.43

Unweighted graphs Suppose that w(u, v) = 1 for all (u, v) E. Can Dijkstra s algorithm be improved? Use a simple FIFO queue instead of a priority queue. Introduction to Algorithms November 1, 2004 L14.44

Unweighted graphs Suppose that w(u, v) = 1 for all (u, v) E. Can Dijkstra s algorithm be improved? Use a simple FIFO queue instead of a priority queue. Breadth-first search while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) Introduction to Algorithms November 1, 2004 L14.45

Unweighted graphs Suppose that w(u, v) = 1 for all (u, v) E. Can Dijkstra s algorithm be improved? Use a simple FIFO queue instead of a priority queue. Breadth-first search while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) Analysis: Time = O(V + E). Introduction to Algorithms November 1, 2004 L14.46

Example of breadth-first search aa bb cc dd ee f gg hh ii Q: Introduction to Algorithms November 1, 2004 L14.47

Example of breadth-first search 0 aa bb cc dd ee f gg hh ii 0 Q: a Introduction to Algorithms November 1, 2004 L14.48

Example of breadth-first search 0 1 aa bb cc 1 dd ee 1 1 Q: a b d f gg hh ii Introduction to Algorithms November 1, 2004 L14.49

Example of breadth-first search 0 1 aa bb cc 1 dd ee 2 2 1 2 2 Q: a b d c e f gg hh ii Introduction to Algorithms November 1, 2004 L14.50

Example of breadth-first search 0 1 aa bb cc 1 dd ee 2 2 2 2 Q: a b dc e f gg hh ii Introduction to Algorithms November 1, 2004 L14.51

Example of breadth-first search 0 1 aa bb cc 1 dd ee 2 2 2 Q: a b dce f gg hh ii Introduction to Algorithms November 1, 2004 L14.52

Example of breadth-first search 0 1 aa bb cc 1 2 2 dd ee 3 3 3 Q: a b d c e g i f gg hh ii 3 Introduction to Algorithms November 1, 2004 L14.53

Example of breadth-first search 0 1 aa bb cc 1 2 2 dd ee 3 4 f Q: a b d c e g i f gg 3 4 hh ii 3 Introduction to Algorithms November 1, 2004 L14.54

0 1 Example of breadth-first search aa bb cc 1 2 2 dd ee f Q: a b d c e g i f h 3 4 4 gg 4 4 hh ii 3 Introduction to Algorithms November 1, 2004 L14.55

0 1 Example of breadth-first search aa bb cc 1 2 2 dd ee f Q: a b d c e g i f h 3 4 4 gg 4 hh ii 3 Introduction to Algorithms November 1, 2004 L14.56

Example of breadth-first search 0 1 aa bb cc 1 dd ee 2 2 3 4 4 f gg hh ii 3 Q: a b d c e g i f h Introduction to Algorithms November 1, 2004 L14.57

Example of breadth-first search 0 1 aa bb cc 1 dd ee 2 2 3 4 4 f gg hh ii 3 Q: a b d c e g i f h Introduction to Algorithms November 1, 2004 L14.58

Correctness of BFS while Q do u DEQUEUE(Q) for each v Adj[u] do if d[v] = then d[v] d[u] + 1 ENQUEUE(Q, v) Key idea: The FIFO Q in breadth-first search mimics the priority queue Q in Dijkstra. Invariant: v comes after u in Q implies that d[v] = d[u] or d[v] = d[u] + 1. Introduction to Algorithms November 1, 2004 L14.59