216
Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 1 - Graphs ORD DFW SFO LAX 802 1843 1233 337

Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 1 -

Graphs

ORD

DFW

SFO

LAX

802

1843

1233

337

Page 2: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 2 -

John

DavidPaul

brown.edu

cox.net

cs.brown.edu

att.netqwest.net

math.brown.edu

cslab1bcslab1a

Applications Ø  Electronic circuits

q  Printed circuit board

q  Integrated circuit

Ø  Transportation networks q  Highway network

q  Flight network

Ø  Computer networks q  Local area network

q  Internet

q Web

Ø  Databases q  Entity-relationship diagram

Page 3: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 3 -

Edge Types Ø  Directed edge

q  ordered pair of vertices (u,v)

q  first vertex u is the origin

q  second vertex v is the destination

q  e.g., a flight

Ø  Undirected edge q  unordered pair of vertices (u,v)

q  e.g., a flight route

Ø  Directed graph (Digraph) q  all the edges are directed

q  e.g., route network

Ø  Undirected graph q  all the edges are undirected

q  e.g., flight network

ORD PVD

flight AA 1206

ORD PVD

849 miles

Page 4: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 4 -

Vertices and Edges Ø  End vertices (or endpoints) of

an edge q  U and V are the endpoints of a

Ø  Edges incident on a vertex q  a, d, and b are incident on V

Ø  Adjacent vertices q  U and V are adjacent

Ø  Degree of a vertex q  X has degree 5

Ø  Parallel edges q  h and i are parallel edges

Ø  Self-loop q  j is a self-loop

X U

V

W

Z

Y

a

c

b

e

d

f

g

h

i

j

Page 5: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 5 -

Graphs Ø  A graph is a pair (V, E), where

q  V is a set of nodes, called vertices

q  E is a collection of pairs of vertices, called edges

q  Vertices and edges are positions and store elements

Ø  Example: q  A vertex represents an airport and stores the three-letter airport code

q  An edge represents a flight route between two airports and stores the mileage of the route

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

Page 6: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 6 -

P1

Paths

Ø  Path q  sequence of alternating

vertices and edges

q  begins with a vertex

q  ends with a vertex

q  each edge is preceded and followed by its endpoints

Ø  Simple path q  path such that all its vertices

and edges are distinct

Ø  Examples q  P1=(V,b,X,h,Z) is a simple path

q  P2=(U,c,W,e,X,g,Y,f,W,d,V) is a path that is not simple

X U

V

W

Z

Y

a

c

b

e

d

f

g

h P2

Page 7: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 7 -

Cycles

Ø  Cycle q  circular sequence of alternating

vertices and edges

q  each edge is preceded and followed by its endpoints

Ø  Simple cycle q  cycle such that all its vertices

and edges are distinct

Ø  Examples q  C1=(V,b,X,g,Y,f,W,c,U,a,↵) is a

simple cycle

q  C2=(U,c,W,e,X,g,Y,f,W,d,V,a,↵) is a cycle that is not simple

C1

X U

V

W

Z

Y

a

c

b

e

d

f

g

h C2

Page 8: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 8 -

Subgraphs

Ø A subgraph S of a graph G is a graph such that q The vertices of S are a

subset of the vertices of G

q The edges of S are a subset of the edges of G

Ø A spanning subgraph of G is a subgraph that contains all the vertices of G

Subgraph

Spanning subgraph

Page 9: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 9 -

Connectivity Ø A graph is connected if

there is a path between every pair of vertices

Ø A connected component of a graph G is a maximal connected subgraph of G

Connected graph

Non connected graph with two connected components

Page 10: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 10 -

Trees

Tree Forest Graph with Cycle

A tree is a connected, acyclic, undirected graph.

A forest is a set of trees (not necessarily connected)

Page 11: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 11 -

Spanning Trees

Ø  A spanning tree of a connected graph is a spanning subgraph that is a tree

Ø  A spanning tree is not unique unless the graph is a tree

Ø  Spanning trees have applications to the design of communication networks

Ø  A spanning forest of a graph is a spanning subgraph that is a forest

Graph

Spanning tree

Page 12: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 12 -

Reachability in Directed Graphs Ø A node w is reachable from v if there is a directed path

originating at v and terminating at w. q  E is reachable from B

q B is not reachable from E

A

C

E

B

D

F

Page 13: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 13 -

Properties

Notation |V| number of vertices

|E| number of edges

deg(v) degree of vertex v

Property 1

Σv deg(v) = 2|E|

Proof: each edge is counted twice

Property 2 In an undirected graph with no

self-loops and no multiple edges

|E| ≤ |V| (|V| - 1)/2

Proof: each vertex has degree at most (|V| – 1)

Example n  |V| = 4 n  |E| = 6 n  deg(v) = 3

A : E ≤ V (V −1)Q: What is the bound for a digraph?

Page 14: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 14 -

Main Methods of the (Undirected) Graph ADT Ø Vertices and edges

q are positions q store elements

Ø Accessor methods q endVertices(e): an array of the

two endvertices of e q opposite(v, e): the vertex

opposite to v on e q areAdjacent(v, w): true iff v and

w are adjacent q replace(v, x): replace element at

vertex v with x q replace(e, x): replace element at

edge e with x

Ø Update methods q  insertVertex(o): insert a vertex

storing element o q  insertEdge(v, w, o): insert an

edge (v,w) storing element o q removeVertex(v): remove vertex

v (and its incident edges) q removeEdge(e): remove edge e

Ø  Iterator methods q  incidentEdges(v): edges

incident to v q vertices(): all vertices in the

graph q edges(): all edges in the graph

Page 15: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 15 -

Directed Graph ADT

Ø Additional methods: q  isDirected(e): return true if e is a directed edge q  insertDirectedEdge(v, w, o): insert and return a new directed

edge with origin v and destination w, storing element o

Page 16: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 16 -

Running Time of Graph Algorithms

Ø Running time often a function of both |V| and |E|.

Ø  For convenience, we sometimes drop the | . | in asymptotic notation, e.g. O(V+E).

Page 17: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 17 -

Implementing a Graph (Simplified)

Adjacency List Adjacency Matrix

Space complexity:

Time to find all neighbours of vertex :u

Time to determine if ( , ) : ∈u v E

( )θ +V E

(degree( ))θ u

(degree( ))θ u

2( )θ V( )θ V

(1)θ

Page 18: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 18 -

Representing Graphs (Details)

Ø  Three basic methods q Edge List

q Adjacency List

q Adjacency Matrix

Page 19: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 19 -

Edge List Structure Ø  Vertex object

q  element

q  reference to position in vertex sequence

Ø  Edge object q  element

q  origin vertex object

q  destination vertex object

q  reference to position in edge sequence

Ø  Vertex sequence q  sequence of vertex objects

