SlideShare a Scribd company logo
Dr. AMIT KUMAR @JUET
Graph Algorithms – 2
graphs-2 - 2 Lin / DeviDr. AMIT KUMAR @JUET
Identification of Edges
 Edge type for edge (u, v) can be identified when it is first explored
by DFS.
 Identification is based on the color of v.
» White – tree edge.
» Gray – back edge.
» Black – forward or cross edge.
graphs-2 - 3 Lin / DeviDr. AMIT KUMAR @JUET
Directed Acyclic Graph
 DAG – Directed graph with no cycles.
 Good for modeling processes and structures that have a
partial order:
» a > b and b > c  a > c.
» But may have a and b such that neither a > b nor b > a.
 Can always make a total order (either a > b or b > a for
all a  b) from a partial order.
graphs-2 - 4 Lin / DeviDr. AMIT KUMAR @JUET
Example
DAG of dependencies for putting on goalie equipment.
socks shorts
hose
pants
skates
leg pads
T-shirt
chest pad
sweater
mask
catch glove
blocker
batting glove
graphs-2 - 5 Lin / DeviDr. AMIT KUMAR @JUET
Characterizing a DAG
Proof:
 : Show that back edge  cycle.
» Suppose there is a back edge (u, v). Then v is ancestor of u in
depth-first forest.
» Therefore, there is a path v u, so v u v is a cycle.
Lemma 22.11
A directed graph G is acyclic iff a DFS of G yields no back edges.
v u
T T T
B
graphs-2 - 6 Lin / DeviDr. AMIT KUMAR @JUET
Characterizing a DAG
Proof (Contd.):
  : Show that a cycle implies a back edge.
» c : cycle in G, v : first vertex discovered in c, (u, v) : preceding
edge in c.
» At time d[v], vertices of c form a white path v u. Why?
» By white-path theorem, u is a descendent of v in depth-first
forest.
» Therefore, (u, v) is a back edge.
Lemma 22.11
A directed graph G is acyclic iff a DFS of G yields no back edges.
v u
T T T
B
graphs-2 - 7 Lin / DeviDr. AMIT KUMAR @JUET
Topological Sort
Want to “sort” a directed acyclic graph (DAG).
B
E
D
C
A
C EDA B
Think of original DAG as a partial order.
Want a total order that extends this partial order.
graphs-2 - 8 Lin / DeviDr. AMIT KUMAR @JUET
Topological Sort
 Performed on a DAG.
 Linear ordering of the vertices of G such that if (u, v) 
E, then u appears somewhere before v.
Topological-Sort (G)
1. call DFS(G) to compute finishing times f [v] for all v  V
2. as each vertex is finished, insert it onto the front of a linked list
3. return the linked list of vertices
Time: (V + E).
Example: On board.
graphs-2 - 9 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/
(Courtesy of Prof. Jim Anderson)
graphs-2 - 10 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/
2/
graphs-2 - 11 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/
2/3
E
2/3
graphs-2 - 12 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
graphs-2 - 13 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/
graphs-2 - 14 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/
6/
graphs-2 - 15 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/
6/7
6/7
C
graphs-2 - 16 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/8
6/7
6/7
C
5/8
B
graphs-2 - 17 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/8
6/7
6/7
C
5/8
B
9/
graphs-2 - 18 Lin / DeviDr. AMIT KUMAR @JUET
Example
Linked List:
A B D
C E
1/4
2/3
E
2/31/4
D
5/8
6/7
6/7
C
5/8
B
9/10
9/10
A
graphs-2 - 19 Lin / DeviDr. AMIT KUMAR @JUET
Correctness Proof
 Just need to show if (u, v)  E, then f [v] < f [u].
 When we explore (u, v), what are the colors of u and v?
