Download presentation

Presentation is loading. Please wait.

Published byJonah Houle Modified over 4 years ago

1
© 2010 Goodrich, Tamassia Graphs1 Graph Data Structures ORD DFW SFO LAX 802 1743 1843 1233 337

2
© 2010 Goodrich, Tamassia Graphs2 Main Methods of the Graph ADT Vertices and edges are positions store elements Accessor methods endVertices(e): an array of the two endvertices of e opposite(v, e): the vertex opposite of v on e areAdjacent(v, w): true iff v and w are adjacent replace(v, x): replace element at vertex v with x replace(e, x): replace element at edge e with x Update methods insertVertex(o): insert a vertex storing element o insertEdge(v, w, o): insert an edge (v,w) storing element o removeVertex(v): remove vertex v (and its incident edges) removeEdge(e): remove edge e Iterable collection methods incidentEdges(v): edges incident to v vertices(): all vertices in the graph edges(): all edges in the graph

3
© 2010 Goodrich, Tamassia Graphs3 Adjacency Matrix Structure Edge list structure Augmented vertex objects Integer key (index) associated with vertex 2D-array adjacency array Reference to edge object for adjacent vertices Null for non nonadjacent vertices The “old fashioned” version just has 0 for no edge and 1 for edge u v w ab 012 0 1 2 a uv w 01 2 b

4
© 2010 Goodrich, Tamassia Graphs4 Adjacency List Structure Incidence sequence for each vertex sequence of references to edge objects of incident edges Augmented edge objects references to associated positions in incidence sequences of end vertices u v w ab a uv w b

5
© 2010 Goodrich, Tamassia Graphs5 Performance n vertices, m edges no parallel edges no self-loops Edge List Adjacency List Adjacency Matrix Space n m n2n2 incidentEdges( v ) mdeg(v)n areAdjacent ( v, w ) mmin(deg(v), deg(w))1 insertVertex( o ) 11n2n2 insertEdge( v, w, o ) 111 removeVertex( v ) mdeg(v)n2n2 removeEdge( e ) 111

6
6 Applications of BFS and DFS CSE 2011 Winter 2011 25 August 2014

7
7 Some Applications of BFS and DFS BFS To find the shortest path from a vertex s to a vertex v in an unweighted graph To find the length of such a path To find out if a graph contains cycles To construct a BSF tree/forest from a graph DFS To find a path from a vertex s to a vertex v. To find the length of such a path. To construct a DSF tree/forest from a graph.

8
8 Testing for Cycles

9
9 Method isCyclic(v) returns true if a directed graph (with only one component) contains a cycle, and returns false otherwise. else return true; return false;

10
10 Finding Cycles To output the cycle just detected, use info in prev[ ]. NOTE: The code above applies only to directed graphs. Homework: Explain why that code does not work for undirected graphs.

11
Finding Cycles in Undirected Graphs To detect/find cycles in an undirected graph, we need to classify the edges into 3 categories during program execution: unvisited edge: never visited. discovery edge: visited for the very first time. cross edge: edge that forms a cycle. Code fragment 13.10, p. 623. When the BFS algorithm terminates, the discovery edges form a spanning tree. If there exists a cross edge, the undirected graph contains a cycle. 11

12
BFS Algorithm (in textbook) Breadth-First Search 12 The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm BFS(G, s) L 0 new empty sequence L 0.insertLast(s) setLabel(s, VISITED ) i 0 while L i.isEmpty() L i 1 new empty sequence for all v L i.elements() for all e G.incidentEdges(v) if getLabel(e) UNEXPLORED w opposite(v,e) if getLabel(w) UNEXPLORED setLabel(e, DISCOVERY ) setLabel(w, VISITED ) L i 1.insertLast(w) else setLabel(e, CROSS ) i i 1 Algorithm BFS(G) Input graph G Output labeling of the edges and partition of the vertices of G for all u G.vertices() setLabel(u, UNEXPLORED ) for all e G.edges() setLabel(e, UNEXPLORED ) for all v G.vertices() if getLabel(v) UNEXPLORED BFS(G, v)

13
Example Breadth-First Search 13 C B A E D discovery edge cross edge A visited vertex A unexplored vertex unexplored edge L0L0 L1L1 F CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F

