0% found this document useful (0 votes)
15 views

Graphs - Introduction, Representation, Search

Graphs are a generalization of trees that allow for multiple connections between vertices. A graph G consists of a set of vertices V and a set of edges E, which are pairs of vertices. Graphs can be undirected or directed. Common graph representations include adjacency lists and matrices. Graph search algorithms like breadth-first search (BFS) and depth-first search (DFS) are used to systematically explore a graph. BFS explores all vertices at distance k from a source before exploring vertices at distance k+1, producing a breadth-first tree.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Graphs - Introduction, Representation, Search

Graphs are a generalization of trees that allow for multiple connections between vertices. A graph G consists of a set of vertices V and a set of edges E, which are pairs of vertices. Graphs can be undirected or directed. Common graph representations include adjacency lists and matrices. Graph search algorithms like breadth-first search (BFS) and depth-first search (DFS) are used to systematically explore a graph. BFS explores all vertices at distance k from a source before exploring vertices at distance k+1, producing a breadth-first tree.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 112

Graphs

Introduction
• Generalization of a tree.
• Collection of vertices (or nodes) and connections
between them.
• No restriction on
– The number of vertices.
– The number of connections between the two
vertices.
• Have several real life applications.
Definition

• A graph G = (V,E) consists of a Undirected Graph

– Finite, non-empty set V of vertices and Directed Graph

– Possibly empty set E of edges. A binary relation on V.


• |V| denotes number of vertices.
• |E| denotes number of edges.
• An edge (or arc) is a pair of vertices (vi,vj) from V.
– Simple or undirected graph (vi,vj) = (vj,vi).
– Digraph or directed graph (vi,vj) ≠ (vj,vi).
• An edge has an associated weight or cost as well.
Contd…

Weighted Weighted
Undirected Graph Directed Graph

Complete Graph Cycle Graph

Undirected Graph Directed Graph Multigraph


Terminology (Undirected)
• Two vertices u and v are adjacent if {u,v} is an edge
in G.
– Edge {u,v} is incident with vertex u and vertex v.
• Degree of a vertex is the number of edges incident
with it.
– A self-loop counts twice (both ends count).
Terminology (Directed)
• Vertex u is adjacent to vertex v if (u,v) is an edge in
G and vertex u is the initial vertex of (u,v).
• Vertex v is adjacent from vertex u, if vertex v is the
terminal (or end) vertex of (u,v).
• A vertex has two types of degree.
– in-degree: The number of
edges with the vertex as
the terminal vertex.
– out-degree: The number
of edges with the vertex
as the initial vertex
Some Definitions
• Walk or Path
– An alternating sequence of vertices and connecting
edges.
– Can end on the same vertex on which it began or on a
different vertex.
– Can travel over any edge and any vertex any number of
times.
• Path or Simple Path
– A walk that does not include any
vertex twice, except that its first
and last vertices might be the same.
Representations of Graphs
Representations of Graphs
• Two standard ways are:
– Collection of adjacency lists.
– Adjacency matrix.
• Applies to both directed and undirected graphs.
• Adjacency-list representation provides a compact
way to represent sparse graphs (|E| << |V|2).
– Usually the method of choice.
• Adjacency-matrix representation is preferred when
the graph is dense (|E| ≈ |V|2).
Representation – I
• Adjacency matrix
– Adjacency matrix for a graph G = (V, E) is a two
dimensional matrix of size |V| x |V| such that
each entry of this matrix
a[i][j] = 1 (or weight), if an edge (vi,vj) exists.
0, otherwise.

– For an undirected graph, it is always a symmetric


matrix, as (vi, vj) = (vj, vi).
Adjacency matrix
• Undirected.
– V = {0, 1, 2, 3}
– E = {(0,1), (1,2), (2,3), (3,0)}

• Directed.
– V = {0, 1, 2, 3}
– E = {(0,1), (0,2), (2,1), (3,1)}
Contd… (weighted)
Representation – II
• Adjacency list

