Graphs: Finding shortest paths
Upcoming SlideShare
Loading in...5

Graphs: Finding shortest paths



Graphs: Finding shortest paths ...

Graphs: Finding shortest paths

Floyd-Warshall algorithm
Dijkstra algorithm
Bellman-Ford algorithm

Teaching material for the course of "Tecniche di Programmazione" at Politecnico di Torino in year 2012/2013. More information:



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds


Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Graphs: Finding shortest paths Graphs: Finding shortest paths Presentation Transcript

  • Graphs: Finding shortest pathsTecniche di Programmazione – A.A. 2012/2013
  • SummaryA.A. 2012/2013Tecniche di programmazione2 Definitions Floyd-Warshall algorithm Dijkstra algorithm Bellman-Ford algorithm
  • DefinitionGraphs: Finding shortest paths
  • Definition: weight of a pathA.A. 2012/2013Tecniche di programmazione4 Consider a directed, weighted graph G=(V,E), with weightfunction w: ER This is the general case: undirected or un-weighted areautomatically included The weight w(p) of a path p is the sum of the weights ofthe edges composing the path𝑤 𝑝 = 𝑤(𝑢, 𝑣)(𝑢,𝑣)∈𝑝
  • Definition: shortest pathA.A. 2012/2013Tecniche di programmazione5 The shortest path between vertex u and vertex v isdefined as the mininum-weight path between u and v, ifthe path exists. The weight of the shortest path is represented as d(u,v) If v is not reachable from u, then d(u,v)=
  • Finding shortest pathsA.A. 2012/2013Tecniche di programmazione6 Single-source shortest path Given u and v, find the shortest path between u and v Given u, find the shortest path between u and any other vertex All-pairs shortest path Given a graph, find the shortest path between any pair ofvertices
  • What to find?A.A. 2012/2013Tecniche di programmazione7 Depending on the problem, you might want: The value of the shortest path weight Just a real number The actual path having such minimum weight For simple graphs, a sequence of vertices. For multigraphs, a sequenceof edges
  • ExampleA.A. 2012/2013Tecniche di programmazione8u vsx y3564312 7 26What is the shortest path betweens and v ?
  • Representing shortest pathsA.A. 2012/2013Tecniche di programmazione9 To store all shortest paths from a single source u, we mayadd For each vertex v, the weight of the shortest path d(u,v) For each vertex v, the “preceding” vertex p(v) that allows toreach v in the shortest path For multigraphs, we need the preceding edge Example: Source vertex: u For any vertex v: double v.weight ; Vertex v.preceding ;
  • ExampleA.A. 2012/2013Tecniche di programmazione10u vsx y3564312 7 26Vertex PrevioussuxvyVertex Weights 0uxvy
  • LemmaA.A. 2012/2013Tecniche di programmazione11 The “previous” vertex in an intermediate node of aminimum path does not depend on the final destination Example: Let p1 = shortest path between u and v1 Let p2 = shortest path between u and v2 Consider a vertex w  p1  p2 The value of p(w) may be chosen in a single way and stillguarantee that both p1 and p2 are shortest
  • Shortest path graphA.A. 2012/2013Tecniche di programmazione12 Consider a source node u Compute all shortest paths from u Consider the relation Ep = { (v.preceding, v) } Ep  E Vp = { v V : v reachable from u } Gp = G(Vp, Ep) is a subgraph of G(V,E) Gp: the predecessor-subgraph
  • Shortest path treeA.A. 2012/2013Tecniche di programmazione13 Gp is a tree (due to the Lemma) rooted in u In Gp, the (unique) paths starting from u are alwaysshortest paths Gp is not unique, but all possible Gp are equivalent (sameweight for every shortest path)
  • ExampleA.A. 2012/2013Tecniche di programmazione14u vsx y3564312 7 26Vertex PrevioussuxvyVertex Weights 0uxvy
  • Special caseA.A. 2012/2013Tecniche di programmazione15 If G is an un-weighted graph, then the shortest paths maybe computed just with a breadth-first visit
  • A.A. 2012/2013Tecniche di programmazione16Negative-weight cycles Minimum paths cannot be defined if there are negative-weight cycles in the graph In this case, the minimum path does not exist, becauseyou may always decrease the path weight by going oncemore through the loop. Conventionally, in these case we say that the path weightis -.
  • A.A. 2012/2013Tecniche di programmazione17Examplea bs c d ge f352-44876-33-6
  • A.A. 2012/2013Tecniche di programmazione18Examplea bs c d ge f352-44876-33-603 -1---5 11Minimum-weight paths fromsource vertex s
  • A.A. 2012/2013Tecniche di programmazione19Lemma Consider an ordered weighted graph G=(V,E), with weightfunction w: ER. Let p=<v1, v2, …, vk> a shortest path from vertex v1 tovertex vk. For all i,j such that1ijk, let pij=<vi, vi+1, …, vj> be thesub-path of p, from vettex vi to vertex vj. Therefore, pij is a shortest path from vi to vj.
  • A.A. 2012/2013Tecniche di programmazione20Corollary Let p be a shortest path from s to v Consider the vertex u, such that (u,v) is the last edge inthe shortest path We may decompose p (from s to v) into: A sub-path from s to u The final edge (u,v) Therefore d(s,v)=d(s,u)+w(u,v)
  • A.A. 2012/2013Tecniche di programmazione21Lemma If we chose arbitrarily the vertex u, then for all edges(u,v)E we may say that d(s,v)d(s,u)+w(u,v)
  • A.A. 2012/2013Tecniche di programmazione22Relaxation Most shortest-path algorithms are based on therelaxation technique It consists of Keeping track of an updated estimate d[u] of the shortest pathtowards each node u Relaxing (i.e., updating) d[v] (and therefore the predecessorp[v]) whenever we discover that node v is more convenientlyreached by traversing edge (u,v)
  • A.A. 2012/2013Tecniche di programmazione23Initial state Initialize-Single-Source(G(V,E), s)1. for all vertices v V2. do1. d[v]2. p[v]NIL3. d[s]0
  • A.A. 2012/2013Tecniche di programmazione24Relaxation We consider an edge (u,v) with weight w Relax(u, v, w)1. if d[v] > d[u]+w(u,v)2. then1. d[v]  d[u]+w(u,v)2. p[v]  u
  • A.A. 2012/2013Tecniche di programmazione25Example 1u v5 92u v5 72Relax(u,v,w)Before:Shortest path to vweights 9, does notcontain (u,v)After:Shortest path to vweights 7, the pathincludes (u,v)
  • A.A. 2012/2013Tecniche di programmazione26Example 2u v5 62u v5 62Relax(u,v,w)Before:Shortest path to vweights 6, does notcontain (u,v)After:No relaxation possible,shortest path unchanged
  • A.A. 2012/2013Tecniche di programmazione27Lemma Consider an ordered weighted graph G=(V,E), with weightfunction w: ER. Let (u,v) be an edge in G. After relaxation of (u,v) we may write that: d[v]d[u]+w(u,v)
  • LemmaA.A. 2012/2013Tecniche di programmazione28 Consider an ordered weighted graph G=(V,E), with weightfunction w: ER and source vertex sV.Assume that Ghas no negative-weight cycles reachable from s. Therefore After calling Initialize-Single-Source(G,s), the predecessorsubgraph Gp is a rooted tree, with s as the root. Any relaxation we may apply to the graph does not invalidatethis property.
  • A.A. 2012/2013Tecniche di programmazione29Lemma Given the previous definitions. Apply any possible sequence of relaxation operations Therefore, for each vertex v d[v]  d(s,v) Additionally, if d[v] = d(s,v), then the value of d[v] will notchange anymore due to relaxation operations.
  • Shortest path algorithmsA.A. 2012/2013Tecniche di programmazione30 Differ according to one-source or all-sourcesrequirement Adopt repeated relaxation operations Vary in the order of relaxation operations they perform May be applicable (or not) to graph with negative edges(but no negative cycles)
  • Floyd-Warshall algorithmGraphs: Finding shortest paths
  • Floyd-Warshall algorithmA.A. 2012/2013Tecniche di programmazione32 Computes the all-sourceshortest path dist[i][j] is an n-by-n matrixthat contains the length of ashortest path from vi to vj. if dist[u][v] is ∞, there is nopath from u to v pred[s][j] is used toreconstruct an actualshortest path: stores thepredecessor vertex forreaching vj starting fromsource vs
  • Floyd-Warshall: initializationA.A. 2012/2013Tecniche di programmazione33
  • Example, after initializationA.A. 2012/2013Tecniche di programmazione34
  • Floyd-Warshall: relaxationA.A. 2012/2013Tecniche di programmazione35
  • Example, after step t=0A.A. 2012/2013Tecniche di programmazione36
  • Example, after step t=1A.A. 2012/2013Tecniche di programmazione37
  • Example, after step t=2A.A. 2012/2013Tecniche di programmazione38
  • Example, after step t=3A.A. 2012/2013Tecniche di programmazione39
  • ComplexityA.A. 2012/2013Tecniche di programmazione40 The Floyd-Warshall is basically executing 3 nested loops,each iterating over all vertices in the graph Complexity: O(V3)
  • ImplementationA.A. 2012/2013Tecniche di programmazione41
  • ResourcesA.A. 2012/2013Tecniche di programmazione42 Algorithms in a Nutshell, G. Heineman, G. Pollice, S.Selkow, O’Reilly, ISBN 978-0-596-51624-6, Chapter 6
  • Licenza d’usoA.A. 2012/2013Tecniche di programmazione43 Queste diapositive sono distribuite con licenza Creative Commons“Attribuzione - Non commerciale - Condividi allo stesso modo (CCBY-NC-SA)” Sei libero: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,rappresentare, eseguire e recitare questopera di modificare questopera Alle seguenti condizioni: Attribuzione — Devi attribuire la paternità dellopera agli autori originalie in modo tale da non suggerire che essi avallino te o il modo in cui tuusi lopera. Non commerciale — Non puoi usare questopera per fini commerciali. Condividi allo stesso modo — Se alteri o trasformi questopera, o se lausi per crearne unaltra, puoi distribuire lopera risultante solo con unalicenza identica o equivalente a questa.