Presentation is loading. Please wait.

Presentation is loading. Please wait.

Discussion #32 1/13 Discussion #32 Properties and Applications of Depth-First Search Trees.

Similar presentations


Presentation on theme: "Discussion #32 1/13 Discussion #32 Properties and Applications of Depth-First Search Trees."— Presentation transcript:

1 Discussion #32 1/13 Discussion #32 Properties and Applications of Depth-First Search Trees

2 Discussion #32 2/13 Topics Depth-first search trees and forests Tree edges; forward, backward, and cross edges Post order numbers Applications –Cycles –Topological sorting –Reachability –Connected components

3 Discussion #32 3/13 DFS Trees and Forests 32 54 16 1 3 5 2 4 6 1 Convention: increasing order 5 2 4 3 DFS Tree DFS Trees Forest Note: O(m) to create (check each edge once) 6 Convention: Roots in decreasing order; other nodes in increasing order

4 Discussion #32 4/13 Edge Classification 3254 16 1 3 5 2 4 6 forward backward cross 15 2 4 3 backward cross Add all edges  but make them dashed if a marked node is encountered. 6 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. cross (x, y):

5 Discussion #32 5/13 Observations about Edge Classification Requires O(m) to create  each edge considered only once Only go between trees in a forest with cross edges If we go left to right in building the DFS tree, then all cross edges go from right to left. (For suppose not, then the edge must be a tree edge.) b a c Must not have been visited! All visited nodes are to the left (cross), above or same (backward), or below (forward).

6 Discussion #32 6/13 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 2 4 6 1 6 5 2 4 3 (1) (2) (3) (4) (5) (6) (1) (2) (3) (5) (6) Can be added as the tree is built, so O(m) (assuming m >> n) (4)

7 Discussion #32 7/13 Observations about Postorder Numbers For each edge x  y, where P(x) and P(y) are the postorder numbers for x and y, if x  y, then 1.for a tree edge, P(x) > P(y) 2.for a forward edge, P(x) > P(y) 3.for a backward edge, P(x)  P(y) 4.for a cross edge, P(x) > P(y) There are many interesting applications of all these ideas  all of which take O(m) time, assuming m >> n. different from the others

8 Discussion #32 8/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(n 2 ) in the worst case for a dense, nearly complete graph. Proof (sketch) –(if, i.e. If a DFS-tree of G has a backward edge, G is cyclic.) Let x  y be the backward edge. Then is a cycle. –(only if, i.e. If G is cyclic, a DFS-tree of G has a backward edge.) Let the cycle be. If k=1, is a backward edge. If k>1, then there is a backward edge. For suppose not, then P(n 1 )>P(n 2 )>…>P(n k )>P(n 1 ) and thus P(n 1 )>P(n 1 )  a contradiction. Project 5

9 Discussion #32 9/13 Topological Sorting 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.) (for acyclic directed graphs) Project 5

10 Discussion #32 10/13 Topological Sort Example a b cf de (1) (2) (3) (4) (5) (6) b 6 f 5 d 4 c 3 e 2 a 1 a bc f d e a b c f d e (3) (2) (4) (1) (5) (6) b 6 f 5 c 4 a 3 e 2 d 1 Alphabetical: 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.

11 Discussion #32 11/13 Topological Sort: Observations The algorithm is correct. Proof (sketch): The tail of x  y must precede the head because P(x) > P(y), for if not then P(x)  P(y) and we have a backward edge  a contradiction since the graph is acyclic. The algorithm takes O(m) time to build the DFS forest and push the elements onto the stack and takes O(n) time to pop the elements. Thus, the algorithm runs in O(m) time assuming m >> n. Why not do regular sort this way? –O(m) is O(n 2 ) in the worst case. –We can sort in O(nlogn) time. Could we do topological sort using a regular sort? –If not, why not? Some nodes not comparable  can let them be equal. If we only have the edges, some nodes that should be comparable through transitivity are not comparable  can do transitive closure to make comparable. –If so, should we? (no, why not?)

12 Discussion #32 12/13 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. Proof: clear. O(m), (O(n 2 ) in the worst case). Project 5

13 Discussion #32 13/13 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. (homework)


Download ppt "Discussion #32 1/13 Discussion #32 Properties and Applications of Depth-First Search Trees."

Similar presentations


Ads by Google