Algorithms and Data Structures Lecture XIII

Slides:



Advertisements
Similar presentations
Fibonacci Numbers F n = F n-1 + F n-2 F 0 =0, F 1 =1 – 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 … Straightforward recursive procedure is slow! Why? How slow? Lets.
Advertisements

Single Source Shortest Paths
October 31, Algorithms and Data Structures Lecture XIII Simonas Šaltenis Nykredit Center for Database Research Aalborg University
November 14, Algorithms and Data Structures Lecture XIII Simonas Šaltenis Aalborg University
Introduction To Algorithms CS 445 Discussion Session 6 Instructor: Dr Alon Efrat TA : Pooja Vaswani 03/21/2005.
Introduction to Algorithms 6.046J/18.401J/SMA5503
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 1 Chapter 24: Single-Source Shortest Paths Given: A single source vertex in a weighted, directed graph.
Shortest Path Problems
Shortest Paths Definitions Single Source Algorithms –Bellman Ford –DAG shortest path algorithm –Dijkstra All Pairs Algorithms –Using Single Source Algorithms.
1 8-ShortestPaths Shortest Paths in a Graph Fundamental Algorithms.
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 15 Shortest paths algorithms Properties of shortest paths Bellman-Ford algorithm.
Shortest Paths Definitions Single Source Algorithms
1 Graph Algorithms Single source shortest paths problem Dana Shapira.
Theory of Computing Lecture 7 MAS 714 Hartmut Klauck.
Dijkstra's algorithm.
David Luebke 1 9/10/2015 CS 332: Algorithms Single-Source Shortest Path.
David Luebke 1 9/10/2015 ITCS 6114 Single-Source Shortest Path.
David Luebke 1 9/13/2015 CS 332: Algorithms S-S Shortest Path: Dijkstra’s Algorithm Disjoint-Set Union Amortized Analysis.
Jim Anderson Comp 122, Fall 2003 Single-source SPs - 1 Chapter 24: Single-Source Shortest Paths Given: A single source vertex in a weighted, directed graph.
Chapter 24: Single-Source Shortest Paths Given: A single source vertex in a weighted, directed graph. Want to compute a shortest path for each possible.
Introduction to Algorithms Jiafen Liu Sept
CSE 2331 / 5331 Topic 12: Shortest Path Basics Dijkstra Algorithm Relaxation Bellman-Ford Alg.
1 Introduction to Algorithms L ECTURE 17 (Chap. 24) Shortest paths I 24.2 Single-source shortest paths 24.3 Dijkstra’s algorithm Edsger Wybe Dijkstra
Lecture 13 Algorithm Analysis
Greedy Algorithms Z. GuoUNC Chapel Hill CLRS CH. 16, 23, & 24.
David Luebke 1 3/1/2016 CS 332: Algorithms Dijkstra’s Algorithm Disjoint-Set Union.
Single Source Shortest Paths Chapter 24 CSc 4520/6520 Fall 2013 Slides adapted from George Bebis, University of Reno, Nevada.
Single-Source Shortest Paths (25/24) HW: 25-2 and 25-3 p. 546/24-2 and 24-3 p.615 Given a graph G=(V,E) and w: E   weight of is w(p) =  w(v[i],v[i+1])
November 22, Algorithms and Data Structures Lecture XII Simonas Šaltenis Nykredit Center for Database Research Aalborg University
David Luebke 1 11/21/2016 CS 332: Algorithms Minimum Spanning Tree Shortest Paths.
Data Structures and Algorithms
Introduction to Algorithms
CSC317 Shortest path algorithms
Data Structures and Algorithms
Algorithms and Data Structures Lecture XIII
Minimum Spanning Tree Shortest Paths
CS200: Algorithm Analysis
Minimum Spanning Trees
CS 332: Algorithms Dijkstra’s Algorithm Continued Disjoint-Set Union
Algorithms and Data Structures Lecture XII
Algorithms (2IL15) – Lecture 5 SINGLE-SOURCE SHORTEST PATHS
Announcement 2: A 2 hour midterm (open book) will be given on March (Tuesday) during the lecture time. 2018/12/4.
Page 620 Single-Source Shortest Paths
Data Structures and Algorithms (AT70. 02) Comp. Sc. and Inf. Mgmt
2018/12/27 chapter25.
Advanced Algorithms Analysis and Design
Lecture 11 Topics Application of BFS Shortest Path
Lecture 13 Algorithm Analysis
Lecture 13 Algorithm Analysis
Minimum Spanning Tree Algorithms
CSC 413/513: Intro to Algorithms
Lecture 13 Algorithm Analysis
Slide Courtesy: Uwash, UT
Lecture 13 Algorithm Analysis
Fundamental Data Structures and Algorithms
Shortest Path Problems
Lecture 14 Shortest Path (cont’d) Minimum Spanning Tree
Algorithms Searching in a Graph.
Chapter 24: Single-Source Shortest Paths
Advanced Algorithms Analysis and Design
Slide Courtesy: Uwash, UT
Graph Theory Dijkstra's Algorithm.
Chapter 24: Single-Source Shortest Paths
CS 3013: DS & Algorithms Shortest Paths.
Chapter 24: Single-Source Shortest-Path
Single-Source Shortest Path & Minimum Spanning Trees
Lecture 13 Shortest Path (cont’d) Minimum Spanning Tree
Presentation transcript:

