Presentation is loading. Please wait.

Presentation is loading. Please wait.

Breadth-First Search (BFS)

Similar presentations


Presentation on theme: "Breadth-First Search (BFS)"— Presentation transcript:

1 BFS, DFS, Applications of DFS Trees and Forests, Strongly-connected Components

2 Breadth-First Search (BFS)

3 Undirected edges: each edge twice
BFS Algorithm Mark start node and enqueue While queue is not empty Dequeue N For each neighbor X of N If X is not marked Mark X and enqueue Marked N Queue a - a a - b a b c a b c b c c - d c d d - b c d a = O(n+2m) = O(m) if m>>n Undirected edges: each edge twice Search order: a b c d

4 Depth-First Search (DFS)

5 DFS Algorithm Search order: a b c d Marked N DFS a a a a b b b b c c c
DFS (start node) Proc DFS (N) Mark N For each neighbor X of N If X is not marked DFS (X) Marked N DFS a a a a b b b b c c c c d d d c b b c d a Search order: a b c d = O(n+2m) = O(m) if m>>n

6 BFS vs. DFS BFS Order: a b c e d f a b e c f d Marked N Queue a - a
b a b c a b c e a b c e b c e d b c e d c e d f c e d f e d f d f f - BFS Order: a b c e d f

7 BFS vs. DFS DFS Order: a b c f d e (BFS Order: a b c e d f) a b e c f
Marked N DFS a a a a b b b b c c c c f f f c b d d d b a e e e DFS Order: a b c f d e (BFS Order: a b c e d f)

8 BFS & DFS with Directed Graphs
j k l m n a b c d e f g h i j k l m n BFS DFS a,b,c,d,e,f,g,h,i,j,k,l,m,n Same as before, by chance a,b,e,j,f,k,l,h,c,g,d,i,m,n Not same as before

9 DFS Trees and Forests 1 3 5 4 6 6 5 4 3 1 DFS Tree DFS Trees Forest
2 5 4 1 6 Convention: Roots in decreasing order; other nodes in increasing order Convention: increasing order 1 3 5 4 6 6 5 4 3 1 Can choose any order, so when there is a choice, choose smallest. When starting w/1, there are two choices, 3,5. Choose the smallest, 3. DFS Tree DFS Trees Forest Note: O(m) to create (check each edge once)

10 Edge Classification 3 2 5 4 1 6 Add all edges  but make them dashed if a marked node is encountered. 1 3 5 4 6 6 5 4 3 cross 1 backward cross cross forward cross backward cross backward cross Tree edge if y is a child of x in DFS forest. Forward edge if y is a descendent of x, but not a child. Backward edge if y is an ancestor of x or if x = y. Cross edge if y is not x and is neither a descendent nor an ancestor of x. backward cross

11 Postorder Numbers Given a DFS tree, do a postorder traversal of the tree edges and number the nodes as they are visited. 1 3 5 6 (6) 1 6 5 3 (5) (1) (6) (5) (4) (4) (2) (3) Order of number determines if forward or backward arc void dfs(int node) { notes(nodes) boolean TestAcyclic() dfsForest(); for (int u=0; j<MAX; u++) { List p = nodes[u].succ; while (; != null) (2) (3) (1) Can be added as the tree is built, so O(m) (assuming m >> n)

12 Observations about DFS and Postorder Numbers
There are many interesting applications of all these ideas  all of which take O(m) time, assuming m >> n. Left to Right Always directing back

13 Cycles A directed graph G is cyclic iff a DFS-tree of G has a backward edge This implies cycle detection can be done in O(m) (O(n2) in the worst case for a complete graph), which beats O(n3) in Warshall’s algorithm, i.e. compute matrix and see if there is a 1 on the diagonal.

14 (for acyclic directed graphs)
Topological Sorting (for acyclic directed graphs) Recall that partial orders and Hasse diagrams are acyclic directed graphs. A topological sort of a partial ordering R is an imposed total ordering over the elements such that x precedes y if xRy. Algorithm: List the nodes in reverse postorder (i.e. push nodes on a stack whenever we assign a postorder number; then pop all of them.)

15 Topological Sort Example
b c f d e Topological Sort Example Alphabetical: a b c f d e (1) (2) (3) (4) (5) (6) b f d c e a1 Reverse Alphabetical: Notes: (1) All edges go to the right. (2) The nodes are correctly and totally ordered. (3) More than one ordering is possible. f b (6) (5) d c (1) (4) b f c a e d1 e a (2) (3)

16 Reachability To test if we can reach y from x, build a DFS tree starting at x; y is reachable iff y is in the tree rooted at x. O(m), (O(n2) in the worst case). Beats Warshall’s O(n3), but Warshall’s tests reachability for all pairs. Can start the DFS reachability algorithm at every node, but then the algorithm is O(nm), which is O(n3) in the worst case. Which is better depends on whether the graph is sparse: DFS reachability, O(nm), beats Warshall’s, O(n3); dense: Warshall’s is cheaper to setup and run.

17 Strongly-connected Components
Definition: Maximal set of vertices such that every vertex in the set can reach every other vertex in the set through some path that never leaves the set The SCCs in a graph partition the vertices into disjoint sets

18 SCC Algorithm 1. Create the reverse graph (all the edges are reversed) 2. Compute the post-order traversal number for each vertex using the reversed graph (the order of leaving the vertices in the depth-search search) 3. Following the post-order traversal numbers on vertices from the last vertex to the first vertex, start a DFS on the original graph, and any vertex visited in that search belongs to the SCC. Repeat until all the vertices are visited.

19 SCC Example (1) 1. Create the reverse graph (all the edges are reversed) a b c f d e a b c f d e

20 SCC Example (2) 2. Compute the post-order traversal number for each vertex using the reversed graph (the order of leaving the vertices in the depth-search search) Starting with a a b c f d e f: 0 b: 1 c: 2 a: 3 d: 4 e: 5

21 SCC Example (3) 3. Following the post-order traversal numbers on vertices from the last vertex to the first vertex, start a DFS on the original graph, and any vertex visited in that search belongs to the SCC. Repeat until all the vertices are visited. a b c f d e Start with e: {e} Start with d: {d} Start with a: {a,b,c,f}

22 Connected Components for Undirected Graphs
Replace each edge with two directed edges and then run the DFS forest algorithm. O(m) + O(m) = O(m) We can prove: x and y are in the same connected component of G iff x and y are in the same DFS tree. (left as an exercise). We can observe the proof – not worth the time to formally prove.


Download ppt "Breadth-First Search (BFS)"

Similar presentations


Ads by Google