Unit #6 Exploring Graphs: Prof - Riddhi Kotak
Unit #6 Exploring Graphs: Prof - Riddhi Kotak
EXPLORING GRAPHS
Prof.Riddhi kotak
Introduction
2
Graph G = (V, E)
V = set of vertices
E = set of edges (V V)
A A
B B
C C
D D
E E
Types of graphs
Undirected: edge (u, v) = (v, u);
for all v, (v, v) E (No self loops.)
Directed: (u, v) is edge from u to v,
denoted as u v. Self loops are allowed.
Weighted: each edge has an associated
weight, given by a weight function w : E
R.
Dense: |E| |V|2.
Sparse: |E| << |V|2.
Prof.Riddhi kotak Thursday, July 25, 2019
Introduction
4
A A
B B
C C
D D
E E
C is an articulation point
Prof.Riddhi kotak Thursday, July 25, 2019
Connectivity
8
Bridges
An edge in a graph is called a bridge, if its
removal disconnects the graph.
A B
C D
E F
A B
C D
E F
Biconnected graph:
no articulation points and no bridges
A
B
C
D
E
A
Each strongly connected
B
graph is also unilaterally
C connected.
D
E
C D
Adjacency Matrix Adjacency Lists
A B C D A B C D /
A 0 1 1 1
B A C /
B 1 0 1 0
C 1 1 0 1 C A B D /
D 1 0 1 0
D A C /
Space: (V2).
Not memory efficient for large graphs.
Time: to list all vertices adjacent to u:
(V).
Time: to determine if (u, v) E: (1).
Can store weights instead of bits for
weighted graph.
A B C D /
A B
B A C /
C A B D /
C D
D A C /
A B C D /
A B
B C /
C D /
C D
D /
Storage Requirement
For directed graphs:
Sum of lengths of all adj. lists is
out-degree(v) = |E|
vV
Input:
Graph G = (V, E), either directed or
undirected, and source vertex s V.
Output:
d[v] = distance (smallest # of edges, or
shortest path) from s to v, for all v V. d[v]
= if v is not reachable from s.
[v] = u such that (u, v) is last edge on
shortest path s to v. [u is v’s predecessor.]
Builds breadth-first tree with root s that
contains all reachable vertices.
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
23
r s t u r
s
t
u
v w x y
v
w
x
y
Q:
0 r -
s 0 -
t -
u -
v -
v w x y w -
x -
y -
Q:s
0 r -
s 0 -
t -
u -
v -
v w x y w -
x -
y -
Q:
u:s
v : r, w
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
29
1 0 r 1 s
s 0 -
t -
u -
1
v -
v w x y w 1 s
x -
y -
Q : r, w
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
30
1 0 r 1 s
s 0 -
t -
u -
1
v -
v w x y w 1 s
x -
y -
Q:w
u:r
v : s, v
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
31
1 0 r 1 s
s 0 -
t -
u -
2 1
v 2 r
v w x y w 1 s
x -
y -
Q : w, v
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
32
1 0 r 1 s
s 0 -
t -
u -
2 1
v 2 r
v w x y w 1 s
x -
y -
Q:v
u:w
v : s, t, x
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
33
1 0 2 r 1 s
s 0 -
t 2 w
u -
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q : v, t, x
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
34
1 0 2 r 1 s
s 0 -
t 2 w
u -
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q : t, x
u:v
v:r
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
35
1 0 2 r 1 s
s 0 -
t 2 w
u -
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q : t, x
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
36
1 0 2 r 1 s
s 0 -
t 2 w
u -
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q:x
u:t
v : u, w, x
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
37
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q : x, u
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
38
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2
v 2 r
v w x y w 1 s
x 2 w
y -
Q:u
u:x
v : t, w, y
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
39
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2 3
v 2 r
v w x y w 1 s
x 2 w
y 3 x
Q : u, y
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
40
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2 3
v 2 r
v w x y w 1 s
x 2 w
y 3 x
Q:y
u:u
v : t, y
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
41
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2 3
v 2 r
v w x y w 1 s
x 2 w
y 3 x
Q:y
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
42
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2 3
v 2 r
v w x y w 1 s
x 2 w
y 3 x
Q:
u:y
v : u, x
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
43
1 0 2 3 r 1 s
s 0 -
t 2 w
u 3 t
2 1 2 3
v 2 r
v w x y w 1 s
x 2 w
y 3 x
Q:
u:
v:
Prof.Riddhi kotak Thursday, July 25, 2019
Breadth-first Search
44
r s t u
1 0 2 3
2 1 2 3
v w x y
Input:
G = (V, E), directed or undirected. No source vertex
given!
Output:
2 timestamps on each vertex. Integers between 1
and 2|V|.
d[v] = discovery time (v turns from white to gray)
f [v] = finishing time (v turns from gray to black)
u v w u
v
w
x
x y z
y
z
time:
time: 0
1/ u - 1
v -
w -
x -
y -
x y z z -
time: 1
1/ 2/ u - 1
v u 2
w -
x -
y -
x y z z -
time: 2
1/ 2/ u - 1
v u 2
w -
x -
3/
y v 3
x y z z -
time: 3
1/ 2/ u - 1
v u 2
w -
x y 4
4/ 3/
y v 3
x y z z -
time: 4
1/ 2/ u - 1
v u 2
w -
x y 4 5
4/5 3/
y v 3
x y z z -
time: 5
1/ 2/ u - 1
v u 2
w -
x y 4 5
4/5 3/6
y v 3 6
x y z z -
time: 6
1/ 2/7 u - 1
v u 2 7
w -
x y 4 5
4/5 3/6
y v 3 6
x y z z -
time: 7
1/8 2/7 u - 1 8
v u 2 7
w -
x y 4 5
4/5 3/6
y v 3 6
x y z z -
time: 8
1/8 2/7 9/ u - 1 8
v u 2 7
w - 9
x y 4 5
4/5 3/6
y v 3 6
x y z z -
time: 9
1/8 2/7 9/ u - 1 8
v u 2 7
w - 9
x y 4 5
4/5 3/6 10/
y v 3 6
x y z z w 10
time: 10
1/8 2/7 9/ u - 1 8
v u 2 7
w - 9
10/ x y 4 5
4/5 3/6
11 y v 3 6
x y z z w 10 11
time: 11
1/8 2/7
9/ u - 1 8
12
v u 2 7
w - 9 12
10/ x y 4 5
4/5 3/6
11 y v 3 6
x y z z w 10 11
time: 12
1/8 2/7
9/ u - 1 8
12
v u 2 7
w - 9 12
10/ x y 4 5
4/5 3/6
11 y v 3 6
x y z z w 10 11
Depth-first Forest
O(V+E)
r s t u
v w x y
F B T C T
10/
4/5 3/6
T 11 B
x y z
Example:
Resolving dependencies:
apt-get uses topological sorting to obtain the
admissible sequence in which a set of
Debian packages can be installed/removed.
Compilation:
during compilation to order
modules/libraries
x v z
y
Prof.Riddhi kotak Thursday, July 25, 2019
Topological Sort
73
x z
y z
b c
d e
time: 0
b c
d e
time: 1
b 1/ c
d e
time: 2
b 1/ c
2/
d e
time: 3
b 1/ c
2/
d e
3/
time: 4
b 1/ c
2/
d e
3/4 f
f
time: 5
b 1/ c
2/5
d e
3/4 d f
f
time: 6
b 1/ c
2/5 6/
d e
3/4 d f
f
time: 7
b 1/ c
2/5 6/7
d e
3/4 e d f
f
time: 8
b 1/8 c
2/5 6/7
d e
3/4 c e d f
f
time: 9
b 1/8 c
2/5 6/7
d e
3/4 c e d f
f
time: 10
b 10/ 1/8 c
2/5 6/7
d e
3/4 c e d f
f
time: 11
10/
b 1/8 c
11
2/5 6/7
d e
3/4 b c e d f
f
time: 12
10/
b 1/8 c
11
2/5 6/7
d e
3/4 a b c e d f
f
2/5 6/7
e
The linked list is sorted
d
in decreasing order of
finishing times f[]
3/4
Why?
Depth first search takes (V+E) time in the
worst case,
and inserting into the front of a linked list
takes (1) time
b g
a e i
c h
b
s1 = {a, b, c, d, e, f, g, h, i}
g
s2 = {a, c, b, f, e, d, h, g, i}
a e i
s3 = {a, b, d, c, e, g, f, h, i}
c h s4 = {a, c, f, b, e, h, d, g, i}
etc.
f
Prof.Riddhi kotak Thursday, July 25, 2019
Connected components
96
r s t u
v w x y
STRONGLY-CONNECTED-COMPONENTs(G)
1.call DFS(G) to compute finishing times f[u] for each
vertex u
2.compute GT
r s t u
v w x y
12/
3/4 2/7 5/6
15
v w x y
2. compute GT
Prof.Riddhi kotak Thursday, July 25, 2019
Connected components
101
r s t u
13/ 11/ 1/
8/9
14 16 10
12/
3/4 2/7 5/6
15
v w x y
12/
3/4 2/7 5/6
15
v w x y
r s t u
v w x y
5, 2, 4,
4 2 2
3, 0, 3,
3 0 2
1,
1