click to begin demo - sjtuxiaojuan/algo16/slides/6demo... · 2016. 10. 13. · 4.2 kosaraju-sharir...

Post on 21-Aug-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Algorithms, 4th Edition ∙ Robert Sedgewick and Kevin Wayne ∙ Copyright © 2002–2012 ∙ September 10, 2014 11:22:46 AM

4.2 Kosaraju-Sharir Algorithm

click to begin demo

2

Phase 1. Compute reverse postorder in GR.

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

digraph G

1

4

9

2

5

3

0

1211

10

8 76 8 76

3

‣ DFS in reverse graph

‣ DFS in original graph

4

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

digraph G

1

4

9

2

5

3

0

1211

10

8 76 8 76

5

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

reverse digraph GR

0

1

2

3

4

5

6

7

8

9

10

11

12

marked[v]v

6

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

visit 0

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

F

F

F

F

F

F

F

marked[v]v

7

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

F

F

F

F

F

F

marked[v]v

8

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

visit 8

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

F

T

F

F

F

F

marked[v]v

9

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

8 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

F

T

F

F

F

F

marked[v]v

8

6

10

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

7

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

F

T

F

F

F

F

6

marked[v]v

8

11

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

7

Kosaraju-Sharir

visit 7

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

T

T

F

F

F

F

6

marked[v]v

8

12

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

7

Kosaraju-Sharir

7 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

F

F

F

F

T

T

T

F

F

F

F

6

marked[v]v

7 8

6

13

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

0

1211

10

1

Kosaraju-Sharir

6 done

0

1

2

3

4

5

6

7

8

9

10

11

12

6

marked[v]v

6 7 8

T

F

F

F

F

F

T

T

T

F

F

F

F

0

14

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 0

0

1

2

3

4

5

6

7

8

9

10

11

12

0marked[v]v

6 7 8

T

F

F

F

F

F

T

T

T

F

F

F

F

15

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 2

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

F

F

T

T

T

F

F

F

F

0marked[v]v

6 7 8

16

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 4

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

F

F

F

F

0

6 7 8

marked[v]v

17

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 11

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

F

F

T

F

0marked[v]v

6 7 8

18

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 9

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

F

T

F

0marked[v]v

6 7 8

19

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 12

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

F

T

T

0marked[v]v

6 7 8

20

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 12

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

F

T

T

0marked[v]v

6 7 8

21

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

visit 10

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0marked[v]v

6 7 8

22

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

1211

10

1

Kosaraju-Sharir

10 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0marked[v]v

10 6 7 8

12

23

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

9

2

5

3

11

1

Kosaraju-Sharir

12 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

12

marked[v]v

12 10 6 7 8

9

24

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

2

5

3

11

1

Kosaraju-Sharir

visit 9

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

9

marked[v]v

12 10 6 7 8

25

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

2

5

3

11

1

Kosaraju-Sharir

visit 9

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

9

marked[v]v

12 10 6 7 8

26

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

2

5

3

11

1

Kosaraju-Sharir

9 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

9

marked[v]v

9 12 10 6 7 8

11

27

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1

4

2

5

3

1

Kosaraju-Sharir

11 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

11

marked[v]v

11 9 12 10 6 7 8

4

28

Phase 1. Compute reverse postorder in GR.

11 9 12 10 6 7 8

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

visit 4

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

4

marked[v]v

29

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

visit 4

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

F

T

T

T

T

T

T

T

0

4

marked[v]v

11 9 12 10 6 7 8

30

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

visit 5

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

F

T

T

T

T

T

T

T

T

T

0

4

marked[v]v

11 9 12 10 6 7 8

31

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

visit 3

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

T

T

T

T

T

T

T

T

T

T

0

4

marked[v]v

11 9 12 10 6 7 8

32

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

visit 3

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

T

T

T

T

T

T

T

T

T

T

0

4

marked[v]v

11 9 12 10 6 7 8

33

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 2

5

3

1

Kosaraju-Sharir

3 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

T

T

T

T

T

T

T

T

T

T

0

4

marked[v]v

3 11 9 12 10 6 7 8

5

34

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 21

Kosaraju-Sharir

visit 5

0

1

2

3

4

5

6

7

8

9

10

11

12

T

F

T

T

T

T

T

T

T

T

T

T

T

0

4

5

marked[v]v

3 11 9 12 10 6 7 8

35

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 21

Kosaraju-Sharir

5 done

0

1

2

3

4

5

6

7

8

9

10

11

12

0

4

5

marked[v]v

5 3 11 9 12 10 6 7 8

T

F

T

T

T

T

T

T

T

T

T

T

T

4

36

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

1 21

Kosaraju-Sharir

4 done

0

1

2

3

4

5

6

7

8

9

10

11

12

0

4

marked[v]v

4 5 3 11 9 12 10 6 7 8

T

F

T

T

T

T

T

T

T

T

T

T

T

2

37

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

11

Kosaraju-Sharir

visit 2

0

1

2

3

4

5

6

7

8

9

10

11

12

0

2

marked[v]v

4 5 3 11 9 12 10 6 7 8

T

F

T

T

T

T

T

T

T

T

T

T

T

38

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

11

Kosaraju-Sharir

2 done

0

1

2

3

4

5

6

7

8

9

10

11

12

0

2

marked[v]v

2 4 5 3 11 9 12 10 6 7 8

T

F

T

T

T

T

T

T

T

T

T

