Advanced DFS & BFS HKOI Training 20041 Advanced D epth - F irst S earch and B readth- F irst S earch.

Presentation on theme: "Advanced DFS & BFS HKOI Training 20041 Advanced D epth - F irst S earch and B readth- F irst S earch."— Presentation transcript:

Advanced DFS & BFS HKOI Training 20041 Advanced D epth - F irst S earch and B readth- F irst S earch

Advanced DFS & BFS HKOI Training 20042 Overview Depth-first search (DFS) DFS Forest Breadth-first search (BFS) Some variants of DFS and BFS Graph modeling

Advanced DFS & BFS HKOI Training 20043 Prerequisites Elementary graph theory Implementations of DFS and BFS

Advanced DFS & BFS HKOI Training 20044 What is a graph? A set of vertices and edges vertex edge

Advanced DFS & BFS HKOI Training 20045 Trees and related terms root siblings descendents children ancestors parent

Advanced DFS & BFS HKOI Training 20046 What is graph traversal? Given: a graph Goal: visit all (or some) vertices and edges of the graph using some strategy Two simple strategies: –Depth-first search –Breadth-first search

Advanced DFS & BFS HKOI Training 20047 Depth-first search (DFS) A graph searching method Algorithm: at any time, go further (depth) if you can; otherwise, retreat

Advanced DFS & BFS HKOI Training 20048 DFS (Pseudo code) DFS (vertex u) { mark u as visited for each vertex v directly reachable from u if v is unvisited DFS (v) } Initially all vertices are marked as unvisited

Advanced DFS & BFS HKOI Training 20049 F A B C D E DFS (Demonstration) unvisited visited

Advanced DFS & BFS HKOI Training 200410 “Advanced” DFS Apart from just visiting the vertices, DFS can also provide us with valuable information DFS can be enhanced by introducing: –birth time and death time of a vertex birth time: when the vertex is first visited death time: when we retreat from the vertex –DFS tree –parent of a vertex (see next slide)

Advanced DFS & BFS HKOI Training 200411 DFS tree / forest A rooted tree The root is the start vertex If v is first visited from u, then u is the parent of v in the DFS tree

Advanced DFS & BFS HKOI Training 200412 A F B C D E G H DFS forest (Demonstration) unvisited visited visited (dead) ABCDEFGH birth death parent A B C F E D G 1231310414 12981611515 H 6 7 -AB-ACDC

Advanced DFS & BFS HKOI Training 200413 Classification of edges Tree edge Forward edge Back edge Cross edge Question: which type of edges is always absent in an undirected graph? A B C F E D G H

Advanced DFS & BFS HKOI Training 200414 Determination of edge types How to determine the type of an arbitrary edge (u, v) after DFS? Tree edge –parent [v] = u Forward edge –not a tree edge; and –birth [v] > birth [u]; and –death [v] < death [u] How about back edge and cross edge?

Advanced DFS & BFS HKOI Training 200415 Applications of DFS Forests Topological sorting (Tsort) Strongly-connected components (SCC) Some more “advanced” algorithms

Advanced DFS & BFS HKOI Training 200416 Example: SCC A graph is strongly-connected if –for any pair of vertices u and v, one can go from u to v and from v to u. Informally speaking, an SCC of a graph is a subset of vertices that –forms a strongly-connected subgraph –does not form a strongly-connected subgraph with the addition of any new vertex

Advanced DFS & BFS HKOI Training 200417 SCC (Illustration)

Advanced DFS & BFS HKOI Training 200418 SCC (Algorithm) Compute the DFS forest of the graph G Reverse all edges in G to form G’ Compute a DFS forest of G’, but always choose the vertex with the latest death time when choosing the root for a new tree The SCCs of G are the DFS trees in the DFS forest of G’

Advanced DFS & BFS HKOI Training 200419 A F B C D G H SCC (Demonstration) A F B C D E G H ABCDEFGH birth death parent 1231310414 12981611515 6 7 -AB-ACDC D G AEB F C H

Advanced DFS & BFS HKOI Training 200420 SCC (Demonstration) D G AEB F C H A F B C D G H E

Advanced DFS & BFS HKOI Training 200421 Breadth-first search (BFS) A graph searching method Instead of searching “deeply” along one path, BFS tries to search all paths at the same time Makes use of a data structure - queue

Advanced DFS & BFS HKOI Training 200422 BFS (Pseudo code) while queue not empty dequeue the first vertex u from queue for each vertex v directly reachable from u if v is unvisited enqueue v to queue mark v as visited Initially all vertices except the start vertex are marked as unvisited and the queue contains the start vertex only

