Data Structures and Algorithms. Werner Nutt

Similar documents
Shortest path problems

Data Structures and Algorithms. Werner Nutt

COT 6405 Introduction to Theory of Algorithms

COP 4531 Complexity & Analysis of Data Structures & Algorithms

Data Structures and Algorithms. Chapter 7. Graphs

Minimum Spanning Trees Ch 23 Traversing graphs

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

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

COMP251: Single source shortest paths

ECE250: Algorithms and Data Structures Single Source Shortest Paths Bellman-Ford Algorithm

Minimum Spanning Trees My T. UF

Introduction to Algorithms. Lecture 11

Minimum Spanning Trees

Minimum Spanning Trees

Week 12: Minimum Spanning trees and Shortest Paths

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

Minimum-Spanning-Tree problem. Minimum Spanning Trees (Forests) Minimum-Spanning-Tree problem

CS161 - Minimum Spanning Trees and Single Source Shortest Paths

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

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

Fundamental Algorithms CSCI-GA /Summer Solution to Homework 8

Context: Weighted, connected, undirected graph, G = (V, E), with w : E R.

Shortest Paths. Nishant Mehta Lectures 10 and 11

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

CIS 121 Data Structures and Algorithms Minimum Spanning Trees

Shortest Paths. Nishant Mehta Lectures 10 and 11

Minimum Spanning Trees

Minimum Spanning Tree

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

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

Introduction to Algorithms

Advanced algorithms. topological ordering, minimum spanning tree, Union-Find problem. Jiří Vyskočil, Radek Mařík 2012

Chapter 23. Minimum Spanning Trees

Greedy Algorithms. At each step in the algorithm, one of several choices can be made.

1 Shortest Paths. 1.1 Breadth First Search (BFS) CS 124 Section #3 Shortest Paths and MSTs 2/13/2018

Minimum Spanning Tree (undirected graph)

Algorithm Design, Anal. & Imp., Homework 4 Solution

Introduction to Algorithms

1 Shortest Paths. 1.1 Breadth First Search (BFS) CS 124 Section #3 Shortest Paths and MSTs 2/13/2018

Week 11: Minimum Spanning trees

Minimum Spanning Trees

Introduction to Algorithms

Decreasing a key FIB-HEAP-DECREASE-KEY(,, ) 3.. NIL. 2. error new key is greater than current key 6. CASCADING-CUT(, )

Minimum Spanning Trees Shortest Paths

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

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

Shortest Path Algorithms

Shortest Path Problem

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

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

CHAPTER 13 GRAPH ALGORITHMS

Single Source Shortest Path

Analysis of Algorithms, I

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

Lecture 11: Analysis of Algorithms (CS ) 1

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

Classical Shortest-Path Algorithms

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

CSE 100 Minimum Spanning Trees Prim s and Kruskal

23.2 Minimum Spanning Trees

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

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

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

Minimum Spanning Trees

Unit 2: Algorithmic Graph Theory

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

CSE331 Introduction to Algorithms Lecture 15 Minimum Spanning Trees

Minimum Spanning Trees

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI. Department of Computer Science and Engineering CS6301 PROGRAMMING DATA STRUCTURES II

Minimum Spanning Trees Ch 23 Traversing graphs

Depth-first Search (DFS)

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

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

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

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

CS583 Lecture 09. Jana Kosecka. Graph Algorithms Topological Sort Strongly Connected Component Minimum Spanning Tree

22c:31 Algorithms. Kruskal s Algorithm for MST Union-Find for Disjoint Sets

CS521 \ Notes for the Final Exam

Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees

Minimum Spanning Tree (5A) Young Won Lim 5/11/18

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

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

Priority queue ADT part 1

We ve done. Introduction to the greedy method Activity selection problem How to prove that a greedy algorithm works Fractional Knapsack Huffman coding

Dist(Vertex u, Vertex v, Graph preprocessed) return u.dist v.dist

Partha Sarathi Manal

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.

Lecture 10: Analysis of Algorithms (CS ) 1

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

Announcements Problem Set 5 is out (today)!

CS420/520 Algorithm Analysis Spring 2009 Lecture 14

managing an evolving set of connected components implementing a Union-Find data structure implementing Kruskal s algorithm

Lecture Notes for Chapter 23: Minimum Spanning Trees

Graph Algorithms shortest paths, minimum spanning trees, etc.

Graph Algorithms shortest paths, minimum spanning trees, etc.

Undirected Graphs. DSA - lecture 6 - T.U.Cluj-Napoca - M. Joldos 1

COMP 251 Winter 2017 Online quizzes with answers

