18
1 Topological Sorting Chapter 9 CPTR 318 1 DAG A directed acyclic graph A directed graph No cycles A DAG “flows” in only one direction Vertices form a partial order reflexive antisymmetric transitive 2 Example DAG 3 B F E G A D C H I Topological Sort A linear ordering of the vertices within a DAG A vertex appears before any other vertex connected by an outbound edge All DAGs have one or more topological orderings 4 B F E G A D C H I Topological Sort 5 B F E G A D C 1: A, B, C, D, H, E, F, G, I 2: H, A, B, C, E, F, D, I, G 3: A, B, H, C, E, D, F, G, I Give a topological sort of this graph H I Applications Project planning PERT Weighted edges: compute critical path Scheduling courses with prerequisites 6

Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

1

Topological SortingChapter 9

CPTR 318

1

DAG

• A directed acyclic graph

– A directed graph

– No cycles

• A DAG “flows” in only one direction

• Vertices form a partial order

– reflexive

– antisymmetric

– transitive

2

Example DAG

3

B

FE

G

A D

C

H

I

Topological Sort

• A linear ordering of the vertices within a DAG

• A vertex appears before any other vertex connected by an outbound edge

• All DAGs have one or more topological orderings

4

B

FE

G

A D

C

H

I

Topological Sort

5

B

FE

G

A D

C

1: A, B, C, D, H, E, F, G, I

2: H, A, B, C, E, F, D, I, G

3: A, B, H, C, E, D, F, G, I

Give a topological sort of this graph

H

I

Applications

• Project planning

– PERT

– Weighted edges: compute critical path

• Scheduling courses with prerequisites

6

Page 2: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

2

Topological Sort Algorithm

• An application of depth-first search

7

dfs(Vertex v){

v.mark = visited;do_something(v); for ( each vertex w adjacent to v )

if ( w.mark != visited ) dfs(w);

}

Topological Sort Algorithm (1)

8

// Builds a list in topological order

List topo_dfs(Vertex v, List L)

{

v.mark = visited;

for ( each vertex w adjacent to v )

if ( w.mark != visited )

L = topo_dfs(w, L);

L.push_front(v); // Put v on front of list

return L;

}

Topological Sort Algorithm (2)

9

// Calls topo_dfs on all source vertices

// (vertices with no incoming edges)

List topo_sort(Graph G)

{

list = Ø; // List initially empty

for ( each vertex v in G )

if ( v has no incoming edges )

list = topo_dfs(v, list);

return list;

}

Topological Sort in Action

10

B

FE

G

A D

C

H

I

Topological Sort in Action

11

B

FE

G

A D

C

H

I

E

Topological Sort in Action

12

B

F

G

A D

C

H

I

Page 3: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

3

E

Topological Sort in Action

13

B

F

G

A D

C

H

I

FE

Topological Sort in Action

14

B

G

A D

C

H

I

G

FE

Topological Sort in Action

15

BA D

C

H

I

G

FE

Topological Sort in Action

16

BA D

C

H

I

G

FE

Topological Sort in Action

17

BA D

C

H

G

I

F

G

E

Topological Sort in Action

18

BA D

C

H

GF

I

Page 4: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

4

E F

G

Topological Sort in Action

19

BA D

C

H

GFE

I

H E F

G

Topological Sort in Action

20

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

21

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

22

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

23

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

24

BA D

C

GFEH

I

Page 5: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

5

H E F

G

Topological Sort in Action

25

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

26

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

27

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

28

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

29

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

30

BA D

C

GFEH

I

Page 6: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

6

H E F

G

Topological Sort in Action

31

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

32

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

33

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

34

BA D

C

GFEH

I

H E F

G

Topological Sort in Action

35

BA D

C

GFEH

I

I

H E F

G

Topological Sort in Action

36

BA D

C

I

GFEHID

Page 7: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

7

H E F

G

Topological Sort in Action

37

BA D

C

I

GFEHIDC

H E F

G

Topological Sort in Action

38

BA D

C

I

GFEHIDC

H E F

G

Topological Sort in Action

39

BA D

C

I

GFEHIDCB

H E F

G

Topological Sort in Action

40

BA D

C

I

GFEHIDCBA

H E F

G

Topological Sort Result

41

BA D

C

I

GFEHIDCBA

Alternate Topological Sort

42

B

FE

G

A D

C

H

I

Page 8: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

8

Alternate Topological Sort

43

B

FE

G

A D

C

H

I

Alternate Topological Sort

44

B

FE

G

A D

C

H

I

Alternate Topological Sort

45

B

FE

G

A D

C

H

I

Alternate Topological Sort

46

B

FE

G

A D

C

H

I

Alternate Topological Sort

47

B

FE

G

A D

C

H

I

Alternate Topological Sort

48

B

FE

G

A D

C

H

I

Page 9: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

9

Alternate Topological Sort

49

B

FE