– Uses an array of linked lists with size equals to |V|.

– An ith entry of an array points to a linked list of


vertices adjacent to vi.

– The weights of edges are stored in nodes of linked


lists to represent a weighted graph.
Adjacency List
Contd…(weighted)
v0
V0 V1 V2 V3 V4
V0 0 1 1 0 0
v1 v2 V1 1 0 1 1 0
V2 1 1 0 0 1
V3 0 1 0 0 1
0 1 0
v3 v4 V4 0 1

Adjacency Matrix
head [ ]
[0] 1 2 /

[1] 0 2 3 /
struct node
{ int v;
[2] 0 1 4 /
struct node *next;
} *head[5];
[3] 1 4 /

[4] 2 3 / Adjacency List


v0
V0 V1 V2 V3 V4
V0 0 1 1 0 0
v1 v2 V1 0 0 0 1 0
V2 0 1 0 0 0
V3 0 0 0 0 1
0 1 0
v3 v4 V4 0 0

Adjacency Matrix
head [ ]
[0] 1 2 /

[1] 3 /
struct node
{ int v;
[2] 1 /
struct node *next;
} *head[5];
[3] 4 /

[4] 2 / Adjacency List


v0
2 3 V0 V1 V2 V3 V4
V0 0 2 3 0 0
v1 5
v2 V1 2 0 5 2 0
V2 3 5 0 0 3
2 3
V3 0 2 0 0 9
0 3 0
v3 9
v4 V4 0 9

Adjacency Matrix
head [ ]
[0] 1 2 2 3/

[1] 0 2 2 5 3 2/
struct node
{ int v, w;
[2] 0 3 1 5 4 3/
struct node *next;
} *head[5];
[3] 1 2 4 9/

[4] 2 3 3 9/ Adjacency List


v0
2 3 V0 V1 V2 V3 V4
V0 0 2 3 0 0
v1 5
v2 V1 0 0 5 2 0
V2 0 5 0 0 0
2 3
2 V3 0 0 0 0 9
0 3 2
v3 9
v4 V4 0 0

Adjacency Matrix
head [ ]
[0] 1 2 2 3/

[1] 2 5 3 2/
struct node
{ int v, w;
[2] 1 5/
struct node *next;
} *head[5];
[3] 4 9

[4] 2 3 4 2/ Adjacency List


Graph Searching

• Breadth-first search

• Depth-first search
Breadth-first search (BFS)
• Given a graph G = (V,E) and a distinguished source
vertex s, BFS systematically explores the edges of G to
“discover” every vertex that is reachable from s.
• Discovers all vertices at distance k from a source vertex
s before discovering any vertices at distance k + 1.
• It computes the distance (smallest number of edges)
from s to each reachable vertex.
• It produces a “breadth-first tree” with root s that
contains all reachable vertices.
• It works on both directed and undirected graphs.
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: sub-graph

• Queue: s

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s sub-graph

r w
• Queue: r w

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r sub-graph

r w
• Queue: w v
v

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r w sub-graph

r w
• Queue: v t x
v t x

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r w v sub-graph

r w
• Queue: t x
v t x

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r w v t sub-graph

r w
• Queue: x u
v t x

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r w v t x sub-graph

r w
• Queue: u y
v t x

u y

r s t u

v w x y
Compute BFS - Undirected
Predecessor Breadth-first tree
s
• BFS: s r w v t x u sub-graph

r w
• Queue: y
v t x

u y

r s t u

v w x y
BFS Queue
Compute BFS - Undirected s
s wr
• BFS: s r w v t x u y sw rxt
swr xtv
swrx tvyu
• Queue: swrxt vyu
r s t u swrxtv yu
swrxtvy u
swrxtvyu
v w x y

Breadth-first tree

Predecessor
sub-graph
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: sub-graph

• Queue: r

r s t

v w x
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: r sub-graph

v s
• Queue: s v

r s t

v w x
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: r s sub-graph

