Graphs Implementation Traversal November 26 2018 Cinda Heeren
Graphs Implementation Traversal November 26, 2018 Cinda Heeren / Geoffrey Tien 1
Isomorphism and subgraphs • November 26, 2018 Cinda Heeren / Geoffrey Tien 2
Degree • November 26, 2018 Cinda Heeren / Geoffrey Tien 3
Degree for directed graphs • November 26, 2018 Cinda Heeren / Geoffrey Tien 4
Directed acyclic graphs • DAGs are directed graphs with no (directed) cycles pa 2 test. Fills. o test. Fills. cpp stack. o filler. cpp stack. cpp filler. h filler. o stack. h Recall: topological sort We can only topo-sort DAGs! November 26, 2018 Cinda Heeren / Geoffrey Tien 5
Graph implementation Adjacency matrix Adjacency list November 26, 2018 Cinda Heeren / Geoffrey Tien 6
Adjacency matrix • Tom Shelly hamster popcorn Tom Shelly popcorn hamster popcorn November 26, 2018 Cinda Heeren / Geoffrey Tien 7
Adjacency matrix examples With weights and/or directed edges 5 A B C A B 1 31 D 5 E C 1 2 D 2 E 2 4 3 F A G B C F D E F A G A A B B C C D D E E F F G G November 26, 2018 Cinda Heeren / Geoffrey Tien G 8 B C D E F G 8
Adjacency matrix performance • What would be the complexity of these operations? – – – insert. Vertex(Vertex v) remove. Vertex(Vertex v) are. Adjacent(Vertex v, Vertex u) incident. Edges(Vertex v) insert. Edge(Vertex v, Vertex u) remove. Edge(Vertex v, Vertex u) 0 1 1 0 1 0 1 0 • What is the required space usage of this representation? November 26, 2018 Cinda Heeren / Geoffrey Tien 9
Adjacency list • Tom … Tom Shelly … hamster … popcorn … hamster popcorn November 26, 2018 Cinda Heeren / Geoffrey Tien 10
Adjacency list example 5 A B C A 1 B 31 D 5 E 2 D G F A A B B C C D D E E F F G G November 26, 2018 Cinda Heeren / Geoffrey Tien 8 2 E 2 3 F C 1 4 G 11
Adjacency list performance • What would be the complexity of these operations? – – – insert. Vertex(Vertex v) remove. Vertex(Vertex v) are. Adjacent(Vertex v, Vertex u) incident. Edges(Vertex v) insert. Edge(Vertex v, Vertex u) remove. Edge(Vertex v, Vertex u) • What is the required space usage of this representation? November 26, 2018 Cinda Heeren / Geoffrey Tien 12
Graph performance Implementation affects performance! Adjacency list Adjacency matrix Space November 26, 2018 Cinda Heeren / Geoffrey Tien 13
Graph traversals Breadth-first search Depth-first search November 26, 2018 Cinda Heeren / Geoffrey Tien 14
Graph traversals • Like tree traversals, graph traversals systematically visit every (reachable) vertex in a graph – however, there is no "root" vertex like trees, so usually start a traversal from some arbitrary/specified vertex – if the graph is not connected, there will be unreachable vertices • Unlike trees, graphs may contain cycles, and the degree is not consistent – need to prevent repeatedly visiting the same vertices due to cycles November 26, 2018 Cinda Heeren / Geoffrey Tien 15
Tree traversal vs graph traversal • Order? • Ordered – e. g. pre-order, in-order etc. • Where to start? • Starting point is obvious – from the root November 26, 2018 Cinda Heeren / Geoffrey Tien 16
Breadth-first search • start 1 hop 2 hops 3 hops 4 hops This looks very similar to a level-order traversal in a tree! How to control it? Use a queue! November 26, 2018 Cinda Heeren / Geoffrey Tien 17
Breadth-first search • 5 0 1, 3 1 0, 2, 4, 6, 7 0 4 2 1, 3, 8, 9 3 0, 2 3 1 7 4 1, 5, 6, 7 5 4 2 6 7 1, 4, 6 Identified: 9 8 6 1, 4, 7 0 1 2 3 4 5 6 7 8 9 8 2 9 2 November 26, 2018 Cinda Heeren / Geoffrey Tien 18
Breadth-first search 5 0 1, 3 1 0, 2, 4, 6, 7 0 4 2 1, 3, 8, 9 3 0, 2 3 1 7 4 1, 5, 6, 7 5 4 2 6 9 6 1, 4, 7 Identified: T T T T T 0 1 2 3 4 5 6 7 8 9 8 7 1, 4, 6 8 2 9 2 Queue: 0 Visited: 0 November 26, 2018 1 3 2 4 6 7 8 9 1 3 1 hop 2 4 6 7 2 hops 8 9 5 3 hops 5 Cinda Heeren / Geoffrey Tien 19
Breadth-first search Algorithm A for loop nested inside a while loop. Running time? November 26, 2018 Cinda Heeren / Geoffrey Tien 20
Depth-first search • Visits vertices along a single path as far as it can go, and then backtracks to the first junction and resumes down another path November 26, 2018 Cinda Heeren / Geoffrey Tien 21
Depth-first search Algorithm November 26, 2018 Cinda Heeren / Geoffrey Tien 22
Depth-first search 5 0 1, 3 1 0, 2, 4, 6, 7 0 4 2 1, 3, 8, 9 3 0, 2 3 1 7 4 1, 5, 6, 7 5 4 2 9 6 6 1, 4, 7 Visited: T T T T T 0 1 2 3 4 5 6 7 8 9 8 7 1, 4, 6 8 2 9 2 Visit order: 0 1 2 3 8 9 4 5 6 7 Finish order: 3 8 9 2 5 7 6 4 1 0 November 26, 2018 Cinda Heeren / Geoffrey Tien Running time? Can also implement like BFS using a stack 23
Applications of graph traversal ? Other applications: • Topological sort (DFS) • Modeling traffic flow • Cycle detection • Shortest path in maze (BFS) • … November 26, 2018 Cinda Heeren / Geoffrey Tien 24
Readings for this lesson • Carrano & Henry – Chapter 20. 2 (Graph ADT implementation) – Chapter 20. 3 (Graph traversals) • Next class: – Carrano & Henry, Chapter 20. 4. 2 – 20. 4. 3 (Spanning trees, minimum spanning trees) November 26, 2018 Cinda Heeren / Geoffrey Tien 25
- Slides: 25