1 / 41

Chapter 22: Elementary Graph Algorithms II

Chapter 22: Elementary Graph Algorithms II. About this lecture. Depth First Search DFS Tree and DFS Forest Properties of DFS Parenthesis theorem (very important) White-path theorem (very useful). Depth First Search (DFS).

Download Presentation

Chapter 22: Elementary Graph Algorithms II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 22: Elementary Graph Algorithms II

  2. About this lecture • Depth First Search • DFS Tree and DFS Forest • Properties of DFS • Parenthesis theorem (very important) • White-path theorem (very useful)

  3. Depth First Search (DFS) • An alternative algorithm to find all vertices reachable from a particular source vertex s • Idea: • Explore a branch as far as possible before exploring another branch • Easily done by recursion or stack

  4. The while-loop explores a branch as far as possible before the next branch The DFS Algorithm DFS(u) { Mark u as discovered ; while (u has unvisited neighbor v) DFS(v); Mark u as finished ; }

  5. Example (s = source) t u t u r s r s y y v w x v w x t u r s finished discovered direction of edge when new node is discovered y v w x

  6. Example (s = source) t u t u r s r s y y v w x v w x t u r s finished discovered direction of edge when new node is discovered y v w x

  7. Example (s = source) t u t u r s r s y y v w x v w x t u r s finished discovered direction of edge when new node is discovered y v w x

  8. Example (s = source) t u t u r s r s y y v w x v w x t u r s finished discovered direction of edge when new node is discovered y v w x

  9. Example (s = source) t u t u r s r s y y v w x v w x t u r s finished discovered direction of edge when new node is discovered y v w x

  10. Example (s = source) t u r s Done when s is discovered y v w x t u r s The directed edges form a tree that contains all nodes reachable from s Called DFS tree of s y v w x

  11. Generalization • Just like BFS, DFS may not visit all the vertices of the input graph G, because : • G may be disconnected • G may be directed, and there is no directed path from s to some vertex • In most application of DFS (as a subroutine) , once DFS tree of s is obtained, we will continue to apply DFS algorithm on any unvisited vertices …

  12. Generalization (Example) Suppose the input graph is directed t u r s y v w x

  13. Generalization (Example) 1. After applying DFS on s t u r s y v w x

  14. Generalization (Example) 2. Then, after applying DFS on t t u r s y v w x

  15. Generalization (Example) 3. Then, after applying DFS on y t u r s y v w x

  16. Generalization (Example) 4. Then, after applying DFS on r t u r s y v w x

  17. Generalization (Example) 5. Then, after applying DFS on v t u r s y v w x

  18. Generalization (Example) Result : a collection of rooted trees called DFS forest t u r s y v w x

  19. Performance • Since no vertex is discovered twice, and each edge is visited at most twice (why?) •  Total time: O(|V|+|E|) • As mentioned, apart from recursion, we can also perform DFS using a LIFO stack • (Do you know how?)

  20. t u r s E.g, in the previous run, v can reach r, s, w, x butv ’s tree does not contain any of them y v w x Who will be in the same tree ? • Because we can only explore branches in an unvisited node •  DFS(u) may not contain all nodes reachable by u in its DFS tree Can we determine who will be in the same tree ?

  21. Who will be in the same tree ? • Yes, we will soon show that by white-path theorem, we can determine who will be in the same tree as v at the time when DFS is performed on v • Before that, we will define the discovery time and finishing time for each node, and show interesting properties of them

  22. Discovery and Finishing Times • When the DFS algorithm is run, let us consider a global time such that the time increases one unit : • when a node is discovered, or • when a node is finished • (i.e., finished exploring all unvisited neighbors) • Each node u records : • d(u) = the time when u is discovered, and f(u) = the time when u is finished

  23. Discovery and Finishing Times u t r s 12/15 1/16 4/9 5/8 6/7 13/14 3/10 2/11 w x y v In our first example (undirected graph)

  24. Discovery and Finishing Times u t r s 13/14 1/6 7/10 8/9 11/12 15/16 3/4 2/5 w x y v In our second example (directed graph)

  25. Nice Properties Lemma: For any node u, d(u) f(u) Lemma: For nodes u and v, d(u), d(v), f(u), f(v) are all distinct Theorem (Parenthesis Theorem): Let u and v be two nodes with d(u) d(v) . Then, either 1. d(u) d(v) f(v) f(u) [contain], or 2. d(u) f(u) d(v) f(v) [disjoint]

  26. Proof of Parenthesis Theorem • Consider the time when v is discovered • Since u is discovered before v, there are two cases concerning the status of u : • Case 1: (u is not finished) • This implies v is a descendant of u •  f(v) f(u) (why?) • Case 2: (u is finished) •  f(u) d(v)

  27. Corollary Corollary: v is a (proper) descendant of u if and only if d(u) d(v) f(v) f(u) Proof: v is a (proper) descendant of u d(u) d(v) andf(v) f(u) d(u) d(v) f(v) f(u)

  28. White-Path Theorem Theorem: By the time when DFS is performed on u, for any way DFS is done, the descendants of u are the same, and they areexactlythose nodes reachable by u with unvisited (white) nodes only t u r s E.g., If we perform DFS(w) now, will the descendant of w always be the same set of nodes? y v w x

  29. Proof (Part 1) • Suppose that v is a descendant of u • LetP=(u, w1, w2, …, wk, v) be the directed path from u to v in DFS tree of u • Then,apart from u, each node on P must be discovered after u •  They are all unvisited by the time we perform DFS on u •  Thus, at this time, there exists a path from u to v with unvisited nodes only

  30. Proof (Part 2) • So, every descendant of u is reachable from u with unvisited nodesonly • To complete the proof, it remains to show the converse : • Any node reachable from u with unvisited nodes only becomes u ’s descendant • is also true • (We shall prove this by contradiction)

  31. Proof (Part 2) • Suppose on contrary the converse is false • Then, there exists some v, reachable from u with unvisited nodes only, does not become u ’s descendant • If more than one choice of v, let v be one such vertex closest to u •  d(u) f(u) d(v) f(v) … EQ.1

  32. Handle special case: when u = wk Proof (Part 2) • LetP=(u, w1, w2, …, wk, v) be any path from u to v using unvisited nodes only • By our choice of v (closest one), all w1, w2, …, wkbecome u ’s descendants • This implies: • d(u) d(wk) f(wk) f(u) • Combining with EQ.1, we have • d(wk) f(wk) d(v) f(v)

  33. Proof (Part 2) • However, since there is an edge (no matter undirected or directed) from wk to v, • if d(wk) d(v) , then we must have • d(v) f(wk) … (why??) • Consequently, it contradicts with : • d(wk) f(wk) d(v) f(v) •  Proof completes

  34. Classification of Tree Edges • After a DFS process, we can classify the edges of a graph into four types : • 1. Tree : Edges in the DFS forest • 2. Back : From descendant to ancestor when explored (include self loop) • 3. Forward: From ancestor to descendant when explored (exclude tree edge) • 4. Cross: Others (no ancestor-descendant relation)

  35. Example Suppose the input graph is directed t u r s y v w x

  36. F B C C C Example Suppose this is the DFS forest obtained t u r s y v w x Can you classify the type of each edge ?

  37. B C C C C Example Suppose the DFS forest is different now … t u r s y v w x Can you classify the type of each edge ?

  38. Example Suppose the input graph is undirected t u r s y v w x

  39. B B Example Suppose this is the DFS forest obtained t u r s y v w x Can you classify the type of each edge ?

  40. Edges in Undirected Graph Theorem: After DFS of an undirected graph, every edge is either a tree edge or a back edge • Proof: Let (u,v) be an edge. Suppose u is discovered first. Then, v will become u’s descendent (white-path) so that f(v) f(u) • If u discovers v (u,v) is tree edge • Else, (u,v) is explored after v discovered • Then, (u,v) must be explored from v because f(v) f(u) (u,v) is back edge

  41. Homework • Practice at home: 22.3-8, 22.3-9, 22.3-11

More Related