Graph Traversing and Seaching - Data Structure- AIUB.pptx
Surid2
20 views
45 slides
Jul 16, 2024
Slide 1 of 45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
About This Presentation
Graph Traversing and Seaching- Data Structure
Size: 445 KB
Language: en
Added: Jul 16, 2024
Slides: 45 pages
Slide Content
Graph Traversing and Searching Course Code: CSC 2106 Dept. of Computer Science Faculty of Science and Technology Lecture No: 12.2 Week No: 12 Semester: 21-22 Fall Lecturer: Dr. Md Mehedi Hasan; mmhasan@ aiub .edu Course Title: Data Structure (Theory)
Lecture Outline Graph Search Methods Depth-First-Search (DFS) DFS Example
Graph Search Methods Given : a graph G = (V, E), directed or undirected Goal : methodically explore every vertex and edge Ultimately : build a tree on the graph Pick a vertex as the root Choose certain edges to produce a tree Note: might also build a forest if graph is not connected
Graph Search Methods Many graph problems solved using a search method. Path from one vertex to another. Is the graph connected? Find a spanning tree. Etc. Commonly used search methods: Depth-first search. Breadth-first search. Other variants: best-first, iterated deepening search, etc.
Depth-First Search depthFirstSearch (v) { Label vertex v as reached. for (each unreached vertex u adjacenct from v ) depthFirstSearch ( u ); }
Depth-First Search Example Suppose that vertex 2 is selected. 2 3 8 1 4 5 9 6 7 1 2 1 stack Start search at vertex 1. Label vertex 1 and do a depth first search from either 2 or 4 .
Depth-First Search Example 2 3 8 1 4 5 9 6 7 Label vertex 2 and do a depth first search from either 3 , 5 , or 6 . 1 2 2 5 stack Suppose that vertex 5 is selectd .
2 3 8 1 4 5 9 6 7 Label vertex 5 and do a depth first search from either 3 , 7 , or 9 . 1 2 2 5 5 9 Suppose that vertex 9 is selected. stack 1 2 5 Depth-First Search Example
Label vertex 9 and do a depth first search from either 6 or 8 . Suppose that vertex 8 is selected. stack 1 2 5 9 2 3 8 1 4 5 9 6 7 1 2 2 5 5 9 9 8 Depth-First Search Example
Depth-First Search Explore “ deeper ” in the graph whenever possible - (Follows LIFO mechanism) Edges are explored/visited out of the most recently discovered vertex v that still has unexplored/unvisited edges. When all of v’s edges have been explored, backtrack to the vertex from which v was discovered. computes 2 timestamps: (discovered) and (finished) builds one or more depth-first tree(s) ( depth-first forest ) Algorithm colors each vertex WHITE : undiscovered GRAY : discovered, in process BLACK : finished, all adjacent vertices have been discovered
DFS: Classification of Edges DFS can be used to classify edges of G: Tree edges : Edges in the depth-first forest. Back edges : Edges (u, v) connecting a vertex u to an ancestor v in a depth-first tree (where v is not the parent of u). It also applies for self loops. Forward edges : Non-tree edges (u, v) connecting a vertex u to a descendant v in a depth-first tree. Cross edges : All other edges. DFS yields valuable information about the structure of a graph. In DFS of an undirected graph we get only tree and back edges; no forward or back-edges.
DFS Example: Classification of Edges x z y w v u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time starting the traversal with node u
x z y w v u x z y w v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/ u Forward Edge Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Cross Edge Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Cross Edge 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Cross Edge 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Cross Edge 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/11 z 3/6 y 9/ w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
x z y w v u x z y w v 1/ u x z y w 2/ v 1/ u Tree edge x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u 4/ x z 3/ y w 2/ v 1/ u Back Edge 4/5 x z 3/ y w 2/ v 1/ u 4/5 x z 3/6 y w 2/ v 1/ u 4/5 x z 3/6 y w 2/7 v 1/ u 4/5 x z 3/6 y w 2/7 v 1/8 u 4/5 x z 3/6 y w 2/7 v 1/8 u Forward Edge 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x z 3/6 y 9/ w 2/7 v 1/8 u Cross Edge 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/ z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/11 z 3/6 y 9/ w 2/7 v 1/8 u 4/5 x 10/11 z 3/6 y 9/12 w 2/7 v 1/8 u Undiscovered Discovered, On Process Finished , all adjacent vertices have been discovered Discover time/ Finish time DFS Example: Classification of Edges
Applications of Depth First Search For a weighted graph, DFS traversal of the graph produces the minimum spanning tree and all pair shortest path tree Detecting cycle in a graph Path Finding Topological Sorting To test if a graph is bipartite Finding Strongly Connected Components of a graph Solving puzzles with only one solution, such as mazes.
Books “ Schaum's Outline of Data Structures with C++” . By John R. Hubbard (Can be found in university Library) “Data Structures and Program Design”, Robert L. Kruse, 3 rd Edition, 1996. “Data structures, algorithms and performance”, D. Wood, Addison-Wesley, 1993 “Advanced Data Structures”, Peter Brass, Cambridge University Press, 2008 “Data Structures and Algorithm Analysis”, Edition 3.2 (C++ Version), Clifford A. Shaffer, Virginia Tech, Blacksburg, VA 24061 January 2, 2012 “C++ Data Structures”, Nell Dale and David Teague, Jones and Bartlett Publishers, 2001. “Data Structures and Algorithms with Object-Oriented Design Patterns in C++”, Bruno R. Preiss,