» u is gray.
» Is v gray, too?
• No, because then v would be ancestor of u.
•  (u, v) is a back edge.
•  contradiction of Lemma 22.11 (dag has no back edges).
» Is v white?
• Then becomes descendant of u.
• By parenthesis theorem, d[u] < d[v] < f [v] < f [u].
» Is v black?
• Then v is already finished.
• Since we’re exploring (u, v), we have not yet finished u.
• Therefore, f [v] < f [u].
graphs-2 - 20 Lin / DeviDr. AMIT KUMAR @JUET
Strongly Connected Components
 G is strongly connected if every pair (u, v) of vertices in
G is reachable from one another.
 A strongly connected component (SCC) of G is a
maximal set of vertices C  V such that for all u, v  C,
both u v and v u exist.
graphs-2 - 21 Lin / DeviDr. AMIT KUMAR @JUET
Component Graph
 GSCC = (VSCC, ESCC).
 VSCC has one vertex for each SCC in G.
 ESCC has an edge if there’s an edge between the
corresponding SCC’s in G.
 GSCC for the example considered:
graphs-2 - 22 Lin / DeviDr. AMIT KUMAR @JUET
GSCC is a DAG
Proof:
 Suppose there is a path v v in G.
 Then there are paths u u v and v v u in G.
 Therefore, u and v are reachable from each other, so they
are not in separate SCC’s.
Lemma 22.13
Let C and C be distinct SCC’s in G, let u, v  C, u, v  C, and
suppose there is a path u u in G. Then there cannot also be a path
v v in G.
graphs-2 - 23 Lin / DeviDr. AMIT KUMAR @JUET
Transpose of a Directed Graph
 GT = transpose of directed G.
» GT = (V, ET), ET = {(u, v) : (v, u)  E}.
» GT is G with all edges reversed.
 Can create GT in Θ(V + E) time if using adjacency lists.
 G and GT have the same SCC’s. (u and v are reachable
from each other in G if and only if reachable from each
other in GT.)
graphs-2 - 24 Lin / DeviDr. AMIT KUMAR @JUET
Algorithm to determine SCCs
SCC(G)
1. call DFS(G) to compute finishing times f [u] for all u
2. compute GT
3. call DFS(GT), but in the main loop, consider vertices in order of
decreasing f [u] (as computed in first DFS)
4. output the vertices in each tree of the depth-first forest formed in
second DFS as a separate SCC
Time: (V + E).
Example: On board.
graphs-2 - 25 Lin / DeviDr. AMIT KUMAR @JUET
Example
13/14
12/15 3/4 2/7
11/16 1/10
a b c
e f g
5/6
8/9
h
d
(Courtesy of Prof. Jim Anderson)
G
graphs-2 - 26 Lin / DeviDr. AMIT KUMAR @JUET
Example
a b c
e f g h
d
GT
graphs-2 - 27 Lin / DeviDr. AMIT KUMAR @JUET
Example
cd
hfg
abe
graphs-2 - 28 Lin / DeviDr. AMIT KUMAR @JUET
How does it work?
 Idea:
» By considering vertices in second DFS in decreasing order of
finishing times from first DFS, we are visiting vertices of the
component graph in topologically sorted order.
» Because we are running DFS on GT, we will not be visiting any
v from a u, where v and u are in different components.
 Notation:
» d[u] and f [u] always refer to first DFS.
» Extend notation for d and f to sets of vertices U  V:
» d(U) = minuU{d[u]} (earliest discovery time)
» f (U) = maxuU{ f [u]} (latest finishing time)
graphs-2 - 29 Lin / DeviDr. AMIT KUMAR @JUET
SCCs and DFS finishing times
Proof:
 Case 1: d(C) < d(C)
» Let x be the first vertex discovered in C.
» At time d[x], all vertices in C and C are
white. Thus, there exist paths of white
vertices from x to all vertices in C and C.
» By the white-path theorem, all vertices in
C and C are descendants of x in depth-
first tree.
» By the parenthesis theorem, f [x] = f (C)
> f(C).
Lemma 22.14
Let C and C be distinct SCC’s in G = (V, E). Suppose there is an
edge (u, v)  E such that u  C and v C. Then f (C) > f (C).
C C
u v
x
graphs-2 - 30 Lin / DeviDr. AMIT KUMAR @JUET
SCCs and DFS finishing times
Proof:
 Case 2: d(C) > d(C)