Ø  Edge sequence q  sequence of edge objects

v

u

w

a c b

a

z d

u v w z

b c d

Page 20: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 20 -

Adjacency List Structure

Ø  Edge list structure Ø  Incidence sequence for

each vertex q  sequence of references to

edge objects of incident edges

Ø  Augmented edge objects q  references to associated

positions in incidence sequences of end vertices

u v

w a b

a

u v w

b

Page 21: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 21 -

Adjacency Matrix Structure Ø  Edge list structure Ø  Augmented vertex

objects q  Integer key (index)

associated with vertex

Ø  2D-array adjacency array q  Reference to edge

object for adjacent vertices

q  Null for non- nonadjacent vertices

u v

w a b

0 1 2

0 Ø Ø

1 Ø

2 Ø Ø a

u v w 0 1 2

b

Page 22: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 22 -

Asymptotic Performance (assuming collections V and E represented as

doubly-linked lists) " |V| vertices, |E| edges " no parallel edges " no self-loops " Bounds are “big-Oh”

Edge List

Adjacency List

Adjacency Matrix

Space |V|+|E| |V|+|E| |V|2

incidentEdges(v) |E| deg(v) |V| areAdjacent (v, w) |E| min(deg(v), deg(w)) 1 insertVertex(o) 1 1 |V|2

insertEdge(v, w, o) 1 1 1 removeVertex(v) |E| deg(v) |V|2 removeEdge(e) 1 1 1

Page 23: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 23 -

Graph Search Algorithms

Page 24: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 24 -

Depth First Search (DFS) Ø  Idea:

q Continue searching “deeper” into the graph, until we get stuck.

q  If all the edges leaving v have been explored we “backtrack” to the vertex from which v was discovered.

q Analogous to Euler tour for trees

Ø Used to help solve many graph problems, including q Nodes that are reachable from a specific node v q Detection of cycles

q Extraction of strongly connected components

q Topological sorts

Page 25: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 25 -

Depth-First Search Ø  The DFS algorithm is

similar to a classic strategy for exploring a maze q We mark each

intersection, corner and dead end (vertex) visited

q We mark each corridor (edge ) traversed

q We keep track of the path back to the entrance (start vertex) by means of a rope (recursion stack)

Page 26: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 26 -

Depth-First Search

Ø  Explore every edge, starting from different vertices if necessary.

Ø  As soon as vertex discovered, explore from it.

Ø  Keep track of progress by colouring vertices: q  Black: undiscovered vertices

q  Red: discovered, but not finished (still exploring from it)

q Gray: finished (found everything reachable from it).

Graph ( , ) (directed or In undirectep : )t du G V E=

Page 27: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 27 -

DFS Example on Undirected Graph

D B

A

C

E

D B

A

C

E

D B

A

C

E

discovery edge

back edge

A finished

A unexplored

unexplored edge

A being explored

Page 28: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 28 -

Example (cont.)

D B

A

C

E

D B

A

C

E

D B

A

C

E

D B

A

C

E

Page 29: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 29 -

DFS Algorithm Pattern

DFS(G)Precondition: G is a graphPostcondition: all vertices in G have been visited

for each vertex u∈V [G] color[u] = BLACK //initialize vertex

for each vertex u∈V [G] if color[u] = BLACK //as yet unexplored

DFS-Visit(u)

Page 30: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 30 -

DFS Algorithm Pattern

DFS-Visit (u)Precondition: vertex u is undiscoveredPostcondition: all vertices reachable from u have been processed

colour[u] ← REDfor each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKDFS-Visit(v)

colour [u]←GRAY

Page 31: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 31 -

Properties of DFS

Property 1 DFS-Visit(u) visits all the vertices and edges in the connected component of u

Property 2 The discovery edges labeled by DFS-Visit(u) form a spanning tree of the connected component of u

D B

A

C

E

Page 32: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 32 -

DFS Algorithm Pattern

DFS(G)Precondition: G is a graphPostcondition: all vertices in G have been visited

for each vertex u∈V [G] color[u] = BLACK //initialize vertex

for each vertex u∈V [G] if color[u] = BLACK //as yet unexplored

DFS-Visit(u)

total work = θ(V )

Page 33: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 33 -

DFS Algorithm Pattern

DFS-Visit (u)Precondition: vertex u is undiscoveredPostcondition: all vertices reachable from u have been processed

colour[u] ← REDfor each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKDFS-Visit(v)

colour [u]←GRAY

total work = |Adj[v]|

v∈V∑ = θ(E)

Thus running time = θ(V + E)(assuming adjacency list structure)

Page 34: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 34 -

Variants of Depth-First Search Ø  In addition to, or instead of labeling vertices with colours, they can be

labeled with discovery and finishing times.

Ø  ‘Time’ is an integer that is incremented whenever a vertex changes state q  from unexplored to discovered

q  from discovered to finished

Ø  These discovery and finishing times can then be used to solve other graph problems (e.g., computing strongly-connected components)

Graph ( , ) (directed or In undirectep : )t du G V E=

2 timestamps on each vertex: [ ] discovery time. [ ] finishing tim

Output

.

:

ed vf v

==

1 [ ] [ ] 2| |d v f v V≤ < ≤

Page 35: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 35 -

DFS Algorithm with Discovery and Finish Times

DFS(G)Precondition: G is a graphPostcondition: all vertices in G have been visited

for each vertex u∈V [G] color[u] = BLACK //initialize vertex

time ← 0for each vertex u∈V [G]

if color[u] = BLACK //as yet unexploredDFS-Visit(u)

Page 36: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 36 -

DFS-Visit (u)Precondition: vertex u is undiscoveredPostcondition: all vertices reachable from u have been processed

colour[u] ← REDtime ← time +1d[u]← timefor each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKDFS-Visit(v)

colour [u]←GRAYtime ← time +1f [u]← time

DFS Algorithm with Discovery and Finish Times

Page 37: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 37 -

Other Variants of Depth-First Search

Ø  The DFS Pattern can also be used to q Compute a forest of spanning trees (one for each call to DFS-

visit) encoded in a predecessor list π[u]

q Label edges in the graph according to their role in the search (see textbook) ² Tree edges, traversed to an undiscovered vertex

² Forward edges, traversed to a descendent vertex on the current spanning tree

² Back edges, traversed to an ancestor vertex on the current spanning tree

² Cross edges, traversed to a vertex that has already been discovered, but is not an ancestor or a descendent

Page 38: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 38 -

End of Lecture

Tuesday, Mar 20, 2012

Page 39: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 39 -

Example DFS on Directed Graph

Page 40: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 40 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Stack <node,# edges>

/

/

/ /

/

/

/

/

/

/

/

/

/

/

d f

Note: Stack is Last-In First-Out (LIFO)

Page 41: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 41 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Stack <node,# edges>