Algorithms and Data Structures Lecture XIII Simonas Šaltenis Nykredit Center for Database Research Aalborg University simas@cs.auc.dk November 26, 2001

This Lecture Single-source shortest paths in weighted graphs Shortest-Path Problems Properties of Shortest Paths, Relaxation Dijkstra’s Algorithm Bellman-Ford Algorithm Shortest-Paths in DAG’s November 26, 2001

Shortest Path Generalize distance to weighted setting Digraph G = (V,E) with weight function W: E ® R (assigning real values to edges) Weight of path p = v1 ® v2 ® … ® vk is Shortest path = a path of the minimum weight Applications static/dynamic network routing robot motion planning map/route generation in traffic November 26, 2001

Shortest-Path Problems Single-source (single-destination). Find a shortest path from a given source to each of the vertices Single-pair. Given two vertices, find a shortest path between them. Solution to single-source problem solves this problem efficiently, too. All-pairs. Find shortest-paths for every pair of vertices. Dynamic programming algorithm. Unweighted shortest-paths – BFS. November 26, 2001

Optimal Substructure Theorem: subpaths of shortest paths are shortest paths Proof (cut and paste) if some subpath were not the shortest path, one could substitute the shorter subpath and create a shorter total path November 26, 2001

Triangle Inequality Definition Theorem Proof d(u,v) º weight of a shortest path from u to v Theorem d(u,v) £ d(u,x) + d(x,v) for any x Proof shortest path u Î v is no longer than any other path u Î v – in particular, the path concatenating the shortest path u Î x with the shortest path x Î v November 26, 2001

Negative Weights and Cycles? Negative edges are OK, as long as there are no negative weight cycles (otherwise paths with arbitrary small “lengths” would be possible) Shortest-paths can have no cycles (otherwise we could improve them by removing cycles) Any shortest-path in graph G can be no longer than n – 1 edges, where n is the number of vertices November 26, 2001

Relaxation For each vertex in the graph, we maintain d[v], the shortest path estimate, initialized to ¥ at start Relaxing an edge (u,v) means testing whether we can improve the shortest path to v found so far by going through u Relax (u,v,w) if d[v]>d[u]+w(u,v)then d[v] ¬ d[u]+w(u,v) p[v] ¬ u u v u v 2 2 5 9 5 6 Relax(u,v) Relax(u,v) 5 7 5 6 2 2 u v u v November 26, 2001

Dijkstra's Algorithm Non-negative edge weights Greedy, similar to Prim's algorithm for MST Like breadth-first search (if all weights = 1, one can simply use BFS) Use Q, priority queue keyed by d[v] (BFS used FIFO queue, here we use a PQ, which is re-ordered whenever d decreases) Basic idea maintain a set S of solved vertices at each step select "closest" vertex u, add it to S, and relax all edges from u November 26, 2001

Dijkstra’s Pseudo Code Graph G, weight function w, root s relaxing edges November 26, 2001

Dijkstra’s Example ¥ 10 ¥ 5 8 13 5 7 8 14 5 7 s u v y x 10 5 1 2 3 9 4 s u v y x 10 5 1 2 3 9 4 6 7 10 ¥ 5 s u v y x 1 2 3 9 4 6 7 8 13 5 7 s u v y x 10 1 2 3 9 4 6 u v 8 14 5 7 s y x 10 1 2 3 9 4 6 November 26, 2001

Dijkstra’s Example (2) Observe 8 9 5 7 relaxation step (lines 10-11) u v 8 9 5 7 u v y x 10 1 2 3 4 6 Observe relaxation step (lines 10-11) setting d[v] updates Q (needs Decrease-Key) similar to Prim's MST algorithm 1 8 9 10 9 2 3 4 6 7 5 5 7 2 x y November 26, 2001