T

T

0

39

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

11

Kosaraju-Sharir

0 done

0

1

2

3

4

5

6

7

8

9

10

11

12

0marked[v]v

0 2 4 5 3 11 9 12 10 6 7 8

T

F

T

T

T

T

T

T

T

T

T

T

T

40

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

11

Kosaraju-Sharir

visit 1

0

1

2

3

4

5

6

7

8

9

10

11

12

T

T

T

T

T

T

T

T

T

T

T

T

T

marked[v]v

0 2 4 5 3 11 9 12 10 6 7 8

41

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

1 done

0

1

2

3

4

5

6

7

8

9

10

11

12

T

T

T

T

T

T

T

T

T

T

T

T

T

marked[v]v

1 0 2 4 5 3 11 9 12 10 6 7 8

1

42

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

check 2 3 4 5 6 7 8 9 10 11 12

0

1

2

3

4

5

6

7

8

9

10

11

12

T

T

T

T

T

T

T

T

T

T

T

T

T

marked[v]v

1 0 2 4 5 3 11 9 12 10 6 7 8

43

Phase 1. Compute reverse postorder in GR.

1

4

9

2

5

3

0

1211

10

1

8 76

Kosaraju-Sharir

1 0 2 4 5 3 11 9 12 10 6 7 8

reverse digraph GR

44

‣ DFS in reverse graph

‣ DFS in original graph

45

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

1

4

9

2

5

3

0

1211

10

8 76 8 76 0

1

2

3

4

5

6

7

8

9

10

11

12

scc[v]v

original digraph G

1 0 2 4 5 3 11 9 12 10 6 7 8

46

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

1

4

9

2

5

3

0

1211

10

8 76 8 76

visit 1

0

1

2

3

4

5

6

7

8

9

10

11

12

0

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

47

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

11

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

4

9

2

5

3

0

1211

10

8 76 8 76

1 done

0

1

2

3

4

5

6

7

8

9

10

11

12

0

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

48

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

1

4

9

2

5

3

0

1211

10

8 76 8 76

strong component: 1

0

1

2

3

4

5

6

7

8

9

10

11

12

0

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

49

1

0

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 0

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

50

1

0

1

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 5

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

51

1

0

1

1

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 4

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

52

1

0

1

1

1

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 3

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

53

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 3

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

54

1

0

1

1

1

1

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 2

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

55

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 2

4

9

2

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

56

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

22

4

9

5

3

0

1211

10

Kosaraju-Sharir

2 done

4

9

5

3

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

3

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

57

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

3

4

9

2

5

0

1211

10

Kosaraju-Sharir

3 done

4

9

5

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

3

4

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

58

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 4

4

9

5

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

59

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

9

2

5

3

0

1211

10

Kosaraju-Sharir

4 done

9

5

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

44

5

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

60

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

5

4

9

2

3

0

1211

10

Kosaraju-Sharir

5 done

9

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

5

0

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

61

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

4

9

2

5

3

0

1211

10

Kosaraju-Sharir

visit 0

9

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

8 76

1

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

62

00

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

1211

10

8 76

Kosaraju-Sharir

0 done

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

63

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

3

0

1211

10

8 76

Kosaraju-Sharir

strong component: 0 2 3 4 5

9

0

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

5

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

64

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

check 2

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

65

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

check 4

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

66

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

check 5

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

67

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

check 3

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

68

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 11

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

69

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 11

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

70

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 12

9

1211

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

71

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 9

9

12

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

11

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

72

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 9

9

12

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

11

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

73

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

8 76

Kosaraju-Sharir

visit 10

9

12

10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

11

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

74

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

10

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

10 done

9

12

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

11

9 10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

75

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

9

1

4

2

5

3

0

1211

8 76

Kosaraju-Sharir

9 done

12

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

11

109

12

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

76

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

12

1

4

9

2

5

3

0

11

8 76

Kosaraju-Sharir

12 done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

11

10

11 12

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

77

1111

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

12

8 76

Kosaraju-Sharir

11 done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

78

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

strong component: 9 10 11 12

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

11

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

79

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

check 9

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

80

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

check 12

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

81

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

check 10

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

2

2

2

2

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

82

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

2

2

2

2

86 7

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

83

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

2

2

2

2

8 76

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

84

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

2

2

2

2

8 76

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

85

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 8

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

3

2

2

2

2

8 76

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

86

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

8

1

4

9

2

5

3

0

1211

7

Kosaraju-Sharir

8 done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

3

2

2

2

2

7

10

6 866

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

87

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 6

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

3

2

2

2

2

76

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

88

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

6 done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

3

2

2

2

2

7

10

6

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

89

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 7

Kosaraju-Sharir

strong component: 6 8

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

3

2

2

2

2

7

10

6

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

90

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 7

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

7

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

91

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

visit 7

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

7

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

92

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

7 done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

7

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

93

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

8 76

Kosaraju-Sharir

strong component: 7

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

7

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

94

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

86 7

Kosaraju-Sharir

check 8

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

10

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

95

Phase 2. Run DFS in G, visiting unmarked vertices in reverse postorder of GR.

1

4

9

2

5

3

0

1211

10

86 7

Kosaraju-Sharir

done

0

1

2

3

4

5

6

7

8

9

10

11

12

1

0

1

1

1

1

3

4

3

2

2

2

2

1 0 2 4 5 3 11 9 12 10 6 7 8

scc[v]v

top related