v s
• Queue: v w
w

r s t

v w x
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: r s v sub-graph

v s
• Queue: w
w

r s t

v w x
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: r s v w sub-graph

v s
• Queue: t
w

r s t

v w x
Compute BFS - Directed
Predecessor Breadth-first tree
r
• BFS: r s v w t sub-graph

v s
• Queue: x
w

r s t x

v w x
BFS Queue
Compute BFS - Directed r
r vs
• BFS: r s v w t x rv s
rvs w
rvsw t
• Queue: rvswt x
rvswtx

r s t

v w x
Breadth-first tree

Predecessor
sub-graph
Procedure BFS
• Assumptions:
– The input graph G = (V,E) is represented using adjacency
lists.
– Each vertex in the graph has following additional
attributes.
• Color: Can be white (undiscovered), gray (may have some
adjacent white vertices), or black (all adjacent vertices have
been discovered).
• π: predecessor of a vertex. Can be NIL.
• d: The distance from the source vertex computed by the
algorithm.
– The queue Q is used to manage the set of gray vertices.
Contd…

O(V+E)
r s t u
Execution example
• s is the starting vertex. v w x y

Vertex Color Distance Predecessor


(d) (π) r → s → v
r White ∞ NIL s → r → w
t → u → w → x
s Gray 0 NIL
u → t → x → y
t White ∞ NIL v → r
u White ∞ NIL w → s → t → x
x → t → u → w → y
v White ∞ NIL
y → u → x
w White ∞ NIL
Q: s
x White ∞ NIL
BFS:
y White ∞ NIL
Contd…
• s is the starting vertex.

Vertex Color Distance Predecessor


(d) (π) r → s → v
r White ∞ NIL s → r → w
t → u → w → x
s Gray 0 NIL
u → t → x → y
t White ∞ NIL v → r
u White ∞ NIL w → s → t → x
x → t → u → w → y
v White ∞ NIL
y → u → x
w White ∞ NIL
Q: s
x White ∞ NIL
BFS:
y White ∞ NIL
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Gray 1 s
s Gray 0 NIL r → s → v
s → r → w
t White ∞ NIL
t → u → w → x
u White ∞ NIL u → t → x → y
v → r
v White ∞ NIL
w → s → t → x
w White ∞ NIL x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: r

BFS: s
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Gray 1 s
s Gray 0 NIL r → s → v
s → r → w
t White ∞ NIL
t → u → w → x
u White ∞ NIL u → t → x → y
v → r
v White ∞ NIL
w → s → t → x
w Gray 1 s x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: r w

BFS: s
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Gray 1 s
s Black 0 NIL r → s → v
s → r → w
t White ∞ NIL
t → u → w → x
u White ∞ NIL u → t → x → y
v → r
v White ∞ NIL
w → s → t → x
w Gray 1 s x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: r w

BFS: s
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Gray 1 s
s Black 0 NIL r → s → v
s → r → w
t White ∞ NIL
t → u → w → x
u White ∞ NIL u → t → x → y

v Gray r v → r
2
w → s → t → x
w Gray 1 s x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: w v

BFS: s r
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t White ∞ NIL
t → u → w → x
u White ∞ NIL u → t → x → y

v Gray r v → r
2
w → s → t → x
w Gray 1 s x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: w v

BFS: s r
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Gray 2 w
t → u → w → x
u White ∞ NIL u → t → x → y

v Gray r v → r
2
w → s → t → x
w Gray 1 s x → t → u → w → y
x White ∞ NIL y → u → x

y White ∞ NIL Q: v t

BFS: s r w
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Gray 2 w
t → u → w → x
u White ∞ NIL u → t → x → y

v Gray r v → r
2
w → s → t → x
w Gray 1 s x → t → u → w → y
x Gray 2 w y → u → x

y White ∞ NIL Q: v t x

BFS: s r w
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Gray 2 w
t → u → w → x
u White ∞ NIL u → t → x → y

