Graph Algorithms Shortest path problems [Adapted from K.Wayne]
Graph Algorithms Shortest path problems [Adapted from K.Wayne]
Graph Algorithms Shortest path problems [Adapted from K.Wayne]
Graph Algorithms Single-Source Shortest Paths Given graph (directed or undirected) G = (V,E) with weight function w: E R and a vertex s V, find for all vertices v V the minimum possible weight for path from s to v. We will discuss two general case algorithms: Dijkstra's (positive edge weights only) Bellman-Ford (positive end negative edge weights) If all edge weights are equal (let's say 1), the problem is solved by BFS in (V+E) time.
Graph Algorithms Dijkstra’s Algorithm - Relax Relax(vertex u, vertex v, weight w) if d[v] > d[u] + w(u,v) then d[v] d[u] + w(u,v) p[v] u [Adapted from K.Wayne]
Graph Algorithms Dijkstra’s Algorithm - Idea [Adapted from K.Wayne]
Graph Algorithms Dijkstra’s Algorithm - SSSP-Dijkstra SSSP-Dijkstra(graph (G,w), vertex s) InitializeSingleSource(G, s) S Q V[G] while Q 0 do u ExtractMin(Q) S S {u} for v Adj[u] do Relax(u,v,w) InitializeSingleSource(graph G, vertex s) for v V[G] do d[v] p[v] 0 d[s] 0
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example 0
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Example
Graph Algorithms Dijkstra’s Algorithm - Complexity SSSP-Dijkstra(graph (G,w), vertex s) InitializeSingleSource(G, s) S Q V[G] while Q 0 do u ExtractMin(Q) S S {u} for u Adj[u] do Relax(u,v,w) InitializeSingleSource(graph G, vertex s) for v V[G] do d[v] p[v] 0 d[s] 0 Relax(vertex u, vertex v, weight w) if d[v] > d[u] + w(u,v) then d[v] d[u] + w(u,v) p[v] u (V) (1) ? (E) times in total executed (V) times
Graph Algorithms Dijkstra’s Algorithm - Complexity InitializeSingleSource T I (V,E) = (V) Relax T R (V,E) = (1)? SSSP-Dijkstra T(V,E) = T I (V,E) + (V) + V (log V) + E T R (V,E) = = (V) + (V) + V (log V) + E (1) = (E + V log V)
Graph Algorithms Dijkstra’s Algorithm - Complexity [Adapted from K.Wayne]
Graph Algorithms Dijkstra’s Algorithm - Correctness [Adapted from K.Wayne]
Graph Algorithms Dijkstra’s Algorithm - negative weights? [Adapted from K.Wayne]
Graph Algorithms Bellman-Ford Algorithm - negative cycles? [Adapted from K.Wayne]
Graph Algorithms Bellman-Ford Algorithm - Idea [Adapted from X.Wang]
Graph Algorithms Bellman-Ford Algorithm - SSSP-BellmanFord SSSP-BellmanFord(graph (G,w), vertex s) InitializeSingleSource(G, s) for i 1 to |V[G] 1| do for (u,v) E[G] do Relax(u,v,w) for (u,v) E[G] do if d[v] > d[u] + w(u,v) then return false return true
Graph Algorithms Bellman-Ford Algorithm - Example
Graph Algorithms Bellman-Ford Algorithm - Example 0
Graph Algorithms Bellman-Ford Algorithm - Example
Graph Algorithms Bellman-Ford Algorithm - Example
Graph Algorithms Bellman-Ford Algorithm - Example
Graph Algorithms Bellman-Ford Algorithm - Example
Graph Algorithms Bellman-Ford Algorithm - Complexity SSSP-BellmanFord(graph (G,w), vertex s) InitializeSingleSource(G, s) for i 1 to |V[G] 1| do for (u,v) E[G] do Relax(u,v,w) for (u,v) E[G] do if d[v] > d[u] + w(u,v) then return false return true executed (V) times (E) (1)
Graph Algorithms Bellman-Ford Algorithm - Complexity InitializeSingleSource T I (V,E) = (V) Relax T R (V,E) = (1)? SSSP-BellmanFord T(V,E) = T I (V,E) + V E T R (V,E) + E = = (V) + V E (1) + E = = (V E)
Graph Algorithms Bellman-Ford Algorithm - Correctness [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Bellman-Ford Algorithm - Correctness [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Bellman-Ford Algorithm - Correctness [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Bellman-Ford Algorithm - Correctness [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Shortest Paths in DAGs - SSSP-DAG SSSP-DAG(graph (G,w), vertex s) topologically sort vertices of G InitializeSingleSource(G, s) for each vertex u taken in topologically sorted order do for each vertex v Adj[u] do Relax(u,v,w)
Graph Algorithms Shortest Paths in DAGs - Example
Graph Algorithms Shortest Paths in DAGs - Example 0
Graph Algorithms Shortest Paths in DAGs - Example 0
Graph Algorithms Shortest Paths in DAGs - Example 0
Graph Algorithms Shortest Paths in DAGs - Example 6
Graph Algorithms Shortest Paths in DAGs - Example 664
Graph Algorithms Shortest Paths in DAGs - Example 664
Graph Algorithms Shortest Paths in DAGs - Example 654
Graph Algorithms Shortest Paths in DAGs - Example 654
Graph Algorithms Shortest Paths in DAGs - Example 653
Graph Algorithms Shortest Paths in DAGs - Example 653
Graph Algorithms Shortest Paths in DAGs - Complexity T(V,E) = (V + E) + (V) + (V) + E (1) = (V + E) SSSP-DAG(graph (G,w), vertex s) topologically sort vertices of G InitializeSingleSource(G, s) for each vertex u taken in topologically sorted order do for each vertex v Adj[u] do Relax(u,v,w)
Graph Algorithms Application of SSSP - currency conversion [Adapted from K.Wayne]
Graph Algorithms Application of SSSP - currency conversion [Adapted from K.Wayne]
Graph Algorithms Application of SSSP - currency conversion [Adapted from K.Wayne]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms Application of SSSP - constraint satisfaction [Adapted from T.Cormen, C.Leiserson, R. Rivest]
Graph Algorithms All-Pairs Shortest Paths Given graph (directed or undirected) G = (V,E) with weight function w: E R find for all pairs of vertices u,v V the minimum possible weight for path from u to v. [Adapted from M.Jacome]
Graph Algorithms Floyd-Warshall Algorithm - Idea [Adapted from M.Jacome]
Graph Algorithms Floyd-Warshall Algorithm - Idea [Adapted from M.Jacome]
Graph Algorithms Floyd-Warshall Algorithm - Idea d s,t (i) – the shortest path from s to t containing only vertices v 1,..., v i d s,t (0) = w(s,t) d s,t (k) = w(s,t)if k = 0 min{d s,t (k-1), d s,k (k-1) + d k,t (k-1) }if k > 0
Graph Algorithms Floyd-Warshall Algorithm - Algorithm FloydWarshall(matrix W, integer n) for k 1 to n do for i 1 to n do for j 1 to n do d ij (k) min(d ij (k-1), d ik (k-1) + d kj (k-1) ) return D (n)
Graph Algorithms Floyd-Warshall Algorithm - Example -4 0 17 40 2 -50 60 W
Graph Algorithms Floyd-Warshall Algorithm - Example 038 -4 0 17 40 2 -50 D (0) (0)
Graph Algorithms Floyd-Warshall Algorithm - Example 038 -4 0 17 40 D (1) (1)
Graph Algorithms Floyd-Warshall Algorithm - Example 0 17 D (2) (2)
Graph Algorithms Floyd-Warshall Algorithm - Example 0 17 D (3) (3)
Graph Algorithms Floyd-Warshall Algorithm - Example D (4) (4)
Graph Algorithms Floyd-Warshall Algorithm - Example D (5) (5)
Graph Algorithms Floyd-Warshall Algorithm - Extracting the shortest paths [Adapted from S.Cheng]
Graph Algorithms Floyd-Warshall Algorithm - Complexity T(V,E) = (n 3 ) = (V 3 ) FloydWarshall(matrix W, integer n) for k 1 to n do for i 1 to n do for j 1 to n do d ij (k) min(d ij (k-1), d ik (k-1) + d kj (k-1) ) return D (n) 3 for cycles, each executed exactly n times
Graph Algorithms All-Pairs Shortest Paths -Johnson's algorithm [Adapted from M.Jacome]
Graph Algorithms All-Pairs Shortest Paths - Reweighting [Adapted from M.Jacome]
Graph Algorithms All-Pairs Shortest Paths - Reweighting [Adapted from M.Jacome]
Graph Algorithms All-Pairs Shortest Paths - Reweighting [Adapted from M.Jacome]