CSC 1700 Analysis of Algorithms: Minimum Spanning Tree

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

Minimum spanning trees

Transcription:

Data Structures and Algorithms Werner Nutt nutt@inf.unibz.it http://www.inf.unibz/it/~nutt Chapter 10 Academic Year 2012-2013 1

Acknowledgements & Copyright Notice These slides are built on top of slides developed by Michael Boehlen. Moreover, some material (text, figures, examples) displayed in these slides is courtesy of Kurt Ranalter. Some examples displayed in these slides are taken from [Cormen, Leiserson, Rivest and Stein, ``Introduction to Algorithms'', MIT Press], and their copyright is detained by the authors. All the other material is copyrighted by Roberto Sebastiani. Every commercial use of this material is strictly forbidden by the copyright laws without the authorization of the authors. No copy of these slides can be displayed in public or be publicly distributed without containing this copyright notice. 2

Data Structures and Algorithms Chapter 10 1. Weighted Graphs 2. Minimum Spanning Trees Greedy Choice Theorem Kruskal s algorithm Prim s algorithm 3. Shortest Paths Dijkstra s algorithm Bellman-Ford's algorithm 3

Data Structures and Algorithms Chapter 10 1. Weighted Graphs 2. Minimum Spanning Trees Greedy Choice Theorem Kruskal s algorithm Prim s algorithm 3. Shortest Paths Dijkstra s algorithm Bellman-Ford's algorithm 4

Spanning Tree A spanning tree of G is a subgraph which contains all vertices of G is a tree How many edges are there in a spanning tree, if there are V vertices? 5

Minimum Spanning Trees Undirected, connected graph G = (V,E) Weight function W: E R (assigning cost or length or other values to edges) Spanning tree: tree that connects all vertexes Minimum spanning tree (MST): spanning tree T that minimizes w u, v w T = u, v T 14 12 5 7 3 10 9 15

Optimal Substructure MST(G) = T u v MST(G ) = T (u,v) u+v Rationale: If G had a cheaper ST T, then we would get a cheaper ST of G: T + (u,v) 7

Idea for an Algorithm We have to make V 1 choices (edges of the MST) to arrive at the optimization goal After each choice we have a sub-problem that is one vertex smaller than the original problem. A dynamic programming algorithm would consider all possible choices (edges) at each vertex. Goal: at each vertex cheaply determine an edge that definitely belongs to an MST

Data Structures and Algorithms Week 10 1. Weighted Graphs 2. Minimum Spanning Trees Greedy Choice Theorem Kruskal s algorithm Prim s algorithm 3. Shortest Paths Dijkstra s algorithm Bellman-Ford's algorithm 9

Greedy Choice Greedy choice property: locally optimal (greedy) choice yields a globally optimal solution. Theorem Let G=(V, E) and S V S is a cut of G (it splits G into parts S and V-S) (u,v) is a light edge if it is a min-weight edge of G that connects S and V-S Then (u,v) belongs to a MST T of G 10

Greedy Choice/2 Proof Suppose (u,v) is light but (u,v) any MST look at path from u to v in some MST T Let (x, y) be the first edge on a path from u to v in T that crosses from S to V S. Swap (x, y) with (u,v) in T. this improves cost of T è contradiction (T is supposed to be an MST) S 11 u x y v V-S

Generic MST Algorithm Generic-MST(G, w) w) 1 A := := 2 while (A (A does not not form a spanning tree) do do 3 Find an an edge (u,v) that is is safe for for A 4 A := := A {(u,v)} 5 return A A safe edge is an edge that does not destroy A s property. MoreSpecific-MST(G, w) w) 1 A := := 2 while while A does does not not form form a spanning tree tree do do 3.1 3.1 Make Make a cut cut (S, (S, V-S) V-S) of of G that that respects A 3.2 3.2 Take Take the the min-weight edge edge (u,v) (u,v) connecting S to to V-S V-S 4 A := := A {(u,v)} 5 return A 12

Prim-Jarnik Algorithm Vertex-based algorithm Grows a single MST T one vertex at a time The set A covers the portion of T that was already computed Annotate all vertices v outside of the set A with v.key, the current minimum weight of an edge that connects v to a vertex in A (v.key = if no such edge exists) 13

Prim-Jarnik Algorithm/2 MST-Prim(G,s) 01 for each vertex u G.V 02 u.key := 03 u.pred := NIL 04 s.key := 0 05 init(q, G.V) // Q is a 0 while not isempty(q) 07 u := extractmin(q) // add u to T 0 for each v u.adj do 09 if v Q and w(u,v) < v.key then 1 v.key := w(u,v) 11 modifykey(q,v) 12 v.pred := u updating keys 14