» Let y be the first vertex discovered in C.
» At time d[y], all vertices in C are white and
there is a white path from y to each vertex in
C  all vertices in C become descendants
of y. Again, f [y] = f (C).
» At time d[y], all vertices in C are also white.
» By earlier lemma, since there is an edge (u,
v), we cannot have a path from C to C.
» So no vertex in C is reachable from y.
» Therefore, at time f [y], all vertices in C are
still white.
» Therefore, for all w  C, f [w] > f [y], which
implies that f (C) > f (C).
Lemma 22.14
Let C and C be distinct SCC’s in G = (V, E). Suppose there is an
edge (u, v)  E such that u  C and v C. Then f (C) > f (C).
C C
u v
yx
graphs-2 - 31 Lin / DeviDr. AMIT KUMAR @JUET
SCCs and DFS finishing times
Proof:
 (u, v)  ET  (v, u)  E.
 Since SCC’s of G and GT are the same, f(C) > f (C), by
Lemma 22.14.
Corollary 22.15
Let C and C be distinct SCC’s in G = (V, E). Suppose there is an
edge
(u, v)  ET, where u  C and v  C. Then f(C) < f(C).
graphs-2 - 32 Lin / DeviDr. AMIT KUMAR @JUET
Correctness of SCC
 When we do the second DFS, on GT, start with SCC C
such that f(C) is maximum.
» The second DFS starts from some x  C, and it visits all
vertices in C.
» Corollary 22.15 says that since f(C) > f (C) for all C  C, there
are no edges from C to C in GT.
» Therefore, DFS will visit only vertices in C.
» Which means that the depth-first tree rooted at x contains
exactly the vertices of C.
graphs-2 - 33 Lin / DeviDr. AMIT KUMAR @JUET
Correctness of SCC
 The next root chosen in the second DFS is in SCC C
such that f (C) is maximum over all SCC’s other than C.
» DFS visits all vertices in C, but the only edges out of C go to
C, which we’ve already visited.
» Therefore, the only tree edges will be to vertices in C.
 We can continue the process.
 Each time we choose a root for the second DFS, it can
reach only
» vertices in its SCC—get tree edges to these,
» vertices in SCC’s already visited in second DFS—get no tree
edges to these.

More Related Content

PDF
Minimum spanning tree
PDF
Algorithms of graph
PPTX
GRAPH APPLICATION - MINIMUM SPANNING TREE (MST)
PDF
Skiena algorithm 2007 lecture12 topological sort connectivity
PPT
Data structure
PPT
Algorithm Design and Complexity - Course 8
PDF
Topological Sort
PDF
Algorithm Design and Complexity - Course 12
Minimum spanning tree
Algorithms of graph
GRAPH APPLICATION - MINIMUM SPANNING TREE (MST)
Skiena algorithm 2007 lecture12 topological sort connectivity
Data structure
Algorithm Design and Complexity - Course 8
Topological Sort
Algorithm Design and Complexity - Course 12

What's hot (19)