Advanced DFS & BFS HKOI Training 200423 A B C D E F G H I J BFS (Demonstration) unvisited visited visited (dequeued) Queue: ABCFDEHGJI

Advanced DFS & BFS HKOI Training 200424 Applications of BFS Shortest paths finding Flood-fill (can also be handled by DFS)

Advanced DFS & BFS HKOI Training 200425 Comparisons of DFS and BFS DFSBFS Depth-firstBreadth-first StackQueue Does not guarantee shortest paths Guarantees shortest paths

Advanced DFS & BFS HKOI Training 200426 Bidirectional search (BDS) Searches simultaneously from both the start vertex and goal vertex Commonly implemented as bidirectional BFS startgoal

Advanced DFS & BFS HKOI Training 200427 Iterative deepening search (IDS) Iteratively performs DFS with increasing depth bound Shortest paths are guaranteed

Advanced DFS & BFS HKOI Training 200428 What is graph modeling? Conversion of a problem into a graph problem Sometimes a problem can be easily solved once its underlying graph model is recognized Graph modeling appears almost every year in NOI or IOI

Advanced DFS & BFS HKOI Training 200429 Basics of graph modeling A few steps: –identify the vertices and the edges –identify the objective of the problem –state the objective in graph terms –implementation: construct the graph from the input instance run the suitable graph algorithms on the graph convert the output to the required format

Advanced DFS & BFS HKOI Training 200430 Simple examples (1) Given a grid maze with obstacles, find a shortest path between two given points start goal

Advanced DFS & BFS HKOI Training 200431 Simple examples (2) A student has the phone numbers of some other students Suppose you know all pairs (A, B) such that A has B’s number Now you want to know Alan’s number, what is the minimum number of calls you need to make?

Advanced DFS & BFS HKOI Training 200432 Simple examples (2) Vertex: student Edge: whether A has B’s number Add an edge from A to B if A has B’s number Problem: find a shortest path from your vertex to Alan’s vertex

Advanced DFS & BFS HKOI Training 200433 Complex examples (1) Same settings as simple example 1 You know a trick – walking through an obstacle! However, it can be used for only once What should a vertex represent? –your position only? –your position + whether you have used the trick

Advanced DFS & BFS HKOI Training 200434 Complex examples (1) A vertex is in the form (position, used) The vertices are divided into two groups –trick used –trick not used

Advanced DFS & BFS HKOI Training 200435 Complex examples (1) start goal unused used start goal

Advanced DFS & BFS HKOI Training 200436 Complex examples (2) The famous 8-puzzle Given a state, find the moves that bring it to the goal state 123 456 78

Advanced DFS & BFS HKOI Training 200437 Complex examples (2) What does a vertex represent? –the position of the empty square? –the number of tiles that are in wrong positions? –the state (the positions of the eight tiles) What are the edges? What is the equivalent graph problem?

Advanced DFS & BFS HKOI Training 200438 Complex examples (2) 123 456 78 123 456 78 123 45 786 123 46 758 123 456 78 12 453 786 123 45 786

Advanced DFS & BFS HKOI Training 200439 Complex examples (3) Theseus and Minotaur –http://www.logicmazes.com/theseus.htmlhttp://www.logicmazes.com/theseus.html –Extract: Theseus must escape from a maze. There is also a mechanical Minotaur in the maze. For every turn that Theseus takes, the Minotaur takes two turns. The Minotaur follows this program for each of his two turns: First he tests if he can move horizontally and get closer to Theseus. If he can, he will move one square horizontally. If he can’t, he will test if he could move vertically and get closer to Theseus. If he can, he will move one square vertically. If he can’t move either horizontally or vertically, then he just skips that turn.

Advanced DFS & BFS HKOI Training 200440 Complex examples (3) What does a vertex represent? –Theseus’ position –Minotaur’s position –Both How long do you need to solve the last maze? How long does a well-written program take to solve it?

Advanced DFS & BFS HKOI Training 200441 Some more examples How can the followings be modeled? –Tilt maze (Single-goal mazes only) http://www.clickmazes.com/newtilt/ixtilt2d.htm –Double title maze http://www.clickmazes.com/newtilt/ixtilt.htm –No-left-turn maze http://www.clickmazes.com/noleft/ixnoleft.htm –Same as complex example 1, but you can use the trick for k times

Advanced DFS & BFS HKOI Training 200442 Competition problems HKOI2000 S – Wormhole Labyrinth HKOI2001 S – A Node Too Far HKOI2004 S – Teacher’s Problem * TFT2001 – OIMan * TFT2002 – Bomber Man * NOI2001 – cung1 ming4 dik7 daa2 zi6 jyun4 IOI2000 – Walls * IOI2002 – Troublesome Frog IOI2003 – Amazing Robots *