s,0

/

1/

/ /

/

/

/

/

/

/

/

/

/

/

Page 42: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 42 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,0 /

1/

/ 2/

/

/

/

/

/

/

/

/

/

/

Page 43: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 43 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,0 /

1/

/ 2/

3/

/

/

/

/

/

/

/

/

/

Page 44: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 44 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,1 h,0

/

1/

/ 2/

3/

/

/

/

/

/

/

/

4/

/

Page 45: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 45 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,1 h,1 k,0

/

1/

/ 2/

3/

/

/

/

/

/

/

5/

4/

/

Page 46: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 46 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,1 h,1

Tree Edge

Path on Stack /

1/

/ 2/

3/

/

/

/

/

/

/

5/6

4/

/

Page 47: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 47 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,1 /

1/

/ 2/

3/

/

/

/

/

/

/

5/6

4/7

/

Page 48: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 48 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,0

8/

1/

/ 2/

3/

/

/

/

/

/

/

5/6

4/7

/

Page 49: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 49 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,1

Cross Edge to handled node: d[h]<d[i]

8/

1/

/ 2/

3/

/

/

/

/

/

/

5/6

4/7

/

Page 50: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 50 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,2

8/

1/

/ 2/

3/

/

/

/

/

/

/

5/6

4/7

/

Page 51: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 51 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,3 l,0

8/

1/

/ 2/

3/

/

/

/

/

/

9/

5/6

4/7

/

Page 52: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 52 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,3 l,1

8/

1/

/ 2/

3/

/

/

/

/

/

9/

5/6

4/7

/

Page 53: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 53 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,3

8/

1/

/ 2/

3/

/

/

/

/

/

9/10

5/6

4/7

/

Page 54: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 54 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,0

8/

1/

/ 2/

3/

/

/

11/

/

/

9/10

5/6

4/7

/

Page 55: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 55 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1 j,0

8/

1/

/ 2/

3/

/

/

11/

12/

/

9/10

5/6

4/7

/

Page 56: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 56 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1 j,1

Back Edge to node on Stack:

8/

1/

/ 2/

3/

/

/

11/

12/

/

9/10

5/6

4/7

/

Page 57: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 57 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1 j,2 m,0

8/

1/

/ 2/

3/

/

/

11/

12/

13/

9/10

5/6

4/7

/

Page 58: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 58 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1 j,2 m,1

8/

1/

/ 2/

3/

/

/

11/

12/

13/

9/10

5/6

4/7

/

Page 59: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 59 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1 j,2

8/

1/

/ 2/

3/

/

/

11/

12/

13/14

9/10

5/6

4/7

/

Page 60: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 60 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4 g,1

8/

1/

/ 2/

3/

/

/

11/

12/15

13/14

9/10

5/6

4/7

/

Page 61: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 61 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,4

8/

1/

/ 2/

3/

/

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 62: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 62 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,5 f,0

8/

1/

/ 2/

3/

17/

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 63: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 63 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,5 f,1

8/

1/

/ 2/

3/

17/

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 64: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 64 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 i,5

8/

1/

/ 2/

3/

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 65: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 65 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,2 8/19

1/

/ 2/

3/

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 66: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 66 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 c,3 8/19

1/

/ 2/

3/

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Forward Edge

Page 67: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 67 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,1 8/19

1/

/ 2/

3/19

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 68: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 68 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

a,2 8/19

1/

/ 2/

3/19

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 69: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 69 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,1

Found Not Handled

Stack <node,# edges>

8/19

1/

/ 2/20

3/19

17/18

/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 70: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 70 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,0 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 71: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 71 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,1 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 72: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 72 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,2 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

/

Page 73: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 73 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,3 e,0 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

22/

Page 74: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 74 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,3 e,1 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

22/

Page 75: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 75 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

d,3 8/19

1/

/ 2/20

3/19

17/18

21/

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 76: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 76 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,2

Found Not Handled

Stack <node,# edges>

8/19

1/

/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 77: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 77 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,3

Found Not Handled

Stack <node,# edges>

8/19

1/

/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 78: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 78 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,4

Found Not Handled

Stack <node,# edges>

b,0 8/19

1/

25/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 79: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 79 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,4

Found Not Handled

Stack <node,# edges>

b,1 8/19

1/

25/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 80: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 80 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,4

Found Not Handled

Stack <node,# edges>

b,2 8/19

1/

25/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 81: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 81 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,4

Found Not Handled

Stack <node,# edges>

b,3 8/19

1/

25/ 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 82: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 82 -

DFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

s,4

Found Not Handled

Stack <node,# edges>

8/19

1/

25/26 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 83: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 83 -

DFS

s

Found Not Handled

Stack <node,# edges>

Finished!

Tree Edges Back Edges

a

c

h

k

f

i

l

m

j

e

b

g d

Cross Edges

8/19

1/27

25/26 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Forward Edges

Page 84: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 84 -

Classification of Edges in DFS 1.  Tree edges are edges in the depth-first forest Gπ. Edge (u, v) is a tree edge if

v was first discovered by exploring edge (u, v).

2.  Back edges are those edges (u, v) connecting a vertex u to an ancestor v in a depth-first tree.

3.  Forward edges are non-tree edges (u, v) connecting a vertex u to a descendant v in a depth-first tree.

4.  Cross edges are all other edges. They can go between vertices in the same depth-first tree, as long as one vertex is not an ancestor of the other.

s

a

c

h

k

f

i

l

m

j

e

b

g

d

8/19

1/27

25/26 2/20

3/19

17/18

21/24

11/16

12/15

13/14

9/10

5/6

4/7

22/23

Page 85: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 85 -

Classification of Edges in DFS 1.  Tree edges: Edge (u, v) is a tree edge if v was black when (u, v) traversed.

2.  Back edges: (u, v) is a back edge if v was red when (u, v) traversed.

3.  Forward edges: (u, v) is a forward edge if v was gray when (u, v) traversed and d[v] > d[u].

4.  Cross edges (u,v) is a cross edge if v was gray when (u, v) traversed and d[v] < d[u].

s

a

c

h

k

f

i

l

m

j

e

b

g d

8/19

1/27 25

/26

2/20

3/19 17

/18

21/24

11/16 12

/15

13/14 9/

10

5/6

4/7

22/23

Classifying edges can help to identify properties of the graph, e.g., a graph is acyclic iff DFS yields no back edges.

Page 86: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 86 -

DFS on Undirected Graphs

Ø  In a depth-first search of an undirected graph, every edge is either a tree edge or a back edge.

Ø Why?

Page 87: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 87 -

DFS on Undirected Graphs Ø  Suppose that (u,v) is a forward edge or a

cross edge in a DFS of an undirected graph.

Ø  (u,v) is a forward edge or a cross edge when v is already handled (grey) when accessed from u.