v Gray r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Gray 2 w y → u → x

y White ∞ NIL Q: v t x

BFS: s r w
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Gray 2 w
t → u → w → x
u White ∞ NIL u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Gray 2 w y → u → x

y White ∞ NIL Q: t x

BFS: s r w v
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Gray 2 w
t → u → w → x
u Gray 3 t u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Gray 2 w y → u → x

y White ∞ NIL Q: x u

BFS: s r w v t
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Black 2 w
t → u → w → x
u Gray 3 t u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Gray 2 w y → u → x

y White ∞ NIL Q: x u

BFS: s r w v t
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Black 2 w
t → u → w → x
u Gray 3 t u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Gray 2 w y → u → x

y Gray 3 x Q: u y

BFS: s r w v t x
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Black 2 w
t → u → w → x
u Gray 3 t u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Black 2 w y → u → x

y Gray 3 x Q: u y

BFS: s r w v t x
Contd…
Vertex Color Distance Predecessor
(d) (π)
r Black 1 s
s Black 0 NIL r → s → v
s → r → w
t Black 2 w
t → u → w → x
u Black 3 t u → t → x → y

v Black r v → r
2
w → s → t → x
w Black 1 s x → t → u → w → y
x Black 2 w y → u → x

y Gray 3 x Q: y

BFS: s r w v t x u
Contd…

Breadth-first tree

Vertex Color Distance Predecessor


(d) (π)
r → s → v
r Black 1 s s → r → w
s Black 0 NIL t → u → w → x

t Black w u → t → x → y
2
v → r
u Black 3 t w → s → t → x
v Black 2 r x → t → u → w → y
y → u → x
w Black 1 s
x Black 2 w Q: ϕ

y Black 3 x
BFS: s r w v t x u y
Depth-first search (DFS)
• Search “deeper” in the graph whenever possible.
• If any undiscovered vertices remain, then DFS
selects one of them as a new-source, and it repeats
the search from that source.
• The algorithm continues until it has discovered
every vertex.
• It produces a “depth-first forest” comprising several
“depth-first trees”.
• It works on both directed and undirected graphs.
Procedure DFS
• Assumptions:
– The input graph G = (V,E) is represented using adjacency
lists.
– Each vertex in the graph has following additional
attributes.
• Color: Can be white (undiscovered), gray (when discovered), or
black (all adjacent vertices have been examined completely).
• π: predecessor of a vertex. Can be NIL.
• d: Timestamp to record when the vertex is first discovered.
• f: Timestamp to record when the vertex is examined
completely.
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u

• DFS: u

1/

r s t u

u
v w x y
Stack
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t

2/ 1/

r s t u

t
u
v w x y
Stack
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w
w

2/ 1/

r s t u
w
t
u
v w x y
Stack 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s
w

4/ 2/ 1/

s
r s t u
w
t
u
v w x y
Stack 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r
w

5/ 4/ 2/ 1/ r
r
s
r s t u
w
t
u
v w x y
Stack 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v
w

v 5/ 4/ 2/ 1/ r
r
s
r s t u v
w
t
u
v w x y
Stack 6/ 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v
w

5/ 4/ 2/ 1/ r
r
s
r s t u v
w
t
u
v w x y
Stack 6/7 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v
w

5/8 4/ 2/ 1/ r

s
r s t u v
w
t
u
v w x y
Stack 6/7 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v
w

5/8 4/9 2/ 1/ r

r s t u v
w
t
u
v w x y
Stack 6/7 3/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x
w

x s

5/8 4/9 2/ 1/ r

x
r s t u v
w
t
u
v w x y
Stack 6/7 3/ 10/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/ 1/ y r
y
x
r s t u v
w
t
u
v w x y
Stack 6/7 3/ 10/ 11/
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/ 1/ y r

x
r s t u v
w
t
u
v w x y
Stack 6/7 3/ 10/ 11/12
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/ 1/ y r