Prim-Jarnik Example 4 B A 12 H MST-Prim(Graph,A) 1 C 3 I 5 3 G D 4 13 9 10 F E A = {} Q = A-NIL/0, B-NIL/, C-NIL/, D-NIL/, E-NIL/, F-NIL/, G-NIL/, H-NIL/, I-NIL/ 15

Prim-Jarnik Example/2 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0 Q = B-A/4, H-A/, C-NIL/, D-NIL/, E-NIL/, F-NIL/, G-NIL/, I-NIL/ 1

Prim-Jarnik Example/3 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4 Q = H-A/, C-B/, D-NIL/, E-NIL/, F-NIL/, G-NIL/, I-NIL/ 17

Prim-Jarnik Example/4 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/ Q = G-H/1, I-H/, C-B/, D-NIL/, E-NIL/, F-NIL/ 1

Prim-Jarnik Example/5 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1 Q = F-G/3, I-G/5, C-B/, D-NIL/, E-NIL/ 19

Prim-Jarnik Example/ A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1, F-G/3 Q = C-F/4, I-G/5, E-F/10, D-F/13 20

Prim-Jarnik Example/7 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1, F-G/3, C-F/4 Q = I-C/3, D-C/, E-F/10 21

Prim-Jarnik Example/ A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1, F-G/3, C-F/4, I-C/3 Q = D-C/, E-F/10 22

Prim-Jarnik Example/9 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1, F-G/3, C-F/4, I-C/3, D-C/ Q = E-D/9 23

Prim-Jarnik Example/10 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E A = A-NIL/0, B-A/4, H-A/, G-H/1, F-G/3, C-F/4, I-C/3, D-C/, E-D/9 Q = {} 24

Implementation Issues MST-Prim(G,r) 01 for u G.V do u.key := ; u.pred := NIL 02 r.key := 0 03 init(q, G.V) // Q is a min- 04 while not isempty(q) do 05 u := extractmin(q) // add u to T 0 for v u.adj do 07 if v Q and w(u,v) < v.key then 0 v.key := w(u,v) 09 modifykey(q,v) 10 v.pred := u 25

Priority Queues A priority queue maintains a set S of elements, each with an associated key value. We need PQ to support the following operations init(q:priorityqueue, S:VertexSet) extractmin(q:priorityqueue): Vertex modifykey(q:priorityqueue, v:vertex) To choose how to implement a PQ, we need to count how many times the operations are performed: init is performed just once and runs in O(V) 2

Prim-Jarnik Running Time Time = V *T(extractMin) + O(E)*T(modifyKey) Q T(extractMin) T(modifyKey) Total array O(V) O(1) O(V 2 ) binary heap O(log V) O(log V) O(E logv) E V-1, E < V2, E = O(V 2 ) Binary heap implementation: Time = O(V logv + E logv) = O(V 2 logv) = O(E logv) 27

About Greedy Algorithms Greedy algorithms make a locally optimal choice (cheapest path, etc). In general, a locally optimal choice does not give a globally optimal solution. Greedy algorithms can be used to solve optimization problems, if: There is an optimal substructure We can prove that a greedy choice at each iteration leads to an optimal solution. 2

Kruskal's Algorithm Edge based algorithm Add edges one at a time in increasing weight order. The algorithm maintains A: a forest of trees. An edge is accepted it if connects vertices of distinct trees (the cut respects A). 29

Disjoint Sets We need to maintain a disjoint partitioning of a set, i.e., a collection S of disjoint sets. Operations: addsingletonset(s:set, x:vertex) S := S {{x}} findset(s:set, x:vertex): Set returns X S such that x X unionsets(s:set, x:vertex, y:vertex) X := findset(s:set, x) Y := findset(s:set, y) S := (S {X, Y}) {X Y} 30

Kruskal's Algorithm/2 The algorithm keeps adding the cheapest edge that connects two trees of the forest MST-Kruskal(G) 01 A := 02 init(s) // Init 03 for v G.V do addsingletonset(s,v) 05 sort edges of G.E by non-decreasing w(u,v) 0 for (u,v) G.E in sorted order do 07 if findset(s,u) findset(s,v) then 0 A := A {(u,v)} 09 unionsets(s,u,v) 10 return A 31

Kruskal Example/1 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { A B C D E F G H I } E' = { HG CI GF CF AB HI CD BC AH DE EF BH DF } 32

Kruskal Example/2 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { A B C D E F GH I } E' = { CI GF CF AB HI CD BC AH DE EF BH DF } 33

Kruskal Example/3 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { A B CI D E F GH } E' = { GF CF AB HI CD BC AH DE EF BH DF } 34

