1 / 14

Depth First Search

Depth First Search. Output List:. 1. 2. 4. 3. 7. 6. 10. 13. 9. 11. 8. 5. 15. 14. 12. Backtrack to 10,6,7 9, 11, 8, 5 Stop at 5 Backtrack to 8,11 15,14,12 STOP – All nodes are marked!!. Start with 1 2,4,3 Stop at 3 Backtrack to 4, can we search? 7,6 Stop at 2

remy
Télécharger la présentation

Depth First Search

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. Depth First Search Output List: 1 2 4 3 7 6 10 13 9 11 8 5 15 14 12 • Backtrack to 10,6,7 • 9, 11, 8, 5 • Stop at 5 • Backtrack to 8,11 • 15,14,12 • STOP – All nodes are marked!! • Start with 1 • 2,4,3 • Stop at 3 • Backtrack to 4, can we search? • 7,6 • Stop at 2 • Backtrack to 6, can we search? • 10,13 • Stop at 13 1 1 2 2 5 5 8 8 11 11 15 15 6 6 10 10 13 13 3 3 4 4 7 7 9 9 12 12 14 14

  2. Depth First Search – Real Life Application From xkcd.com

  3. Breadth First Search • L0: 1 • L1: 2, 3 • L2: 4,5,6,11 • L3: 7,8,10,9,15 • L4: 13,12,14 1 1 2 2 5 5 8 8 11 11 15 15 6 6 10 10 13 13 3 3 4 4 7 7 9 9 12 12 14 14 Final output: 1, 2, 3, 4, 5, 6, 11, 7, 8, 10, 9, 15, 13, 12, 14

  4. Topological Sort

  5. Topological Sort • The goal of a Topological Sort: • When given a list of items with dependencies (i.e. item 5 must be completed before item 3, etc.) • Produce an ordering of the items that satisfies the given constraints. • In order for the problem to be solvable, there can’t be a cyclic set of constraints. • We can’t have item 5 must be completed before item 3, item 3 must be completed before item 7, and item 7 must be completed before item 5. • Since that would be IMPOSSIBLE!!

  6. Topological Sort • We can model dependencies (or constraints) like these using • A Directed Acyclic Graph • Given a set of items and constraints, we create the corresponding graph as follows: • Each item corresponds to a vertex in the graph. • For each constraint where item A must finish before item B, place a directed edge A  B. • A stands for waking up, • B stands for taking a shower, • C stands for eating breakfast • D leaving for work • The constraints would be • A before B, • A before C, • B before D, • and C before D. • A topological sort would give A, B, C, D. A B C D

  7. Topological Sort • CS classes: • COP 3223 • COP 3502 • COP 3330 • COT 3100, • COP 3503 • CDA 3103 • COT 3960 (Foundation Exam) • COP 3402 • COT 4210. • Consider the following CS classes and their prereq’s: • Prereq’s: • COP 3223 before COP 3330 and COP 3502. • COP 3330 before COP 3503. • COP 3502 before COT 3960, COP 3503, CDA 3103. • COT 3100 before COT 3960. • COT 3960 before COP 3402 and COT 4210. • COP 3503 before COT 4210. • The goal of a topological sort would be to find an ordering of these classes that you can take. • How Convenient!!

  8. Topological Sort Algorithm • We can use a DFS in our algorithm to determine a topological sort! • The idea is: • When you do a DFS on a directed acyclic graph, eventually you will reach a node with no outgoing edges. Why? • Because if this never happened, you hit a cycle, because the number of nodes if finite. • This node that you reach in a DFS is “safe” to place at the end of the topological sort. • Think of leaving for work! • Now what we find is • If we have added each of the vertices “below” a vertex into our topological sort, it is safe then to add this one in. • If we added in Leaving for work at the end, then we can surely add taking a shower.

  9. Topological Sort • If we explore from A • And if we have marked B,C,D as well as anything connected • And added all of them into our topological sort in backwards order. • Then we can add A! • So basically all you have to do is run a DFS • But add the fact that add the end of the recursive function, add the node the DFS was called with to the end of the topological sort. A B C D

  10. Topological Sort Step-by-Step Description • Do a DFS starting with some node. • The “last” node you reach before you are forced to backtrack. • Goes at the end of the topological sort. • Continue with your DFS, placing each “dead end” node into the topo sort in backwards order.

  11. Topological Sort Code top_sort(Adjacency Matrix adj, Array ts) { n = adj.last k = n //assume k is global for i=1 to n visit[i] = false for i=1 to n if (!visit[i]) top_sort_rec(adj, i, ts) }

  12. Topological Sort Code top_sort_rec(Adjacency Matrix adj, Vertex start, Array ts) { visit[start] = true trav = adj[start] //trav points to a LL while (trav != null) { v = trav.ver if (!visit[v]) top_sort_recurs(adj, v, ts); trav = trav.next } ts[k] = start, k=k-1 }

  13. Topological Sort Example • Consider the following items of clothing to wear: • There isn't exactly one order to put these items on, but we must adhere to certain restrictions • Socks must be put on before Shoes • Undergarments must be put on before Slacks and Shirt • Slacks must be put on before Belt • Slacks must be put on before Shoes

  14. References • Slides adapted from Arup Guha’s Computer Science II Lecture notes: http://www.cs.ucf.edu/~dmarino/ucf/cop3503/lectures/ • Additional material from the textbook: Data Structures and Algorithm Analysis in Java (Second Edition) by Mark Allen Weiss • Additional images: www.wikipedia.com xkcd.com

More Related