CS 374: Algorithms & Models of Computation
Chandra Chekuri
University of Illinois, Urbana-Champaign
Spring 2017
Chandra Chekuri (UIUC) CS374 1 Spring 2017 1 / 1
CS 374: Algorithms & Models of Computation Chandra Chekuri - - PowerPoint PPT Presentation
CS 374: Algorithms & Models of Computation Chandra Chekuri University of Illinois, Urbana-Champaign Spring 2017 Chandra Chekuri (UIUC) CS374 1 Spring 2017 1 / 1 Today Two topics: Structure of directed graphs DFS and its properties One
University of Illinois, Urbana-Champaign
Chandra Chekuri (UIUC) CS374 1 Spring 2017 1 / 1
Chandra Chekuri (UIUC) CS374 2 Spring 2017 2 / 1
A B C D E F G H
Chandra Chekuri (UIUC) CS374 3 Spring 2017 3 / 1
A B C D E F G H
B, E, F G H A, C, D
1
2
Chandra Chekuri (UIUC) CS374 4 Spring 2017 4 / 1
Chandra Chekuri (UIUC) CS374 5 Spring 2017 5 / 1
Chandra Chekuri (UIUC) CS374 6 Spring 2017 6 / 1
Chandra Chekuri (UIUC) CS374 7 Spring 2017 7 / 1
1 2 3 4
Chandra Chekuri (UIUC) CS374 8 Spring 2017 8 / 1
1
2
Chandra Chekuri (UIUC) CS374 9 Spring 2017 9 / 1
Chandra Chekuri (UIUC) CS374 10 Spring 2017 10 / 1
Chandra Chekuri (UIUC) CS374 10 Spring 2017 10 / 1
1
2
Chandra Chekuri (UIUC) CS374 10 Spring 2017 10 / 1
1 2 3 4
1 2 3 4
Chandra Chekuri (UIUC) CS374 11 Spring 2017 11 / 1
Chandra Chekuri (UIUC) CS374 12 Spring 2017 12 / 1
1
2
3
Chandra Chekuri (UIUC) CS374 13 Spring 2017 13 / 1
Chandra Chekuri (UIUC) CS374 14 Spring 2017 14 / 1
Chandra Chekuri (UIUC) CS374 15 Spring 2017 15 / 1
Chandra Chekuri (UIUC) CS374 16 Spring 2017 16 / 1
Chandra Chekuri (UIUC) CS374 17 Spring 2017 17 / 1
Chandra Chekuri (UIUC) CS374 18 Spring 2017 18 / 1
Chandra Chekuri (UIUC) CS374 19 Spring 2017 19 / 1
1
2
3
Chandra Chekuri (UIUC) CS374 20 Spring 2017 20 / 1
DFS(G)
Mark u as unvisited Set pred(u) to null T is set to ∅
DFS(u) Output T DFS(u) Mark u as visited
add edge uv to T set pred(v) to u DFS(v)
Chandra Chekuri (UIUC) CS374 21 Spring 2017 21 / 1
1 2 3 4 5 6 7 8 9 10
1
2
Chandra Chekuri (UIUC) CS374 22 Spring 2017 22 / 1
1
2
3
1
2
Chandra Chekuri (UIUC) CS374 23 Spring 2017 23 / 1
DFS(G)
Mark u as unvisited T is set to ∅ time = 0
DFS(u) Output T DFS(u) Mark u as visited pre(u) = ++time
add edge uv to T DFS(v) post(u) = ++time
Chandra Chekuri (UIUC) CS374 24 Spring 2017 24 / 1
1 2 3 4 5 6 7 8 9 10 Chandra Chekuri (UIUC) CS374 25 Spring 2017 25 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
Chandra Chekuri (UIUC) CS374 26 Spring 2017 26 / 1
DFS(G) Mark all nodes u as unvisited T is set to ∅ time = 0
DFS(u) Output T DFS(u) Mark u as visited pre(u) = ++time
add edge (u, v) to T DFS(v) post(u) = ++time
Chandra Chekuri (UIUC) CS374 27 Spring 2017 27 / 1
A B C D E F G H
Chandra Chekuri (UIUC) CS374 28 Spring 2017 28 / 1
1
Chandra Chekuri (UIUC) CS374 29 Spring 2017 29 / 1
1
2
Chandra Chekuri (UIUC) CS374 29 Spring 2017 29 / 1
1
2
3
Chandra Chekuri (UIUC) CS374 29 Spring 2017 29 / 1
1
2
3
4
Chandra Chekuri (UIUC) CS374 29 Spring 2017 29 / 1
1
2
3
4
Chandra Chekuri (UIUC) CS374 29 Spring 2017 29 / 1
1
2
3
4
Chandra Chekuri (UIUC) CS374 30 Spring 2017 30 / 1
A B C D
Cross Forward Backward
Chandra Chekuri (UIUC) CS374 31 Spring 2017 31 / 1
Chandra Chekuri (UIUC) CS374 32 Spring 2017 32 / 1
... to check for Acylicity and compute Topological Ordering
Chandra Chekuri (UIUC) CS374 33 Spring 2017 33 / 1
... to check for Acylicity and compute Topological Ordering
1
2
3
Chandra Chekuri (UIUC) CS374 33 Spring 2017 33 / 1
... to check for Acylicity and compute Topological Ordering
1
2
3
Chandra Chekuri (UIUC) CS374 33 Spring 2017 33 / 1
Chandra Chekuri (UIUC) CS374 34 Spring 2017 34 / 1
Chandra Chekuri (UIUC) CS374 35 Spring 2017 35 / 1
Chandra Chekuri (UIUC) CS374 36 Spring 2017 36 / 1
Chandra Chekuri (UIUC) CS374 37 Spring 2017 37 / 1
Chandra Chekuri (UIUC) CS374 38 Spring 2017 38 / 1
Mark all vertices in V as not visited.
find SCC(G, u) the strong component of u: Compute rch(G, u) using DFS(G, u) Compute rch(Grev, u) using DFS(Grev, u) SCC(G, u) ⇐ rch(G, u) ∩ rch(Grev, u) ∀u ∈ SCC(G, u): Mark u as visited.
Chandra Chekuri (UIUC) CS374 38 Spring 2017 38 / 1
Mark all vertices in V as not visited.
find SCC(G, u) the strong component of u: Compute rch(G, u) using DFS(G, u) Compute rch(Grev, u) using DFS(Grev, u) SCC(G, u) ⇐ rch(G, u) ∩ rch(Grev, u) ∀u ∈ SCC(G, u): Mark u as visited.
Chandra Chekuri (UIUC) CS374 38 Spring 2017 38 / 1
A B C D E F G H
B, E, F G H A, C, D
Chandra Chekuri (UIUC) CS374 39 Spring 2017 39 / 1
Exploit structure of meta-graph...
1
2
3
Chandra Chekuri (UIUC) CS374 40 Spring 2017 40 / 1
Exploit structure of meta-graph...
1
2
3
1
Chandra Chekuri (UIUC) CS374 40 Spring 2017 40 / 1
Exploit structure of meta-graph...
1
2
3
1
2
3 4 Chandra Chekuri (UIUC) CS374 40 Spring 2017 40 / 1
Exploit structure of meta-graph...
1
2
3
1
2
3
4 Chandra Chekuri (UIUC) CS374 40 Spring 2017 40 / 1
Exploit structure of meta-graph...
1
2
3
1
2
3
4
Chandra Chekuri (UIUC) CS374 40 Spring 2017 40 / 1
Chandra Chekuri (UIUC) CS374 41 Spring 2017 41 / 1
Chandra Chekuri (UIUC) CS374 41 Spring 2017 41 / 1
Chandra Chekuri (UIUC) CS374 41 Spring 2017 41 / 1
...for computing the strong connected components in G
Mark all nodes as unvisited
DFS(u) Let Su be the nodes reached by u Output Su as a strong connected component Remove Su from G
Chandra Chekuri (UIUC) CS374 42 Spring 2017 42 / 1
G F E B C D H A
G F E B C D H A
G F E B C D H A
6] [1, [7, 12] [9, 10] [8, 11] [13 , 16] [14 , 15] [2, 5] [3, 4] G F E B C D H A Chandra Chekuri (UIUC) CS374 43 Spring 2017 43 / 1
Removing connected components: 1
G F E B C D H A
16 11 6 12 10 15 5 4
F E B C D H A
11 6 12 10 15 5 4
Chandra Chekuri (UIUC) CS374 44 Spring 2017 44 / 1
Removing connected components: 2
F E B C D H A
11 6 12 10 15 5 4
F E B C D A
11 6 12 10 5 4
Chandra Chekuri (UIUC) CS374 45 Spring 2017 45 / 1
Removing connected components: 3
F E B C D A
11 6 12 10 5 4
C D A
6 5 4
Chandra Chekuri (UIUC) CS374 46 Spring 2017 46 / 1
Removing connected components: 4
C D A
6 5 4
Chandra Chekuri (UIUC) CS374 47 Spring 2017 47 / 1
Final result
G F E B C D H A
Chandra Chekuri (UIUC) CS374 48 Spring 2017 48 / 1
Once the strong connected components are computed.
Chandra Chekuri (UIUC) CS374 49 Spring 2017 49 / 1
Chandra Chekuri (UIUC) CS374 50 Spring 2017 50 / 1
Chandra Chekuri (UIUC) CS374 51 Spring 2017 51 / 1
Chandra Chekuri (UIUC) CS374 52 Spring 2017 52 / 1
1
2
1
2
3
Chandra Chekuri (UIUC) CS374 53 Spring 2017 53 / 1
project: main.o utils.o command.o cc -o project main.o utils.o command.o main.o: main.c defs.h cc -c main.c utils.o: utils.c defs.h command.h cc -c utils.c command.o: command.c defs.h command.h cc -c command.c
Chandra Chekuri (UIUC) CS374 54 Spring 2017 54 / 1
project main.o utils.o command.o main.c utils.c defs.h command.h command.c
Chandra Chekuri (UIUC) CS374 55 Spring 2017 55 / 1
1
2
3
4
Chandra Chekuri (UIUC) CS374 56 Spring 2017 56 / 1
1
2
3
4
1
Chandra Chekuri (UIUC) CS374 57 Spring 2017 57 / 1
1
2
3
Chandra Chekuri (UIUC) CS374 58 Spring 2017 58 / 1