r s t u v
w
t
u
v w x y
Stack 6/7 3/ 10/13 11/12
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/ 1/ y r

r s t u v

t
u
v w x y
Stack 6/7 3/14 10/13 11/12
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/15 1/ y r

r s t u v

u
v w x y
Stack 6/7 3/14 10/13 11/12
Compute DFS - Undirected
Predecessor Depth-first forest
sub-graph u
t
• DFS: u t w s r v x y
w

x s

5/8 4/9 2/15 1/16 y r

r s t u v

v w x y
Stack 6/7 3/14 10/13 11/12
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B

2/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

2/

3/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

2/ 4/

3/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

2/ 4/5

3/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C E

2/ 4/5

3/
6/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C E

2/ 4/5

3/
6/7
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C F E

2/ 4/5

3/
6/7

8/
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C F E

2/ 4/5

3/
6/7

8/9
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C F E

2/ 4/5

3/10
6/7

8/9
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
B
D

C F E

2/ 11 4/5

3/10
6/7

8/9
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
G B
D
12/
C F E

2/ 11 4/5

3/10
6/7

8/9
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/
G B
D
12/13
C F E

2/ 11 4/5

3/10
6/7

8/9
Compute DFS - Directed
Predecessor Depth-first forest
sub-graph A
1/14
G B
D
12/13
C F E

2/ 11 4/5
DFS: A B D C E F G

3/10
6/7

8/9
Procedure DFS
u v w
Execution example
• Let’s start with vertex u. x y z

Vertex Color Timestamp Predecessor


d f (π)
u White NIL
v White NIL
w White NIL u → v → x
v → y
x White NIL
w → y → z
y White NIL x → v
z White NIL y → x
z → z

time = 0
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v White NIL
w White NIL u → v → x
v → y
x White NIL
w → y → z
y White NIL x → v
z White NIL y → x
z → z

u =u time = 1
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v White u
w White NIL u → v → x
v → y
x White NIL
w → y → z
y White NIL x → v
z White NIL y → x
z → z

u =u time = 1
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x White NIL
w → y → z
y White NIL x → v
z White NIL y → x
z → z

u =v time = 2
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x White NIL
w → y → z
y White v x → v
z White NIL y → x
z → z

u =v time = 2
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x White NIL
w → y → z
y Gray 3 v x → v
z White NIL y → x
z → z

u =y time = 3
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x White y
w → y → z
y Gray 3 v x → v
z White NIL y → x
z → z

u =y time = 3
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x Gray 4 y
w → y → z
y Gray 3 v x → v
z White NIL y → x
z → z

u =x time = 4
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Gray 3 v x → v
z White NIL y → x
z → z

u =x time = 5
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Gray 3 v x → v
z White NIL y → x
z → z

u =y time = 5
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =y time = 6
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Gray 2 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =v time = 6
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Black 2 7 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =v time = 7
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Gray 1 NIL
v Black 2 7 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =u time = 7
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =u time = 8
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w White NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Gray 9 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White NIL y → x
z → z

u =w time = 9
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Gray 9 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z White w y → x
z → z

u =w time = 9
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Gray 9 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z Gray 10 w y → x
z → z

u =z time = 10
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Gray 9 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z Black 10 11 w y → x
z → z

u =z time = 11
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Gray 9 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z Black 10 11 w y → x
z → z

u =w time = 11
Execution example

Vertex Color Timestamp Predecessor


d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Black 9 12 NIL u → v → x
v → y
x Black 4 5 y
w → y → z
y Black 3 6 v x → v
z Black 10 11 w y → x
z → z

u =w time = 12
Execution example
Vertex Color Timestamp Predecessor
d f (π)
u Black 1 8 NIL
v Black 2 7 u
w Black 9 12 NIL
x Black 4 5 y
Depth-first forest
y Black 3 6 v
z Black 10 11 w u w

u → v → x v z
v → y
DFS: u v y x w z Predecessor
w → y → z y sub-graph
x → v
y → x x
z → z

You might also like