Ø  This means that all vertices reachable from v have been explored.

Ø  Since we are currently handling u, u must be red.

Ø  Clearly v is reachable from u.

Ø  Since the graph is undirected, u must also be reachable from v.

Ø  Thus u must already have been handled: u must be grey.

Ø  Contradiction!

u

v

Page 88: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 88 -

Applications of Depth-First Search

Page 89: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 89 -

DFS Application 1: Path Finding

DFS-Path (u,z)Precondition: u and z are vertices in a graphPostcondition: a path from u to z is returned, if one exists

colour[u] ← REDpush u onto stackif u = z

return list of elements on stackfor each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKDFS-Path(v,z)

colour [u]←GRAYpop u from stack

Ø  The DFS pattern can be used to find a path between two given vertices u and z, if one exists

Ø  We use a stack to keep track of the current path

Ø  If the destination vertex z is encountered, we return the path as the contents of the stack

Page 90: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 90 -

DFS Application 2: Cycle Finding

DFS-Cycle (u)Precondition: u is a vertex in a graph GPostcondition: a cycle reachable from u is returned, of one exists

colour[u] ← REDpush u onto stackfor each v ∈Adj[u] //explore edge (u,v)

if color[v] = RED //back edgereturn top of stack down to v

else if color[v ] = BLACKDFS-Cycle(v)

colour [u]←GRAYpop u from stack

Ø  The DFS pattern can be used to find a cycle in a graph, if one exists Ø  We use a stack to keep track of the current path

Ø  If a back edge is encountered, we return the cycle as the contents of the stack

Page 91: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 91 -

Why must DFS on a graph with a cycle generate a back edge?

Ø  Suppose that vertex s is in a connected component S that contains a cycle C.

Ø  Since all vertices in S are reachable from s, they will all be visited by a DFS from s.

Ø  Let v be the first vertex in C reached by a DFS from s.

Ø  There are two vertices u and w adjacent to v on the cycle C.

Ø  wlog, suppose u is explored first.

Ø  Since w is reachable from u, w will eventually be discovered.

Ø  When exploring w’s adjacency list, the back-edge (w, s) will be discovered.

s

v

u w

Page 92: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 92 -

DFS Application 3. Topological Sorting (e.g., putting tasks in linear order)

Note: The textbook also describes a breadth-first TopologicalSort algorithm (Section 13.4.3)

Page 93: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 93 -

DAGs and Topological Ordering Ø  A directed acyclic graph (DAG) is a

digraph that has no directed cycles

Ø  A topological ordering of a digraph is a numbering

v1 , …, vn

of the vertices such that for every edge (vi , vj), we have i < j

Ø  Example: in a task scheduling digraph, a topological ordering is a task sequence that satisfies the precedence constraints

Theorem

A digraph admits a topological ordering if and only if it is a DAG

B

A

D

C

E

DAG G

B

A

D

C

E

Topological ordering of G

v1

v2

v3

v4 v5

Page 94: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 94 -

Topological (Linear) Order

underwear

pants

socks

shoes

underwear pants socks shoes

socks underwear pants shoes

Page 95: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 95 -

Topological (Linear) Order

underwear

pants

socks

shoes

socks shoes pants underwear

Invalid Order

Page 96: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 96 -

Ø Note: This algorithm is different than the one in Goodrich-Tamassia

Algorithm for Topological Sorting

Method TopologicalSort(G) H G // Temporary copy of G n G.numVertices() while H is not empty do

Let v be a vertex with no outgoing edges Label v n n n - 1 Remove v from H //as well as edges involving v

Page 97: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 97 -

Linear Order

a

b h c i d j e k

f l

g

Pre-Condition: A Directed Acyclic Graph (DAG)

Post-Condition: Find one valid linear order

Algorithm: • Find a terminal node (sink). • Put it last in sequence. • Delete from graph & repeat

….. l Can we do better? Running time: i

i=1

V

∑ = O V2( )

O(|V|)

Page 98: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 98 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

d e g f

l

….. f

Page 99: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 99 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

d e g l

l When node is popped off stack, insert at front of linearly-ordered “to do” list.

….. f Linear Order:

Page 100: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 100 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

d e g

l

l,f Linear Order:

Page 101: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 101 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

d e l

g,l,f Linear Order:

Page 102: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 102 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

d l

e,g,l,f Linear Order:

Page 103: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 103 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

l

d,e,g,l,f Linear Order:

Page 104: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 104 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

i l

d,e,g,l,f

j k

Linear Order:

Page 105: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 105 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

i l

k,d,e,g,l,f

j

Linear Order:

Page 106: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 106 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

i l

j,k,d,e,g,l,f Linear Order:

Page 107: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 107 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

l

i,j,k,d,e,g,l,f Linear Order:

Page 108: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 108 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

b l c

i,j,k,d,e,g,l,f Linear Order:

Page 109: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 109 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

b l

c,i,j,k,d,e,g,l,f Linear Order:

Page 110: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 110 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

l

b,c,i,j,k,d,e,g,l,f Linear Order:

Page 111: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 111 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

a l h

b,c,i,j,k,d,e,g,l,f Linear Order:

Page 112: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 112 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

a l

h,b,c,i,j,k,d,e,g,l,f Linear Order:

Page 113: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 113 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

l

a,h,b,c,i,j,k,d,e,g,l,f Done! Linear Order:

Page 114: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 114 -

DFS Algorithm for Topologial Sort

Ø Makes sense. But how do we prove that it works?

Page 115: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 115 -

Linear Order Found Not Handled

Stack Proof: • Case 1: u goes on stack first before v.

• Because of edge, v goes on before u comes off • v comes off before u comes off • v goes after u in order. J

u v v… u…

Consider each edge

v

u

Page 116: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 116 -

Linear Order Found Not Handled

Stack Proof: • Case 1: u goes on stack first before v. • Case 2: v goes on stack first before u. v comes off before u goes on.

• v goes after u in order. J

u v v… u…

Consider each edge

u

… v

Page 117: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 117 -

Linear Order Found Not Handled

Stack Proof: • Case 1: u goes on stack first before v. • Case 2: v goes on stack first before u. v comes off before u goes on. Case 3: v goes on stack first before u. u goes on before v comes off.

• Panic: u goes after v in order. L • Cycle means linear order is impossible J

u v u… v…

Consider each edge

u

v

The nodes in the stack form a path starting at s.

Page 118: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 118 -

Linear Order

a

b h c i d j e k

f

g

Found Not Handled

Stack

Alg: DFS

l

a,h,b,c,i,j,k,d,e,g,l,f Done! Linear Order:

ΘAnalysis: (V+E)

Page 119: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 119 -

End of Lecture

March 22, 2012

Page 120: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 120 -

DFS Application 3. Topological Sort