PPTX
Minimum spanning tree algorithms by ibrahim_alfayoumi
PPT
minimum spanning trees Algorithm
PPTX
Minimum spanning Tree
PPTX
Prims & kruskal algorithms
PPT
Algorithm Design and Complexity - Course 9
PPTX
Algorithm Design and Complexity - Course 7
PPTX
Kruskal Algorithm
PPTX
Kruskal's algorithm
PPT
Prim's Algorithm on minimum spanning tree
PPT
ADA - Minimum Spanning Tree Prim Kruskal and Dijkstra
PPT
Prim Algorithm and kruskal algorithm
PPTX
Data Algorithms And Analysis
PDF
19 Minimum Spanning Trees
PPTX
Prims and kruskal algorithms
PPT
Directed Acyclic Graph
PPTX
Prim's algorithm
PPTX
Minimum spanning tree
PPTX
Optimisation random graph presentation
PPT
Inroduction_To_Algorithms_Lect14
Minimum spanning tree algorithms by ibrahim_alfayoumi
minimum spanning trees Algorithm
Minimum spanning Tree
Prims & kruskal algorithms
Algorithm Design and Complexity - Course 9
Algorithm Design and Complexity - Course 7
Kruskal Algorithm
Kruskal's algorithm
Prim's Algorithm on minimum spanning tree
ADA - Minimum Spanning Tree Prim Kruskal and Dijkstra
Prim Algorithm and kruskal algorithm
Data Algorithms And Analysis
19 Minimum Spanning Trees
Prims and kruskal algorithms
Directed Acyclic Graph
Prim's algorithm
Minimum spanning tree
Optimisation random graph presentation
Inroduction_To_Algorithms_Lect14
Ad

Similar to Topological sorting (20)

PPT
topological_sort_strongly Connected Components
PDF
Problem Solving with Algorithms and Data Structure - Graphs
DOCX
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
PDF
DFS-model Graph Modeling (CES 417) Lecture 6
PPT
ALG5.1.pptdsfnj,sdhfjk hsdjkfhsdjkfhj ksd hfjksdhfjksd
PPT
Application of dfs
PPT
ALG5.1.ppt
PPTX
Unit 4-PartB of data design and algorithms
PPTX
Topological sort
PDF
EQUIVALENT CONDITION AND TWO ALGORITHMS FOR HAMILTONIAN GRAPHS
PDF
Unit ii divide and conquer -3
PPTX
topologicalsort-using c++ as development language.pptx
PPT
cs201-tree-graph as a data structure.ppt
PPTX
Depth first traversal(data structure algorithms)
PPTX
UNIT IV NON LINEAR DATA STRUCTURES - GRAPH.pptx
PPT
graph theory in applied mathematics with example
PPTX
UNIT IV NON LINEAR DATA STRUCTURES - GRAPH
PPTX
Algorithms and data Chapter 3 V Graph.pptx
topological_sort_strongly Connected Components
Problem Solving with Algorithms and Data Structure - Graphs
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
DFS-model Graph Modeling (CES 417) Lecture 6
ALG5.1.pptdsfnj,sdhfjk hsdjkfhsdjkfhj ksd hfjksdhfjksd
Application of dfs
ALG5.1.ppt
Unit 4-PartB of data design and algorithms
Topological sort
EQUIVALENT CONDITION AND TWO ALGORITHMS FOR HAMILTONIAN GRAPHS
Unit ii divide and conquer -3
topologicalsort-using c++ as development language.pptx
cs201-tree-graph as a data structure.ppt
Depth first traversal(data structure algorithms)
UNIT IV NON LINEAR DATA STRUCTURES - GRAPH.pptx
graph theory in applied mathematics with example
UNIT IV NON LINEAR DATA STRUCTURES - GRAPH
Algorithms and data Chapter 3 V Graph.pptx
Ad

More from Amit Kumar Rathi (20)

PDF
Hybrid Systems using Fuzzy, NN and GA (Soft Computing)
PDF
Fundamentals of Genetic Algorithms (Soft Computing)
PDF
Fuzzy Systems by using fuzzy set (Soft Computing)
PDF
Fuzzy Set Theory and Classical Set Theory (Soft Computing)
PDF
Associative Memory using NN (Soft Computing)
PDF
Back Propagation Network (Soft Computing)
PDF
Fundamentals of Neural Network (Soft Computing)
PDF
Introduction to Soft Computing (intro to the building blocks of SC)
PDF
String matching, naive,
PDF
Shortest path algorithms
PDF
Sccd and topological sorting
PDF
Red black trees
PDF
Recurrence and master theorem
PDF
Rabin karp string matcher
PDF
Merge sort analysis
PDF
Loop invarient
PDF
Linear sort
PDF
Heap and heapsort
PDF
Greedy algorithm activity selection fractional
PDF
Graph representation
Hybrid Systems using Fuzzy, NN and GA (Soft Computing)
Fundamentals of Genetic Algorithms (Soft Computing)
Fuzzy Systems by using fuzzy set (Soft Computing)
Fuzzy Set Theory and Classical Set Theory (Soft Computing)
Associative Memory using NN (Soft Computing)
Back Propagation Network (Soft Computing)
Fundamentals of Neural Network (Soft Computing)
Introduction to Soft Computing (intro to the building blocks of SC)
String matching, naive,
Shortest path algorithms
Sccd and topological sorting
Red black trees
Recurrence and master theorem
Rabin karp string matcher
Merge sort analysis
Loop invarient
Linear sort
Heap and heapsort
Greedy algorithm activity selection fractional
Graph representation