Dijkstra’s Correctness We will prove that whenever u is added to S, d[u] = d(s,u), i.e., that d is minimum, and that equality is maintained thereafter Proof Note that "v, d[v] ³ d(s,v) Let u be the first vertex picked such that $ shorter path than d[u], i.e., that Þ d[u] > d(s,u) We will show that the assumption of such a vertex leads to a contradiction November 26, 2001

Dijkstra Correctness (2) Let y be the first vertex ÎV – S on the actual shortest path from s to u, then it must be that d[y] = d(s,y) because d[x] is set correctly for y's predecessor x ÎS on the shortest path (by choice of u as the first vertex for which d is set incorrectly) when the algorithm inserted x into S, it relaxed the edge (x,y), assigning d[y] the correct value November 26, 2001

Dijkstra Correctness (3) But d[u] > d[y] Þ algorithm would have chosen y (from the PQ) to process next, not u Þ Contradiction Thus d[u] = d(s,u) at time of insertion of u into S, and Dijkstra's algorithm is correct November 26, 2001

Dijkstra’s Running Time Extract-Min executed |V| time Decrease-Key executed |E| time Time = |V| TExtract-Min + |E| TDecrease-Key T depends on different Q implementations Q T(Extract-Min) T(Decrease-Key) array O(V) O(1) O(V 2) binary heap O(lg V) O(E lg V) Fibonacci heap O(V lgV + E) November 26, 2001

Bellman-Ford Algorithm Dijkstra’s doesn’t work when there are negative edges: Intuition – we can not be greedy on the assumption that the lengths of paths will only increase in the future Bellman-Ford algorithm detects negative cycles (returns false) or returns the shortest path-tree November 26, 2001

Bellman-Ford Algorithm Bellman-Ford(G,w,s) 01 for each v Î V[G] 02 d[v] ¬ ¥ 03 d[s] ¬ 0 04 p[r] ¬ NIL 05 for i ¬ 1 to |V[G]|-1 do 06 for each edge (u,v) Î E[G] do 07 Relax (u,v,w) 08 for each edge (u,v) Î E[G] do 09 if d[v] > d[u] + w(u,v) then return false 10 return true November 26, 2001

Bellman-Ford Example ¥ 6 ¥ 7 6 4 7 2 2 4 7 s z y 6 7 8 -3 2 9 -2 x t s z y 6 7 8 -3 2 9 -2 x t -4 5 5 6 ¥ 7 s z y 8 -3 2 9 -2 x t -4 5 5 6 4 7 2 s z y 8 -3 9 -2 x t -4 2 4 7 s z y 6 8 -3 9 -2 x t -4 November 26, 2001

Bellman-Ford Example Bellman-Ford running time: 2 4 7 -2 s z y 6 8 -3 9 x t -4 5 Bellman-Ford running time: (|V|-1)|E| + |E| = Q(VE) November 26, 2001

Correctness of Bellman-Ford Let di(s,u) denote the length of path from s to u, that is shortest among all paths, that contain at most i edges Prove by induction that d[u]= di(s,u) after the i-th iteration of Bellman-Ford Base case, trivial Inductive step (say d[u] = di-1(s,u)): Either di(s,u) = di-1(s,u) Or di(s,u) = di-1(s,z) + w(z,u) In an iteration we try to relax each edge ((z,u) also), so we will catch both cases, thus d[u] = di(s,u) November 26, 2001

Correctness of Bellman-Ford After n-1 iterations, d[u] = dn-1(s,u), for each vertex u. If there is still some edge to relax in the graph, then there is a vertex u, such that dn(s,u) < dn-1(s,u). But there are only n vertices in G – we have a cycle, and it must be negative. Otherwise, d[u]= dn-1(s,u) = d(s,u), for all u, since any shortest path will have at most n-1 edges November 26, 2001

Shortest-Path in DAG’s Finding shortest paths in DAG’s is much easier, because it is easy to find an order in which to do relaxations – Topological sorting! DAG-Shortest-Paths(G,w,s) 01 for each v Î V[G] 02 d[v] ¬ ¥ 03 d[s] ¬ 0 04 topologically sort V[G] 05 for each vertex u, taken in topolog. order do 06 for each vertex v Î Adj[u] do 07 Relax(u,v,w) November 26, 2001

Shortest-Paths in DAG’s (2) Running time: Q(V+E) – only one relaxation for each edge, V times faster than Bellman-Ford November 26, 2001

Next Lecture Introduction to Computational Geometry November 26, 2001