Topological-Sort(G)Precondition: G is a graphPostcondition: all vertices in G have been pushed ontostack in reverse linear order

for each vertex u∈V [G] color[u] = BLACK //initialize vertex

for each vertex u∈V [G] if color[u] = BLACK //as yet unexplored

Topological-Sort-Visit(u)

Page 121: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 121 -

DFS Application 3. Topological Sort

Topological-Sort-Visit (u)Precondition: vertex u is undiscoveredPostcondition: u and all vertices reachable from uhave been pushed onto stack in reverse linear order

colour[u] ← REDfor each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKTopological-Sort-Visit(v)

push u onto stackcolour [u]←GRAY

Page 122: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 122 -

Breadth-First Search

Page 123: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 123 -

Breadth-First Search Ø  Breadth-first search (BFS) is a general technique for traversing a graph Ø  A BFS traversal of a graph G

q  Visits all the vertices and edges of G

q  Determines whether G is connected

q  Computes the connected components of G

q  Computes a spanning forest of G

Ø  BFS on a graph with |V| vertices and |E| edges takes O(|V|+|E|) time

Ø  BFS can be further extended to solve other graph problems q  Cycle detection

q  Find and report a path with the minimum number of edges between two given vertices

Page 124: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 124 -

BFS Algorithm Pattern

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: all vertices in G reachable from s have been visited

for each vertex u∈V [G] color[u] ← BLACK //initialize vertex

colour[s] ← REDQ.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKcolour[v]←REDQ.enqueue(v)

colour [u]←GRAY

Page 125: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 125 -

BFS is a Level-Order Traversal

Ø Notice that in BFS exploration takes place on a wavefront consisting of nodes that are all the same distance from the source s.

Ø We can label these successive wavefronts by their distance: L0, L1, …

Page 126: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 126 -

BFS Example

C B

A

E

D

discovery edge

cross edge

A discovered (on Queue)

A undiscovered

unexplored edge

L0

L1

F

C B

A

E

D L1

F

C B

A

E

D

L0

L1

F

A finished

Page 127: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 127 -

BFS Example (cont.)

C B

A

E

D

L0

L1

F

C B

A

E

D

L0

L1

F L2

C B

A

E

D

L0

L1

F L2

C B

A

E

D

L0

L1

F L2

Page 128: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 128 -

BFS Example (cont.)

C B

A

E

D

L0

L1

F L2

C B

A

E

D

L0

L1

F L2

C B

A

E

D

L0

L1

F L2

Page 129: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 129 -

Properties Notation

Gs: connected component of s Property 1

BFS(G, s) visits all the vertices and edges of Gs

Property 2 The discovery edges labeled by BFS(G, s) form a spanning tree Ts of Gs

Property 3 For each vertex v in Li q  The path of Ts from s to v has i

edges q  Every path from s to v in Gs has at

least i edges

C B

A

E

D

L0

L1

F L2

C B

A

E

D

F

Page 130: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 130 -

Analysis

Ø Setting/getting a vertex/edge label takes O(1) time

Ø Each vertex is labeled three times q once as BLACK (undiscovered)

q once as RED (discovered, on queue)

q once as GRAY (finished)

Ø Each edge is considered twice (for an undirected graph)

Ø Each vertex is placed on the queue once

Ø  Thus BFS runs in O(|V|+|E|) time provided the graph is represented by an adjacency list structure

Page 131: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 131 -

Applications

Ø BFS traversal can be specialized to solve the following problems in O(|V|+|E|) time: q Compute the connected components of G

q Compute a spanning forest of G

q Find a simple cycle in G, or report that G is a forest

q Given two vertices of G, find a path in G between them with the minimum number of edges, or report that no such path exists

Page 132: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 132 -

Application: Shortest Paths on an Unweighted Graph

Ø Goal: To recover the shortest paths from a source node s to all other reachable nodes v in a graph. q The length of each path and the paths themselves are returned.

Ø Notes: q There are an exponential number of possible paths

q Analogous to level order traversal for graphs

q This problem is harder for general graphs than trees because of cycles!

s

?

Page 133: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 133 -

Breadth-First Search

Ø  Idea: send out search ‘wave’ from s.

Ø  Keep track of progress by colouring vertices: q  Undiscovered vertices are coloured black

q  Just discovered vertices (on the wavefront) are coloured red.

q  Previously discovered vertices (behind wavefront) are coloured grey.

Graph ( , ) (directed or undirected) and sourceInput: vertex .G V E s V= ∈

[ ] shortest path distance ( , ) from to , . [ ] such that ( , ) is las

Outpu

t edg

t:

e on shortest path from a to

.d v s v s v v V

v u u v s vδ

π= ∀ ∈=

Page 134: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 134 -

BFS Algorithm with Distances and Predecessors

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: d[u] = shortest distance δ [u] and π [u] = predecessor of u on shortest path from s to each vertex u in G

for each vertex u∈V [G]d[u]←∞π [u]← null color[u] = BLACK //initialize vertex

colour[s] ← REDd[s]← 0 Q.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKcolour[v]←REDd[v ]← d[u]+1 π [v ]← uQ.enqueue(v)

colour [u]←GRAY

Page 135: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 135 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

First-In First-Out (FIFO) queue stores ‘just discovered’ vertices

Page 136: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 136 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

s

d=0

d=0

Page 137: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 137 -

BFS Found Not Handled

Queue

d=0 a

b g d

d=1

s

a

c

h

k

f

i

l

m

j

e

b

g d

d=0 d=1

Page 138: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 138 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

a

b g d

d=0 d=1

d=1

Page 139: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 139 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

b g d

c f

d=0 d=1

d=2

d=1

d=2

Page 140: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 140 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

b g

c f m e

d=0 d=1

d=2

d=1

d=2

Page 141: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 141 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue d=0

d=1

d=2

b

j

c f m e

d=1

d=2

Page 142: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 142 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue d=0

d=1

d=2

j

c f m e

d=1

d=2

Page 143: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 143 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

c f m e j

d=0 d=1

d=2

d=2

Page 144: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 144 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

f m e j h i

d=0 d=1

d=2

d=3

d=2

d=3

Page 145: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 145 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

m e j h i

d=0 d=1

d=2

d=3

d=2

d=3

Page 146: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 146 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

e j h i l

d=0 d=1

d=2

d=3

d=2

d=3

Page 147: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 147 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

j h i l

d=0 d=1

d=2

d=3

d=2

d=3

Page 148: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 148 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

h i l

d=0 d=1

d=2

d=3

d=2

d=3

Page 149: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 149 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

h

d=0 d=1

d=2

d=3

i l

d=3

Page 150: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 150 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

i l k

d=0 d=1

d=2

d=3 d=4

d=3

d=4

Page 151: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 151 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

l k