14
Example (2) Breadth-First Search 14 CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

15
Example (3) Breadth-First Search 15 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

16
16 Computing Spanning Trees

17
17 Trees Tree: a connected graph without cycles. Given a connected graph, remove the cycles a tree. The paths found by BFS(s) form a rooted tree (called a spanning tree), with the starting vertex as the root of the tree. BFS tree for vertex s = 2 What would a level-order traversal of the tree tell you?

18
18 Computing a BFS Tree Use BFS on a vertex BFS( v ) with array prev[ ] The paths from source s to the other vertices form a tree

19
19 Computing Spanning Forests

20
20 Computing a BFS Forest A forest is a set of trees. A connected graph gives a tree (which is itself a forest). A connected component also gives us a tree. A graph with k components gives a forest of k trees.

21
21 Example D E A C F B G K H L N M O R Q P s A graph with 3 components

22
22 Example of a Forest D E A C F B G K H L N M O R Q P s A forest with 3 trees We removed the cycles from the previous graph.

23
23 Computing a BFS Forest Use BFS method on a graph BFSearch( G ), which calls BFS( v ) Use BFS( v ) with array prev[ ]. The paths originating from v form a tree. BFSearch( G ) examines all the components to compute all the trees in the forest.

24
24 Applications of DFS Is there a path from source s to a vertex v? Is an undirected graph connected? Is a directed graph strongly connected? To output the contents (e.g., the vertices) of a graph To find the connected components of a graph To find out if a graph contains cycles and report cycles. To construct a DSF tree/forest from a graph

25
Finding Cycles Using DFS Similar to using BFS. For undirected graphs, classify the edges into 3 categories during program execution: unvisited edge, discovery edge, and back (cross) edge. Code Fragment 13.1, p. 613. If there exists a back edge, the undirected graph contains a cycle. 25

26
© 2010 Goodrich, Tamassia Depth-First Search26 DFS Algorithm The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm DFS(G, v) Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setLabel(v, VISITED) for all e G.incidentEdges(v) if getLabel(e) UNEXPLORED w opposite(v,e) if getLabel(w) UNEXPLORED setLabel(e, DISCOVERY) DFS(G, w) else setLabel(e, BACK) Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u G.vertices() setLabel(u, UNEXPLORED) for all e G.edges() setLabel(e, UNEXPLORED) for all v G.vertices() if getLabel(v) UNEXPLORED DFS(G, v)

27
© 2010 Goodrich, Tamassia Depth-First Search27 Example DB A C ED B A C ED B A C E discovery edge back edge A visited vertex A unexplored vertex unexplored edge

28
© 2010 Goodrich, Tamassia Depth-First Search28 Example (cont.) DB A C E DB A C E DB A C E D B A C E

29
29 DFS Tree Resulting DFS-tree. Notice it is much “deeper” than the BFS tree. Captures the structure of the recursive calls: - when we visit a neighbor w of v, we add w as child of v - whenever DFS returns from a vertex v, we climb up in the tree from v to its parent

30
30 Applications – DFS vs. BFS What can BFS do and DFS can’t? Finding shortest paths (in unweighted graphs) What can DFS do and BFS can’t? Finding out if a connected undirected graph is biconnected A connected undirected graph is biconnected if there are no vertices whose removal disconnects the rest of the graph. Application in computer networks: ensuring that a network is still connected when a router/link fails.

31
A graph that is not biconnected 31

32
32 DFS vs. BFS CB A E D L0L0 L1L1 F L2L2 CB A E D F DFSBFS ApplicationsDFSBFS Spanning forest, connected components, paths, cycles Shortest paths Biconnected components

33
33 Final Exam Sunday, April 17, 10:00-13:00 Materials: All lectures notes and corresponding sections in the textbook from the beginning to today’s lecture Homework questions Assignments 1 to 5

Similar presentations

OK

1 Graphs: Concepts, Representation, and Traversal CSC401 – Analysis of Algorithms Lecture Notes 13 Graphs: Concepts, Representation, and Traversal Objectives:

1 Graphs: Concepts, Representation, and Traversal CSC401 – Analysis of Algorithms Lecture Notes 13 Graphs: Concepts, Representation, and Traversal Objectives:

© 2018 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google