440 likes | 473 Vues
Graph Search Methods. Spring 2007 CSE, POSTECH. 2. 1. 3. 8. 4. 5. 9. 10. 6. 11. 7. Graph Search Methods. A vertex u is reachable from vertex v iff there is a path from v to u .
E N D
Graph Search Methods Spring 2007 CSE, POSTECH
2 1 3 8 4 5 9 10 6 11 7 Graph Search Methods • A vertex u is reachable from vertex v iff there is a path from v to u. • A search method starts at a given vertex v and visits/labels/marks every vertex that is reachable from v.
Graph Search Methods • Many graph problems solved by a search method • Finding a path from one vertex to another. • Determining whether a graph is connected • Find a spanning tree • Finding a minimum-cost path/spanning tree • Commonly used search methods • Breadth-first search (BFS) • Depth-first search (DFS)
Breadth-First Search (BFS) Algorithm • BFS algorithm is the method of starting at a vertex and identifying all vertices reachable from it • Read Section 16.8.1 and the pseudo-code of BFS in Figure 16.7 • Similar to the level-order traversal of a binary tree
Breadth-First Search (BFS) Algorithm • Visit the starting vertex and put into a FIFO queue • Repeatedly remove a vertex from the queue,visit its unvisited adjacent vertices,put newly visited vertices into the queue • All vertices reachable from the start vertex (including the start vertex) are visited • When the queue becomes empty, the search is terminated
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Start search at vertex 1.
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Mark/label start vertex and put in a FIFO queue. • Remove 1 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. FIFO queue 1
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 2 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 2 4
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 4 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 4 5 3 6
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 5 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 5 3 6
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 3 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 3 6 9 7
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 6 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 6 9 7
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 9 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue. • Are there any newly visited vertices? FIFO queue 9 7
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 7 from Queue;Visit adjacent unvisited vertices;Put in Queue. FIFO queue 7 8
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Remove 8 from Queue;Visit adjacent unvisited vertices;Put in Queue. FIFO queue 8
2 1 3 8 4 5 9 10 6 11 7 Breadth-First Search Example • Queue is empty, thus the search terminates. FIFO queue
2 1 3 8 4 5 9 6 7 Breadth-First Search Example • What was the order of visited vertices? 1, 2, 4, 5, 3, 6, 9, 7, 8 • What is the subgraph formed by the edges used to reach new vertices during the BFS?
Time Complexity • Each visited vertex is put on the queue exactly once. • When a vertex is removed from the queue,we examine its adjacent vertices. • O(n) if adjacency matrix used. • O(vertex degree) if adjacency lists used. • Total time • O(n2) if adjacency matrix used • O(n+e) if adjacency lists usedwhere e is the sum of vertex degrees andtherefore e is also the number of edges.
Path Finding Problem from vertex u to vertex v • Start a breadth-first search at vertex u. • Terminate if either of the following occurs • successfully when vertex v is visited or • unsuccessfully when queue becomes empty but v is not visited • Time • O(n2) when adjacency matrix used • O(n+e) when adjacency lists used(e is number of edges)
Is a Graph Connected? • Start a breadth-first search at any vertex of the graph. • A graph is connected iff all n vertices are visited. • Time • O(n2) when adjacency matrix used • O(n+e) when adjacency lists used(e is number of edges)
Connected Components • Start a breadth-first search at any unvisited vertex of the graph. • Newly visited vertices (plus edges between them)define a component. • Repeat until all vertices are visited. • Time • O(n2) when adjacency matrix used • O(n+e) when adjacency lists used(e is number of edges)
Connected Components 2 1 3 8 4 5 9 10 6 11 7
Breath-First Spanning Tree • Start a breadth-first search at any vertex of the graph. • If a graph is connected, the n-1 edges used to get to unvisited vertices define a spanning tree breadth-first spanning tree • Time • O(n2) when adjacency matrix used • O(n+e) when adjacency lists used(e is number of edges)
Breadth-First Spanning Tree Digraph Example BF Spanning Tree of Digraph (a)
Depth-First Search (DFS) Algorithm • DFS algorithm is an alternative to BFS • Similar to the pre-order traversal of a binary tree • See Figure 16.18 for the pseudo-code of DFS
Depth-First Search (DFS) Algorithm • Visit the starting vertex v and mark it as reached • Select an unreached vertex u adjacent from v • If such a vertex does not exist, the search terminates, otherwise a depth-first search from u is initiated • When this search is completed, we select another unreached vertex adjacent to from v • If such a vertex does not exist, then the search terminates, otherwise a depth-first search starts from this vertex • and so on…..
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Start search at vertex 1. • Label vertex 1 as reached and do a depth-first searchfrom either 2 or 4.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 2 and do a depth-first searchfrom either 3, 5 or 6.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 5 and do a depth-first searchfrom either 3, 7 or 9.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 9 and do a depth-first searchfrom either 6 or 8.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 8 and return to vertex 9. • From vertex 9 do a DFS(6).
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 6 and do a depth-first searchfrom either 4 or 7.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 4 and return to 6. • From vertex 6 do a DFS(7).
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label vertex 7 and return to 6. • Return to 9.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Return to 5.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Do a DFS(3).
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • Label 3 and return to 5. • Return to 2. • Return to 1.
2 1 3 8 4 5 9 10 6 11 7 Depth-First Search Example • DFS is done and return to invoking method.
2 1 3 8 4 5 9 6 7 Depth-First Search Example • What was the order of visited vertices? 1, 2, 5, 9, 8, 6, 4, 7, 3 • What is the subgraph formed by the edges used to reach new vertices during the BFS?
Depth-First Search Properties • Same complexity as BFS. • Same properties with respect to path finding,connected components, and spanning trees. • Edges used to reach unlabeled verticesdefine a depth-first spanning treewhen the graph is connected.
1 28 2 10 14 16 6 7 3 24 25 12 18 5 22 4 Exercise 16.41 – for graph of Figure 16.4(a) • Draw a linked adjacency-list representation • Starting from vertex 4, the order of visited vertices using BFS are? • Show the subgraph formed in part (b) • Redo parts (b) & (c) using DFS
Exercise 16.41 – solution (a) & (b) (a) Draw a linked adjacency-list representation (b) Starting from vertex 4, the order of visited vertices are 4,3,5,7,2,6,1
Exercise 16.41 – solution (c) & (d) (c) Show the subgraph formed in part (b) (d) Redo parts (b) & (c) using DFS DFS order: 4,3,2,1,6,5,7
READING • Do Exercise 16.41 using Figure 16.16(a) starting from vertex 1 • Read Chapter 16