Kruskal Example/4 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { A B CI D E FGH } E' = { CF AB HI CD BC AH DE EF BH DF } 35

Kruskal Example/5 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { A B CFGHI D E } E' = { AB HI CD BC AH DE EF BH DF } 3

Kruskal Example/ A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { AB CFGHI D E } E' = { HI CD BC AH DE EF BH DF } 37

Kruskal Example/7 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { AB CDFGHI E } E' = { BC AH DE EF BH DF } 3

Kruskal Example/ A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { ABCDFGHI E } E' = { AH DE EF BH DF } 39

Kruskal Example/9 A 4 12 B H 1 C 3 I 5 3 G D 4 13 9 10 F E S = { ABCDEFGHI } E' = { EF BH DF } 40

Disjoint Sets as Lists Each set is a list of elements identified by the first element, all elements in the list point to the first element UnionSets: add a shorter list to a longer one, O(min{ C(u), C(v) }) AddSingletonSet/FindSet: O(1) 1 2 3 4 A B C 1 2 3 4 A B C 41

Kruskal Running Time Initialization O(V) time Sorting the edges Θ(E log E) = Θ(E log V) O(E) calls to FindSet Union costs Let t(v) be the number of times v is moved to a new cluster Each time a vertex is moved to a new cluster the size of the cluster containing the vertex at least doubles: t(v) log V ( ) l o g Total time: O(E log V) v V Total time spent doing Union t v V V 42

Suggested exercises Implement both Prim's (tough) and Kruskal's algorithms (very tough) Using paper & pencil, simulate the behaviour of both Prim's and Kruskal's algorithms on some examples 43

Data Structures and Algorithms Week 10 1. Weighted Graphs 2. Minimum Spanning Trees Greedy Choice Theorem Kruskal s algorithm Prim s algorithm 3. Shortest Paths Dijkstra s algorithm Bellman-Ford's algorithm 44

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 v 2 v k is k 1 w( p) w( v, v ) i Shortest path = a path i 1 of minimum weight (cost) Applications static/dynamic network routing robot motion planning map/route generation in traffic i 1 45

Shortest-Path Problems Shortest-Path problems Single-source (single-destination). Find a shortest path from a given source (vertex s) 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. 4

Optimal Substructure Theorem: subpaths of shortest paths are shortest paths Proof: if some subpath were not the shortest path, one could substitute the shorter subpath and create a shorter total path 47

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. 4

Shortest Path Tree The result of the algorithms is a shortest path tree (SPT). For each vertex v, it records a shortest path from the start vertex s to v. v.pred is the predecessor of v on this shortest path v.dist is the shortest path length from s to v Note: SPT is different from minimum spanning tree (MST)! SPT MST 5 4 5 5 4 5 2 2 2 2 49

u 5 u Relaxation For each vertex v in the graph, we maintain v.dist, the estimate of the shortest path from s. It is initialized to at the start. Relaxing an edge (u,v) means testing whether we can improve the shortest path to v found so far by going through u. 2 2 v 9 Relax(u,v) 5 7 v u 5 u 2 2 v Relax(u,v) 5 v Relax (u,v,g) if v.dist > u.dist + w(u,v) then v.dist := u.dist + w(u,v) v.pred := u 50

Dijkstra's Algorithm Assumption: 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, a priority queue with keys v.dist (BFS used FIFO queue, here we use a PQ, which is re-organized whenever some dist 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 51

Dijkstra s Pseudo Code Input: Graph G, start vertex s Dijkstra 01 for u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 init(q, G.V) // initialize 0 while not isempty(q) do 07 u := extractmin(q) 0 for v u.adj do 09 Relax(u, v, G) 10 modifykey(q, v) initialize graph relaxing edges 52

Dijkstra s Example/1 Dijkstra(G,s) 01 for u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 init(q, G.V) 0 while not isempty(q) do 07 u := extractmin(q) 0 for v u.adj do 09 Relax(u, v, G) 10 modifykey(q, v) 10 1 5 53 s s 0 0 5 10 10 5 u x u 2 3 9 x 7 1 2 3 9 7 2 2 4 4 v y v y

Dijkstra s Example/2 Dijkstra(G,s) 01 for u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 init(q, G.V) 0 while not isempty(q) do 07 u := extractmin(q) 0 for v u.adj do 09 Relax(u, v, G) 10 modifykey(q, v) 14 5 7 54 s s 0 0 10 5 10 5 u x 1 2 3 9 u 7 2 4 v y v 13 5 7 x 1 2 3 9 7 2 4 y