Recently uploaded (20)

DOCX
573137875-Attendance-Management-System-original
PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PPT
Project quality management in manufacturing
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
additive manufacturing of ss316l using mig welding
PDF
Well-logging-methods_new................
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
Internet of Things (IOT) - A guide to understanding
PPT
Mechanical Engineering MATERIALS Selection
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
OOP with Java - Java Introduction (Basics)
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
573137875-Attendance-Management-System-original
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
Project quality management in manufacturing
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
additive manufacturing of ss316l using mig welding
Well-logging-methods_new................
Operating System & Kernel Study Guide-1 - converted.pdf
Internet of Things (IOT) - A guide to understanding
Mechanical Engineering MATERIALS Selection
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
Embodied AI: Ushering in the Next Era of Intelligent Systems
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
Arduino robotics embedded978-1-4302-3184-4.pdf
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
OOP with Java - Java Introduction (Basics)
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf

Topological sorting

  • 1. Dr. AMIT KUMAR @JUET Graph Algorithms – 2
  • 2. graphs-2 - 2 Lin / DeviDr. AMIT KUMAR @JUET Identification of Edges  Edge type for edge (u, v) can be identified when it is first explored by DFS.  Identification is based on the color of v. » White – tree edge. » Gray – back edge. » Black – forward or cross edge.
  • 3. graphs-2 - 3 Lin / DeviDr. AMIT KUMAR @JUET Directed Acyclic Graph  DAG – Directed graph with no cycles.  Good for modeling processes and structures that have a partial order: » a > b and b > c  a > c. » But may have a and b such that neither a > b nor b > a.  Can always make a total order (either a > b or b > a for all a  b) from a partial order.
  • 4. graphs-2 - 4 Lin / DeviDr. AMIT KUMAR @JUET Example DAG of dependencies for putting on goalie equipment. socks shorts hose pants skates leg pads T-shirt chest pad sweater mask catch glove blocker batting glove
  • 5. graphs-2 - 5 Lin / DeviDr. AMIT KUMAR @JUET Characterizing a DAG Proof:  : Show that back edge  cycle. » Suppose there is a back edge (u, v). Then v is ancestor of u in depth-first forest. » Therefore, there is a path v u, so v u v is a cycle. Lemma 22.11 A directed graph G is acyclic iff a DFS of G yields no back edges. v u T T T B
  • 6. graphs-2 - 6 Lin / DeviDr. AMIT KUMAR @JUET Characterizing a DAG Proof (Contd.):   : Show that a cycle implies a back edge. » c : cycle in G, v : first vertex discovered in c, (u, v) : preceding edge in c. » At time d[v], vertices of c form a white path v u. Why? » By white-path theorem, u is a descendent of v in depth-first forest. » Therefore, (u, v) is a back edge. Lemma 22.11 A directed graph G is acyclic iff a DFS of G yields no back edges. v u T T T B
  • 7. graphs-2 - 7 Lin / DeviDr. AMIT KUMAR @JUET Topological Sort Want to “sort” a directed acyclic graph (DAG). B E D C A C EDA B Think of original DAG as a partial order. Want a total order that extends this partial order.
  • 8. graphs-2 - 8 Lin / DeviDr. AMIT KUMAR @JUET Topological Sort  Performed on a DAG.  Linear ordering of the vertices of G such that if (u, v)  E, then u appears somewhere before v. Topological-Sort (G) 1. call DFS(G) to compute finishing times f [v] for all v  V 2. as each vertex is finished, insert it onto the front of a linked list 3. return the linked list of vertices Time: (V + E). Example: On board.
  • 9. graphs-2 - 9 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/ (Courtesy of Prof. Jim Anderson)
  • 10. graphs-2 - 10 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/ 2/
  • 11. graphs-2 - 11 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/ 2/3 E 2/3
  • 12. graphs-2 - 12 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D
  • 13. graphs-2 - 13 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/
  • 14. graphs-2 - 14 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/ 6/
  • 15. graphs-2 - 15 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/ 6/7 6/7 C
  • 16. graphs-2 - 16 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/8 6/7 6/7 C 5/8 B
  • 17. graphs-2 - 17 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/8 6/7 6/7 C 5/8 B 9/
  • 18. graphs-2 - 18 Lin / DeviDr. AMIT KUMAR @JUET Example Linked List: A B D C E 1/4 2/3 E 2/31/4 D 5/8 6/7 6/7 C 5/8 B 9/10 9/10 A
  • 19. graphs-2 - 19 Lin / DeviDr. AMIT KUMAR @JUET Correctness Proof  Just need to show if (u, v)  E, then f [v] < f [u].  When we explore (u, v), what are the colors of u and v? » u is gray. » Is v gray, too? • No, because then v would be ancestor of u. •  (u, v) is a back edge. •  contradiction of Lemma 22.11 (dag has no back edges). » Is v white? • Then becomes descendant of u. • By parenthesis theorem, d[u] < d[v] < f [v] < f [u]. » Is v black? • Then v is already finished. • Since we’re exploring (u, v), we have not yet finished u. • Therefore, f [v] < f [u].
  • 20. graphs-2 - 20 Lin / DeviDr. AMIT KUMAR @JUET Strongly Connected Components  G is strongly connected if every pair (u, v) of vertices in G is reachable from one another.  A strongly connected component (SCC) of G is a maximal set of vertices C  V such that for all u, v  C, both u v and v u exist.
  • 21. graphs-2 - 21 Lin / DeviDr. AMIT KUMAR @JUET Component Graph  GSCC = (VSCC, ESCC).  VSCC has one vertex for each SCC in G.  ESCC has an edge if there’s an edge between the corresponding SCC’s in G.  GSCC for the example considered:
  • 22. graphs-2 - 22 Lin / DeviDr. AMIT KUMAR @JUET GSCC is a DAG Proof:  Suppose there is a path v v in G.  Then there are paths u u v and v v u in G.  Therefore, u and v are reachable from each other, so they are not in separate SCC’s. Lemma 22.13 Let C and C be distinct SCC’s in G, let u, v  C, u, v  C, and suppose there is a path u u in G. Then there cannot also be a path v v in G.
  • 23. graphs-2 - 23 Lin / DeviDr. AMIT KUMAR @JUET Transpose of a Directed Graph  GT = transpose of directed G. » GT = (V, ET), ET = {(u, v) : (v, u)  E}. » GT is G with all edges reversed.  Can create GT in Θ(V + E) time if using adjacency lists.  G and GT have the same SCC’s. (u and v are reachable from each other in G if and only if reachable from each other in GT.)
  • 24. graphs-2 - 24 Lin / DeviDr. AMIT KUMAR @JUET Algorithm to determine SCCs SCC(G) 1. call DFS(G) to compute finishing times f [u] for all u 2. compute GT 3. call DFS(GT), but in the main loop, consider vertices in order of decreasing f [u] (as computed in first DFS) 4. output the vertices in each tree of the depth-first forest formed in second DFS as a separate SCC Time: (V + E). Example: On board.
  • 25. graphs-2 - 25 Lin / DeviDr. AMIT KUMAR @JUET Example 13/14 12/15 3/4 2/7 11/16 1/10 a b c e f g 5/6 8/9 h d (Courtesy of Prof. Jim Anderson) G
  • 26. graphs-2 - 26 Lin / DeviDr. AMIT KUMAR @JUET Example a b c e f g h d GT
  • 27. graphs-2 - 27 Lin / DeviDr. AMIT KUMAR @JUET Example cd hfg abe
  • 28. graphs-2 - 28 Lin / DeviDr. AMIT KUMAR @JUET How does it work?  Idea: » By considering vertices in second DFS in decreasing order of finishing times from first DFS, we are visiting vertices of the component graph in topologically sorted order. » Because we are running DFS on GT, we will not be visiting any v from a u, where v and u are in different components.  Notation: » d[u] and f [u] always refer to first DFS. » Extend notation for d and f to sets of vertices U  V: » d(U) = minuU{d[u]} (earliest discovery time) » f (U) = maxuU{ f [u]} (latest finishing time)
  • 29. graphs-2 - 29 Lin / DeviDr. AMIT KUMAR @JUET SCCs and DFS finishing times Proof:  Case 1: d(C) < d(C) » Let x be the first vertex discovered in C. » At time d[x], all vertices in C and C are white. Thus, there exist paths of white vertices from x to all vertices in C and C. » By the white-path theorem, all vertices in C and C are descendants of x in depth- first tree. » By the parenthesis theorem, f [x] = f (C) > f(C). Lemma 22.14 Let C and C be distinct SCC’s in G = (V, E). Suppose there is an edge (u, v)  E such that u  C and v C. Then f (C) > f (C). C C u v x
  • 30. graphs-2 - 30 Lin / DeviDr. AMIT KUMAR @JUET SCCs and DFS finishing times Proof:  Case 2: d(C) > d(C) » Let y be the first vertex discovered in C. » At time d[y], all vertices in C are white and there is a white path from y to each vertex in C  all vertices in C become descendants of y. Again, f [y] = f (C). » At time d[y], all vertices in C are also white. » By earlier lemma, since there is an edge (u, v), we cannot have a path from C to C. » So no vertex in C is reachable from y. » Therefore, at time f [y], all vertices in C are still white. » Therefore, for all w  C, f [w] > f [y], which implies that f (C) > f (C). Lemma 22.14 Let C and C be distinct SCC’s in G = (V, E). Suppose there is an edge (u, v)  E such that u  C and v C. Then f (C) > f (C). C C u v yx
  • 31. graphs-2 - 31 Lin / DeviDr. AMIT KUMAR @JUET SCCs and DFS finishing times Proof:  (u, v)  ET  (v, u)  E.  Since SCC’s of G and GT are the same, f(C) > f (C), by Lemma 22.14. Corollary 22.15 Let C and C be distinct SCC’s in G = (V, E). Suppose there is an edge (u, v)  ET, where u  C and v  C. Then f(C) < f(C).
  • 32. graphs-2 - 32 Lin / DeviDr. AMIT KUMAR @JUET Correctness of SCC  When we do the second DFS, on GT, start with SCC C such that f(C) is maximum. » The second DFS starts from some x  C, and it visits all vertices in C. » Corollary 22.15 says that since f(C) > f (C) for all C  C, there are no edges from C to C in GT. » Therefore, DFS will visit only vertices in C. » Which means that the depth-first tree rooted at x contains exactly the vertices of C.
  • 33. graphs-2 - 33 Lin / DeviDr. AMIT KUMAR @JUET Correctness of SCC  The next root chosen in the second DFS is in SCC C such that f (C) is maximum over all SCC’s other than C. » DFS visits all vertices in C, but the only edges out of C go to C, which we’ve already visited. » Therefore, the only tree edges will be to vertices in C.  We can continue the process.  Each time we choose a root for the second DFS, it can reach only » vertices in its SCC—get tree edges to these, » vertices in SCC’s already visited in second DFS—get no tree edges to these.