d=0 d=1

d=2

d=3 d=4

d=3

d=4

Page 152: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 152 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

k

d=0 d=1

d=2

d=3 d=4

d=3

d=4

Page 153: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 153 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue

k

d=0 d=1

d=2

d=3 d=4

d=4

Page 154: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 154 -

BFS

s

a

c

h

k

f

i

l

m

j

e

b

g d

Found Not Handled

Queue d=0

d=1

d=2

d=3 d=4

d=4 d=5

Page 155: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 155 -

Breadth-First Search Algorithm: Properties

Ø  Q is a FIFO queue.

Ø  Each vertex assigned finite d value at most once.

Ø  Q contains vertices with d values {i, …, i, i+1, …, i+1}

Ø  d values assigned are monotonically increasing over time.

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: d[u] = shortest distance δ [u] and π [u] = predecessor of u on shortest paths from s to each vertex u in G

for each vertex u∈V [G]d[u]←∞π [u]← null color[u] = BLACK //initialize vertex

colour[s] ← REDd[s]← 0 Q.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKcolour[v]←REDd[v ]← d[u]+1 π [v ]← uQ.enqueue(v)

colour [u]←GRAY

Page 156: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 156 -

Breadth-First-Search is Greedy

Ø Vertices are handled: q  in order of their discovery (FIFO queue)

q Smallest d values first

Page 157: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 157 -

Basic Steps:

s u

The shortest path to u has length d

v

& there is an edge from u to v

There is a path to v with length d+1.

Correctness

d

Page 158: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 158 -

Correctness: Basic Intuition

Ø When we discover v, how do we know there is not a shorter path to v? q Because if there was, we would already have discovered it!

s u v d

Page 159: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 159 -

Correctness: More Complete Explanation

Ø Vertices are discovered in order of their distance from the source vertex s.

Ø Suppose that at time t1 we have discovered the set Vd of all vertices that are a distance of d from s.

Ø Each vertex in the set Vd+1 of all vertices a distance of d+1 from s must be adjacent to a vertex in Vd

Ø  Thus we can correctly label these vertices by visiting all vertices in the adjacency lists of vertices in Vd.

s u v d

Page 160: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 160 -

Inductive Proof of BFS

Suppose at step i that the set of nodes Si with distance δ(v) ≤ di have been

discovered and their distance values d[v ] have been correctly assigned.

Any node v with δ(v) = di +1 must be adjacent to Si .

Any node v adjacent to Si but not in Si must have δ(v) = di +1.

At step i +1, all nodes on the queue with d values of di are dequeued and processed.

Thus after step i +1, all nodes v with distance δ(v) ≤ di +1 have been discovered

and their distance values d[v ] have been correctly assigned.

Further suppose that the queue contains only nodes in Si with d values of di .

In so doing, all nodes adjacent to Si are discovered and assigned d values of di +1.

Furthermore, the queue contains only nodes in Si with d values of di +1.

Page 161: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 161 -

Correctness: Formal Proof

Graph ( , ) (directed or undirected) and sourceInput: vertex .G V E s V= ∈

Output: d[v] = distance δ(v) from s to v, ∀v ∈V . π[v] = u such that (u,v) is last edge on shortest path from s to v .

1. [ ] ( , )d v s v v Vδ≥ ∀ ∈

2. [ ] ( , ) d v s v v Vδ> ∀ ∈/

Two-step proof:

On exit:

Page 162: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 162 -

δ≥ ∀ ∈Claim 1. is never too small: [ ] ( , )d d v s v v V

Proof: There exists a path from s to v of length ≤ d[v ].

By Induction:Suppose it is true for all vertices thus far discovered ( an grre d d ey).

is discovered from some adjacent vertex being handled.uv

→ = +[ ] [ ] 1d v d uδ≥ +( , ) 1usδ≥ ( , )s v u v

s

since each vertex is assigned a value exactly once, it follows that o [ ]n exit, ( ., )d v s v

vv Vd

δ≥ ∀ ∈

Page 163: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 163 -

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: d[u] = shortest distance δ [u] and π [u] = predecessor of u on shortest paths from s to each vertex u in G

for each vertex u∈V [G]d[u]←∞π [u]← null color[u] = BLACK //initialize vertex

colour[s] ← REDd[s]← 0 Q.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKcolour[v]←REDd[v ]← d[u]+1 π [v ]← uQ.enqueue(v)

colour [u]←GRAY

<LI>: [ ] ( , ) 'disco rvered' ( o gr )eyred d v s v v Vδ← ≥ ∀ ∈

( , ) 1s uδ≥ + ( , )s vδ≥

δ≥ ∀ ∈Claim 1. is never too small: [ ] ( , )d d v s v v V Proof: There exists a path from s to v of length ≤ d[v ].

s u v

Page 164: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 164 -

δ≤ ∀ ∈Claim 2. is never too big: [ ] ( , ) d d v s v v VProof by contradiction:

δSuppose one or more vertices receive a value greater than .d

δLet be the vertex with minimum ( , ) that receives such a value.s dv v

Let be 's predecessor on a shortest path from to .u sv v

s u v

Suppose that is discovered and assigned this d value when vertex is dequeued.v x

= −[ ] [ ] 1d x d v

δ= −[ ] ( , ) 1d s vu

δ <( , ) [ ]vs d v

vertices are dequeued in increasing order of Reca v .ll: alued→ u was dequeued before x.

δ→ = + =[ ] [ ] 1 ( , )dvd u s v

x δ→ − < −( , ) 1 [ ] 1v d vs

→ <[ ] [ ]d u d x

Then

Contradiction!

Page 165: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 165 -

Correctness

δ≥ ∀ ∈Claim 1. is never too small: [ ] ( , )d d v s v v V

δ≤ ∀ ∈Claim 2. is never too big: [ ] ( , ) d d v s v v V

δ⇒ = ∀ ∈ is just right: [ ] ( , ) d d v s v v V

Page 166: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 166 -

Progress? Ø  On every iteration one vertex is processed (turns gray).

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: d[u] = shortest distance δ [u] and π [u] = predecessor of u on shortest paths from s to each vertex u in G

for each vertex u∈V [G]d[u]←∞π [u]← null color[u] = BLACK //initialize vertex

colour[s] ← REDd[s]← 0 Q.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if color[v ] = BLACKcolour[v]←REDd[v ]← d[u]+1 π [v ]← uQ.enqueue(v)

colour [u]←GRAY

Page 167: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 167 -

End of Lecture

March 27, 2012

Page 168: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 168 -

Ø  The shortest path problem has the optimal substructure property: q  Every subpath of a shortest path is a shortest path.

Ø  The optimal substructure property q  is a hallmark of both greedy and dynamic programming algorithms.

q  allows us to compute both shortest path distance and the shortest paths themselves by storing only one d value and one predecessor value per vertex.