Dijkstra s Example/3 Dijkstra(G,s) 01 for u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 init(q, G.V) 0 while not isempty(q) do 07 u := extractmin(q) 0 for v u.adj do 09 Relax(u, v, G) 10 modifykey(q, v) 9 5 7 55 s s 0 0 10 5 10 5 u x 1 2 3 9 u 7 2 4 v y v 9 5 7 x 1 2 3 9 7 2 4 y

Dijkstra s Correctness/1 We prove that whenever u is added to S, u.dist = δ(s,u), i.e., dist is minimum. Proof (by contradiction) Initially v: v.dist δ(s,v) Let u be the first vertex such that there is a shorter path than u.dist, i.e., u.dist δ(s,u) We will show that this assumption leads to a contradiction 5

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 y.dist = δ(s,y) because x.dist is set correctly for y's predecessor x S on the shortest path (by choice of u as the first vertex for which dist is set incorrectly) when the algorithm inserted x into S, it relaxed the edge (x,y), setting y.dist to the correct value 57

Dijkstra Correctness/3 u.dist > (s,u) initial assumption = (s,y) + (y,u) optimal substructure = y.dist + (y,u) correctness of y.dist y.dist no negative weights But u.dist > y.dist algorithm would have chosen y (from the PQ) to process next, not u contradiction Thus, u.dist = δ(s,u) at time of insertion of u into S, and Dijkstra's algorithm is correct 5

Dijkstra s Running Time Extract-Min executed V time Modify-Key executed E time Time = V TExtract-Min + E T Modify-Key T depends on different Q implementations Q T(Extract-Min) T(Modify-Key) Total array O(V) O(1) O(V 2 ) heap O(lg V) O(lg V) O(E lg V) 59

Bellman-Ford Algorithm/1 Dijkstra s doesn t work when there are negative edges: Intuition we cannot be greedy anymore 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 0

Bellman-Ford Algorithm/2 Bellman-Ford(G,s) 01 for each vertex u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 for i := 1 to G.V -1 do 0 for each edge (u,v) G.E do 07 Relax (u,v,g) 0 for each edge (u,v) G.E do 09 if v.dist > u.dist + w(u,v) then 10 return 11 return initialization compute distances check for negative cycles 1

Bellman-Ford Example t -2 5 x t -2 5 x s -3 0 7 s -3 0 7 2 7-4 2-4 7 9 7 9 y z y z Order: tx, ty, tz, xt, yx, yz zx, zs, st, sy t -2 x t -2 5 4 5 x 2 4-4 -4 s -3 0 7 s -3 0 7 2 2 7 7 7 2 9 7 2 9 y z y z 2

Bellman-Ford Example/2 s 0 7 y t -2 2 4-4 -3 7 2 7 2 9 5 x Order: tx, ty, tz, xt, yx, yz zx, zs, st, sy z 3

Bellman-Ford Running time Bellman-Ford running time: ( V -1) E + E = Θ(VE) 4

Correctness of Bellman- Ford/1 Let δi (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 u.dist = δi (s,u) after the i th iteration of Bellman-Ford Base case (i=0) trivial Inductive step (say u.dist = δ i-1 (s,u)): Either δi (s,u) = δ i-1 (s,u) Or δi (s,u) = δ i-1 (s,z) + w(z,u) In an iteration we try to relax each edge ((z,u) also), so we handle both cases, thus u.dist = δ i (s,u) 5

Correctness of Bellman- Ford/2 After n-1 iterations, u.dist = δn-1 (s,u), for each vertex u. If there is some edge to relax in the graph, then there is a vertex u, such that δ n (s,u) < δ n-1 (s,u). But there are only n vertices in G we have a cycle, and it is negative. Otherwise, u.dist = δn-1 (s,u) = δ(s,u), for all u, since any shortest path will have at most n-1 edges

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 vertex u G.V 02 u.dist := 03 u.pred := NIL 04 s.dist := 0 05 topologically sort G 0 for each vertex u in topological order do 07 for each v u.adj do 0 Relax(u, v, G) 7

Shortest-Paths in DAG s/2 Running time: Θ(V+E) only one relaxation for each edge, V times faster than Bellman-Ford

Suggested exercises Implement both Dijkstra's and Bellman- Ford's algorithms Implement the algorithm based on topological sorting for DAGs Using paper & pencil simulate the behaviour of both Dijkstra's and Bellman-Ford's algorithms on some examples Simulate the behaviour of the T.S. algorithm on some example DAGs 9

Summary and Outlook Greedy algorithms MST: Kruskal MST: Prim Shortest path: Dijkstra Shortest path: Bellman-Ford 70