G

A D

C

H

I

Alternate Topological Sort

50

B

FE

G

A D

C

H

I

Alternate Topological Sort

51

B

FE

G

A D

C

H

I

Alternate Topological Sort

52

B

FE

G

A D

C

H

I

Alternate Topological Sort

53

B

FE

G

A D

C

H

I

Alternate Topological Sort

54

B

FE

G

A D

C

H

I

G

Page 10: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

10

Alternate Topological Sort

55

B

FE

G

A D

C

H

I

GF

Alternate Topological Sort

56

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

57

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

58

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

59

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

60

B

FE

G

A D

C

H

I

GFE

Page 11: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

11

Alternate Topological Sort

61

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

62

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

63

B

FE

G

A D

C

H

I

GFE

Alternate Topological Sort

64

B

FE

G

A D

C

H

I

GFEI

Alternate Topological Sort

65

B

FE

G

A D

C

H

I

GFEID

Alternate Topological Sort

66

B

FE

G

A D

C

H

I

GFEIDC

Page 12: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

12

Alternate Topological Sort

67

B

FE

G

A D

C

H

I

GFEIDC

Alternate Topological Sort

68

B

FE

G

A D

C

H

I

GFEIDCB

Alternate Topological Sort

69

B

FE

G

A D

C

H

I

GFEIDCBA

Alternate Topological Sort

70

B

FE

G

A D

C

H

I

GFEIDCBA

Alternate Topological Sort

71

B

FE

G

A D

C

H

I

GFEIDCBAH

Alternate Result

72

B

FE

G

A D

C

H

I

GFEIDCBAH

Page 13: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

13

Topological Sort by Numbering

73

// Assigns numbers to vertices accessible

// from v in reverse topological order

topo_dfs(Vertex v)

{

for ( each vertex w adjacent to v )

if ( w.number < 0 )

topo_dfs(w);

v.number = N++; // Global N

}

Topological Sort by Numbering

74

// Calls topo_dfs on all source vertices

// (vertices with no incoming edges)

topo_sort(Graph G)

{

list = Ø; // List initially empty

N = 0; // Reset global N

for ( each vertex v in G )

v.number = -1; // Each node un-numbered

for ( each vertex v in G )

if ( v has no incoming edges )

topo_dfs(v);

}

Topological Sort Numbering

75

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

76

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

77

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

78

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Page 14: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

14

Alternate Topological Sort

79

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

80

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

81

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

82

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

83

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

84

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Page 15: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

15

Alternate Topological Sort

85

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

86

B

FE

G

A D

C

H

I

-1

-1

-1

-1

-1

-1

-1

-1 -1

Alternate Topological Sort

87

B

FE

G

A D

C

H

I

G

-1

0

-1

-1

-1

-1

-1

-1 -1

0

Alternate Topological Sort

88

B

FE

G

A D

C

H

I

GF

-1

0

1

-1

-1

-1

-1

-1 -1

01

Alternate Topological Sort

89

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

90

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Page 16: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

16

Alternate Topological Sort

91

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

92

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

93

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

94

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

95

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Alternate Topological Sort

96

B

FE

G

A D

C

H

I

GFE

-1

0

1

-1

-1

2

-1

-1 -1

012

Page 17: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

17

Alternate Topological Sort

97

B

FE

G

A D

C

H

I

GFEI

-1

0

1

-1

-1

2

-1

-1 3

0123

Alternate Topological Sort

98

B

FE

G

A D

C

H

I

GFEID

-1

0

1

4

-1

2

-1

-1 3

01234

Alternate Topological Sort

99

B

FE

G

A D

C

H

I

GFEIDC

-1

0

1

4

5

2

-1

-1 3

012345

Alternate Topological Sort

100

B

FE

G

A D

C

H

I

GFEIDC

-1

0

1

4

5

2

-1

-1 3

012345

Alternate Topological Sort

101

B

FE

G

A D

C

H

I

GFEIDCB

6

0

1

4

5

2

-1

-1 3

0123456

Alternate Topological Sort

102

B

FE

G

A D

C

H

I

GFEIDCBA

6

0

1

4

5

2

-1

7 3

01234567

Page 18: Example DAG Topological Sort - Southerncomputing.southern.edu/.../318_09-graphs-toposort.pdf · 1 Topological Sorting Chapter 9 CPTR 318 1 DAG •A directed acyclic graph –A directed

18

Alternate Topological Sort

103

B

FE

G

A D

C

H

I

GFEIDCBA

6

0

1

4

5

2

-1

7 3

01234567

Alternate Topological Sort

104

B

FE

G

A D

C

H

I

GFEIDCBAH

6

0

1

4

5

2

8

7 3

012345678

Numbering

• The numbers list the vertices in reversetopological order

105

Topological Sort Complexity

• Same as DFS: O(|V| + |E|)

– For a dense graph?

– For a sparse graph?

106