Optimal Substructure Property

u v s

shortest path

shortest path shortest path

How would we prove this?

Page 169: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 169 -

Recovering the Shortest Path For each node v, store predecessor of v in π(v).

s u v

Predecessor of v is

π(v)

π(v) = u.

Page 170: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 170 -

Recovering the Shortest Path

Precondition: and are vertices of graph Postcondition: the vertices on the shortest path from to have been prin

P

if then

RINT-PATH( , , )

pr

print

ted in o

else

intif

rd

then [ ] I "

e

L

r

N

s v Gs v

s

v

v

ss

G

v

π

=

=

elseno path from" "to" "exists"

PRINT-PATH( , , [ ])print

s v

G s vv

π

Page 171: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 171 -

BFS Algorithm without Colours

BFS(G,s)Precondition: G is a graph, s is a vertex in GPostcondition: predecessors π [u] and shortest distance d[u] from s to each vertex u in G has been computed

for each vertex u∈V [G]d[u]←∞π [u]← null

d[s]← 0 Q.enqueue(s)while Q ≠ ∅

u← Q.dequeue()for each v ∈Adj[u] //explore edge (u,v)

if d[v ] = ∞d[v ]← d[u]+1 π [v ]← uQ.enqueue(v)

Page 172: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 172 -

End of Lecture &

End of Course

March 29, 2012

Page 173: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 173 -

Single-Source (Weighted) Shortest Paths

Page 174: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 174 -

3

Shortest Path on Weighted Graphs

Ø BFS finds the shortest paths from a source node s to every vertex v in the graph.

Ø Here, the length of a path is simply the number of edges on the path.

Ø But what if edges have different ‘costs’?

s

v

( , ) 3s vδ = ( , ) 12s vδ =

2 s

v 2

5 1 7

Page 175: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 175 -

Weighted Graphs

Ø  In a weighted graph, each edge has an associated numerical value, called the weight of the edge

Ø  Edge weights may represent, distances, costs, etc.

Ø  Example: q  In a flight route graph, the weight of an edge represents the

distance in miles between the endpoint airports

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 176: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 176 -

Shortest Paths Ø  Given a weighted graph and two vertices u and v, we want to find

a path of minimum total weight between u and v. q  Length of a path is the sum of the weights of its edges.

Ø  Example: q  Shortest path between Providence and Honolulu

Ø  Applications q  Internet packet routing

q  Flight reservations

q  Driving directions ORD

PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 177: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 177 -

Shortest Path: Notation

Ø  Input:

0 1 11

Weight of path , ,..., ( , )k

i iki

p v v v w v v−=

=< > =∑Shortest-path weight from to :u v

δ (u,v ) = min{w(p) : u →p

→v } if ∃ a path u →→v,∞ otherwise.

⎧⎨⎪

⎩⎪

Shortest path from to is any path such that ( ) ( , ).u v p w p u vδ=

Directed Graph ( , )G V E=

Edge weights w :E →

Page 178: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 178 -

Shortest Path Properties Property 1 (Optimal Substructure):

A subpath of a shortest path is itself a shortest path

Property 2 (Shortest Path Tree): There is a tree of shortest paths from a start vertex to all the other vertices

Example: Tree of shortest paths from Providence

ORD PVD

MIA DFW

SFO

LAX

LGA

HNL

849

802

1843

1120 1233

337 2555

1205

Page 179: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 179 -

Shortest path trees are not necessarily unique

Single-source shortest path search induces a search tree rooted at s.

This tree, and hence the paths themselves, are not necessarily unique.

Page 180: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 180 -

Optimal substructure: Proof Ø  Lemma: Any subpath of a shortest path is a shortest path

Ø  Proof: Cut and paste.

Now suppose there exists a shorter path x →′pxy

→ y .

Then ( ) ( ).xy xyw p w p′ <

Construct p :′

Then ( ) ( ) ( ) ( )ux xy yvw p w p w p w p′ ′= + + ( ) ( ) ( )ux xy yvw p w p w p< + + ( ).w p=

So p wasn't a shortest path after all!

Suppose this path is a shortest path from to .p u v

Then ( , ) ( ) ( ) ( ) ( ).ux xy yvu v w p w p w p w pδ = = + +

Page 181: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 181 -

Shortest path variants

Ø Single-source shortest-paths problem: – the shortest path from s to each vertex v.

Ø Single-destination shortest-paths problem: Find a shortest path to a given destination vertex t from each vertex v.

Ø Single-pair shortest-path problem: Find a shortest path from u to v for given vertices u and v.

Ø All-pairs shortest-paths problem: Find a shortest path from u to v for every pair of vertices u and v.

Page 182: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 182 -

Negative-weight edges Ø OK, as long as no negative-weight cycles are reachable

from the source. q  If we have a negative-weight cycle, we can just keep going

around it, and get w(s, v) = −∞ for all v on the cycle.

q But OK if the negative-weight cycle is not reachable from the source.

q Some algorithms work only if there are no negative-weight edges in the graph.

Page 183: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 183 -

Cycles

Ø Shortest paths can’t contain cycles:

q Already ruled out negative-weight cycles.

q Positive-weight: we can get a shorter path by omitting the cycle.

q Zero-weight: no reason to use them à assume that our solutions won’t use them.

Page 184: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 184 -

Shortest-Path Example: Single-Source

Page 185: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 185 -

Output of a single-source shortest-path algorithm

Ø For each vertex v in V:

q d[v] = δ(s, v).

² Initially, d[v]=∞.

² Reduce as algorithm progresses. But always maintain d[v] ≥ δ(s, v).

² Call d[v] a shortest-path estimate.

q π[v] = predecessor of v on a shortest path from s.

² If no predecessor, π[v] = NIL.

² π induces a tree — shortest-path tree.

Page 186: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 186 -

Initialization

Ø All shortest-path algorithms start with the same initialization: INIT-SINGLE-SOURCE(V, s)

for each v in V do d[v]←∞

π[v] ← NIL

d[s] ← 0

Page 187: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 187 -

Relaxing an edge

Ø  Can we improve shortest-path estimate for v by first going to u and then following edge (u,v)?

RELAX(u, v, w)

if d[v] > d[u] + w(u, v) then

d[v] ← d[u] + w(u, v)

π[v]← u

Page 188: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 188 -

General single-source shortest-path strategy

1.  Start by calling INIT-SINGLE-SOURCE

2.  Relax Edges

Algorithms differ in the order in which edges are taken and how many times each edge is relaxed.

Page 189: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 189 -

Example 1. Single-Source Shortest Path on a Directed Acyclic Graph

Ø Basic Idea: topologically sort nodes and relax in linear order.

Ø Efficient, since δ[u] (shortest distance to u) has already been computed when edge (u,v) is relaxed.

