graph searching
DESCRIPTION
Graph Searching. CSE 373 Data Structures Lecture 20. Readings. Reading Sections 9.5 and 9.6. Graph Searching. Find Properties of Graphs Spanning trees Connected components Bipartite structure Biconnected components Applications Finding the web graph – used by Google and others - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/1.jpg)
Graph Searching
CSE 373Data Structures
Lecture 20
![Page 2: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/2.jpg)
3/7/03 Graph Searching - Lecture 20 2
Readings
• Reading › Sections 9.5 and 9.6
![Page 3: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/3.jpg)
3/7/03 Graph Searching - Lecture 20 3
Graph Searching
• Find Properties of Graphs› Spanning trees› Connected components› Bipartite structure› Biconnected components
• Applications› Finding the web graph – used by Google and
others› Garbage collection – used in Java run time system› Alternating paths for matching
![Page 4: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/4.jpg)
3/7/03 Graph Searching - Lecture 20 4
Graph Searching Methodology Breadth-First Search (BFS)
• Breadth-First Search (BFS)› Use a queue to explore neighbors of
source vertex, then neighbors of neighbors etc.
› All nodes at a given distance (in number of edges) are explored before we go further
![Page 5: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/5.jpg)
3/7/03 Graph Searching - Lecture 20 5
Graph Searching Methodology Depth-First Search (DFS)
• Depth-First Search (DFS)› Searches down one path as deep as
possible› When no nodes available, it backtracks› When backtracking, it explores side-paths
that were not taken› Uses a stack (instead of a queue in BFS)› Allows an easy recursive implementation
![Page 6: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/6.jpg)
3/7/03 Graph Searching - Lecture 20 6
Depth First Search Algorithm
• Recursive marking algorithm• Initially every vertex is unmarked
DFS(i: vertex) mark i; for each j adjacent to i do if j is unmarked then DFS(j)end{DFS}
Marks all vertices reachable from i
![Page 7: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/7.jpg)
3/7/03 Graph Searching - Lecture 20 7
DFS Application: Spanning Tree
• Given a (undirected) graph G(V,E) a spanning tree of G is a graph G’(V’,E’)› V’ = V, the tree touches all vertices
(spans) the graph› E’ is a subset of E such G’ is connected
and there is no cycle in G’› A graph is connected if given any two
vertices u and v, there is a path from u to v
![Page 8: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/8.jpg)
3/7/03 Graph Searching - Lecture 20 8
Example of DFS: Graph connectivity and spanning tree
12
7
5
4
6
3
DFS(1)
![Page 9: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/9.jpg)
3/7/03 Graph Searching - Lecture 20 9
Example Step 2
12
7
5
4
6
3
DFS(1)DFS(2)
Red links will define the spanning tree if the graph is connected
![Page 10: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/10.jpg)
3/7/03 Graph Searching - Lecture 20 10
Example Step 5
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(5)
![Page 11: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/11.jpg)
3/7/03 Graph Searching - Lecture 20 11
Example Steps 6 and 7
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(5)DFS(3)DFS(7)
![Page 12: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/12.jpg)
3/7/03 Graph Searching - Lecture 20 12
Example Steps 8 and 9
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(5)DFS(7)
![Page 13: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/13.jpg)
3/7/03 Graph Searching - Lecture 20 13
Example Step 10 (backtrack)
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(5)
![Page 14: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/14.jpg)
3/7/03 Graph Searching - Lecture 20 14
Example Step 12
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(6)
![Page 15: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/15.jpg)
3/7/03 Graph Searching - Lecture 20 15
Example Step 13
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)DFS(6)
![Page 16: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/16.jpg)
3/7/03 Graph Searching - Lecture 20 16
Example Step 14
12
7
5
4
6
3
DFS(1)DFS(2)DFS(3)DFS(4)
![Page 17: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/17.jpg)
3/7/03 Graph Searching - Lecture 20 17
Example Step 17
12
7
5
4
6
3
DFS(1)
All nodes are marked so graph is connected; red links define a spanning tree
![Page 18: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/18.jpg)
3/7/03 Graph Searching - Lecture 20 18
Adjacency List Implementation• Adjacency lists
1234567
2 4 63 1 74 55 6 13 7 4
3
1 45 2
12
7
5
46
3
G0000000
M
Index next
![Page 19: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/19.jpg)
3/7/03 Graph Searching - Lecture 20 19
Connected Components
12
3
9
86
10 4
5
7
11
3 connected components
![Page 20: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/20.jpg)
3/7/03 Graph Searching - Lecture 20 20
Connected Components
12
3
9
86
10 4
5
7
11
3 connected components are labeled
![Page 21: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/21.jpg)
3/7/03 Graph Searching - Lecture 20 21
Depth-first Search for Labeling Connected components
Main {i : integerfor i = 1 to n do M[i] := 0;label := 1;for i = 1 to n do if M[i] = 0 then DFS(G,M,i,label); label := label + 1;}DFS(G[]: node ptr array, M[]: int array, i,label: int) { v : node pointer; M[i] := label; v := G[i]; while v null do if M[v.index] = 0 then DFS(G,M,v.index,label); v := v.next;}
![Page 22: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/22.jpg)
3/7/03 Graph Searching - Lecture 20 22
Performance DFS
• n vertices and m edges• Storage complexity O(n + m)• Time complexity O(n + m) • Linear Time!
![Page 23: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/23.jpg)
3/7/03 Graph Searching - Lecture 20 23
Breadth-First SearchBFSInitialize Q to be empty;Enqueue(Q,1) and mark 1;while Q is not empty do i := Dequeue(Q); for each j adjacent to i do if j is not marked then Enqueue(Q,j) and mark j;end{BFS}
![Page 24: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/24.jpg)
3/7/03 Graph Searching - Lecture 20 24
Can do Connectivity using BFS
• Uses a queue to order search
Queue = 1
12
7
5
4
6
3
![Page 25: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/25.jpg)
3/7/03 Graph Searching - Lecture 20 25
Beginning of example
12
7
5
4
6
3
Queue = 2,4,6Mark while on queueto avoid putting inqueue more than once
![Page 26: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/26.jpg)
3/7/03 Graph Searching - Lecture 20 26
Depth-First vs Breadth-First
• Depth-First› Stack or recursion› Many applications
• Breadth-First› Queue (recursion no help)› Can be used to find shortest paths from the start
vertex› Can be used to find short alternating paths for
matching
![Page 27: Graph Searching](https://reader035.vdocuments.us/reader035/viewer/2022062520/56815d41550346895dcb47a4/html5/thumbnails/27.jpg)
3/7/03 Graph Searching - Lecture 20 27
Minimum Spanning Tree
• Edges are weighted: find minimum cost spanning tree
• Applications› Find cheapest way to wire your house› Find minimum cost to wire a message on
the Internet