Ø  Thus we only relax each edge once, and never have to backtrack.

Page 190: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 190 -

Example: Single-source shortest paths in a directed acyclic graph (DAG)

Ø  Since graph is a DAG, we are guaranteed no negative-weight cycles.

Ø  Thus algorithm can handle negative edges

Page 191: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 191 -

Algorithm

Time: ( )V EΘ +

Page 192: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 192 -

Example

Page 193: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 193 -

Example

Page 194: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 194 -

Example

Page 195: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 195 -

Example

Page 196: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 196 -

Example

Page 197: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 197 -

Example

Page 198: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 198 -

Correctness: Path relaxation property

0 1 0Let , , . . . , be a shortest path from .k kp v v v s v to v=< > =

0 1 1 2 -1If we relax, in order, ( , ), ( , ), . . . , ( , ), k kv v v v v v

even intermixed with other relaxations,then [ ] ( , ).k kd v s vδ=

Page 199: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 199 -

Correctness of DAG Shortest Path Algorithm

Ø Because we process vertices in topologically sorted order, edges of any path are relaxed in order of appearance in the path.

q àEdges on any shortest path are relaxed in order.

q àBy path-relaxation property, correct.

Page 200: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 200 -

Example 2. Single-Source Shortest Path on a General Graph (May Contain Cycles)

Ø  This is fundamentally harder, because the first paths we discover may not be the shortest (not monotonic).

Page 201: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 201 -

Dijkstra’s algorithm (E. Dijkstra,1959) Ø Applies to general, weighted, directed or

undirected graph (may contain cycles).

Ø But weights must be non-negative. (But they can be 0!)

Ø Essentially a weighted version of BFS. q  Instead of a FIFO queue, uses a priority queue.

q Keys are shortest-path weights (d[v]).

Ø Maintain 2 sets of vertices: q S = vertices whose final shortest-path weights are

determined.

q Q = priority queue = V-S. Edsger Dijkstra

Page 202: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 202 -

Dijkstra’s Algorithm: Operation

Ø  We grow a “cloud” S of vertices, beginning with s and eventually covering all the vertices

Ø  We store with each vertex v a label d(v) representing the distance of v from s in the subgraph consisting of the cloud S and its adjacent vertices

Ø  At each step q We add to the cloud S the vertex u outside the cloud with the smallest

distance label, d(u)

q We update the labels of the vertices adjacent to u

S

7

9

∞11

1

4

s

Page 203: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 203 -

Dijkstra’s algorithm

n  Dijkstra’s algorithm can be viewed as greedy, since it always chooses the “lightest” vertex in V − S to add to S.

Page 204: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 204 -

Dijkstra’s algorithm: Analysis

n  Analysis: n  Using minheap, queue operations takes O(logV) time

( )O V

(log )O V ( ) iterationsO V×

(log )O V ( ) iterationsO E×

Running Time is ( log )O E V→

Page 205: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 205 -

Example

White ⇔ Vertex ∈Q =V - SGrey ⇔ Vertex = min(Q)

Black ⇔ Vertex ∈S, Off Queue

Key:

Page 206: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 206 -

Example

Page 207: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 207 -

Example

Page 208: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 208 -

Example

Page 209: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 209 -

Example

Page 210: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 210 -

Example

Page 211: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 211 -

Djikstra’s Algorithm Cannot Handle Negative Edges

3

2

-2

s

1

x y z

Page 212: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 212 -

Correctness of Dijkstra’s algorithm

Ø  Loop invariant: d[v] = δ(s, v) for all v in S. q  Initialization: Initially, S is empty, so trivially true.

q  Termination: At end, Q is empty àS = V à d[v] = δ(s, v) for all v in V.

q Maintenance: ² Need to show that

v  d[u] = δ(s, u) when u is added to S in each iteration. v  d[u] does not change once u is added to S.

Page 213: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 213 -

Correctness of Dijkstra’s Algorithm: Upper Bound Property Ø  Upper Bound Property:

1. [ ] ( , )d v s v v Vδ≥ ∀ ∈

•  Proof: By induction.

[ ] ( , ) immediately after initialization, since[ ] 0 ( ,

Base Cas :

[ ]

e)

d v s v v Vd s s sd v v s

δδ

≥ ∀ ∈= == ∞∀ ≠

δ≥ ∀ ∈SupposeInductive Step:

[ ] ( , )d x s x x V

( , ) ( , )s u w u vδ≥ +

( , )s vδ≥

If [ ] changes, then [ ] [ ] ( , )d v d v d u w u v= +

Suppose we relax edge ( , ).u v

2. Once [ ] ( , ), it doesn't changed v s vδ=

A valid path from s to v!

Page 214: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 214 -

Correctness of Dijkstra’s Algorithm When is added to Clai , [ ] (m ): ,u S d u s uδ=

Let be first vertex in on shortest path to y V S u−Let be the predecessor of on the shortest path to x y u

[ ] ( , ) when is added toCl : .aim d y s y u Sδ=Proof:

[ ] ( , ), since x .d x s x Sδ= ∈( , ) was relaxed when was added to x y x S [ ] ( , ) ( , ) ( , )d y s x w x y s yδ δ→ = + =

Handled

Let be the first vertex added to such thaProof by Con

t [ ] ( , ) when is added.tradiction: u S

d u s u uδ≠

Optimal substructure property!

Page 215: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 215 -

Correctness of Dijkstra’s Algorithm Thus [ ] ( , ) when is added to .d y s y u Sδ=

[ ] ( , ) ( , ) [ ] (upper bound property)d y s y s u d uδ δ→ = ≤ ≤

But [ ] [ ] when added to d u d y u S≤

Thus [ ] ( , ) ( , ) [ ]!d y s y s u d uδ δ= = =

Thus when is added to , [ ] ( , )u S d u s uδ=

There is a shortest path to such that the predecessor of [ ]Conse

whequences

n is added to .:

u u u S u Sπ ∈

π [ ]u

=2The path through can only be a shortest path if [ ] 0.y w p

Handled

Page 216: Graphs - York University Gra… · Graphs ! A graph is a pair (V, E), where " V is a set of nodes, called vertices " E is a collection of pairs of vertices, called edges " Vertices

Last Updated: 12-03-22 10:12 AM CSE 2011 Prof. J. Elder - 216 -

Correctness of Dijkstra’s algorithm

Ø  Loop invariant: d[v] = δ(s, v) for all v in S. q Maintenance:

² Need to show that v  d[u] = δ(s, u) when u is added to S in each iteration.

v  d[u] does not change once u is added to S.

δ=Thus once [ ] ( , ), it will not be changed.d v s v

can only decRelax(u rease ],v,w) [ .d vδ≥upper bound prBy the , operty [ ] ( , ).d v s v

ü ?