Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced DFS, BFS, Graph Modeling

Similar presentations


Presentation on theme: "Advanced DFS, BFS, Graph Modeling"— Presentation transcript:

1 Advanced DFS, BFS, Graph Modeling
19/2/2005

2 Introduction Depth-first search (DFS) Breadth-first search (BFS)
Graph Modeling Model a graph from a problem, ie. transform a problem into a graph problem

3 What is a graph? A set of vertices and edges vertex edge

4 Trees and related terms
root siblings descendents children ancestors parent

5 Graph Traversal Given: a graph
Goal: visit all (or some) vertices and edges of the graph using some strategy (the order of visit is systematic) DFS, BFS are examples of graph traversal algorithms Some shortest path algorithms and spanning tree algorithms have specific visit order

6 Intuition of DFS of BFS This is a brief idea of DFS, BFS
DFS: continue visiting next vertex whenever there is a road, go back if no road (ie. visit to the depth of current path) Example: a human want to visit a place, but do not know the path BFS: go through all the adjacent vertices before going further (ie. spread among next vertices) Example: set a house on fire, the fire will spread through the house

7 DFS (pseudo code) Initially all vertices are marked as unvisited
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

8 DFS (Demonstration) F A B C D E unvisited visited

9 “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

10 DFS spanning 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 Edges are those in forward direction of DFS, ie. when visiting vertices that are not visited before If some vertices are not reachable from the start vertex, those vertices will form other spanning trees (1 or more) The collection of the trees are called forest

11 DFS (pseudo code) DFS (vertex u) { mark u as visited time  time+1
for each vertex v directly reachable from u if v is unvisited DFS (v) }

12 DFS forest (Demonstration)
B C D E F G H birth death parent A 1 2 3 13 10 4 14 6 D 12 9 8 16 11 5 15 7 B - A B - A C D C E G A F B C D E G H C F H unvisited visited visited (dead)

13 Classification of edges
B C F E D G H Tree edge Forward edge Back edge Cross edge Question: which type of edges is always absent in an undirected graph?

14 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?

15 Determination of edge types
Tree edge Forward Edge Back Edge Cross Edge parent [v] = u not a tree edge birth[v] > birth[u] death[v] < death[u] birth[v] < birth[u] death[v] > death[u] death[v] >death[u]

16 Applications of DFS Forests
Topological sorting (Tsort) Strongly-connected components (SCC) Some more “advanced” algorithms

17 Example: Tsort Topological order: A numbering of the vertices of a directed acyclic graph such that every edge from a vertex numbered i to a vertex numbered j satisfies i<j Tsort: Number the vertices in topological order 3 6 1 7 2 5 4

18 Tsort Algorithm If the graph has more then one vertex that has indegree 0, add a vertice to connect to all indegree-0 vertices Let the indegree 0 vertice be s Use s as start vertice, and compute the DFS forest The death time of the vertices represent the reverse of topological order

19 A B C G S D F E G C F B A E D  D E A B F C G S A B C D E F G birth 1
2 3 4 12 13 8 5 death 16 11 10 7 15 14 9 6 A B C G S D F E G C F B A E D  D E A B F C G

20 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

21 SCC (Illustration)

22 SCC (Algorithm) Compute the DFS forest of the graph G to get the death time of the vertices 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’

23 SCC (Demonstration) E A F B C D G H F A E B H D A D G F B C C G H A B
birth death parent 1 2 3 13 10 4 14 6 12 9 8 16 11 5 15 7 - A B - A C D C E A F B C D G H F A E B H D A D G F B C C G H

24 SCC (Demonstration) A F B C D G H E D G A E B F C H

25 DFS Summary DFS spanning tree / forest
We can use birth time and death time in DFS spanning tree to do varies things, such as Tsort, SCC Notice that in the previous slides, we related birth time and death time. But in the discussed applications, birth time and death time can be independent, ie. birth time and death time can use different time counter

26 DFS (vertex u) { mark u as visited birthtime  birthtime + 1 for each vertex v directly reachable from u if v is unvisited DFS (v) deathtime  deathtime + 1 } time  time+1

27 Breadth-first search (BFS)
Revised: DFS: continue visiting next vertex whenever there is a road, go back if no road (ie. visit to the depth of current path) BFS: go through all the adjacent vertices before going further (ie. spread among next vertices) In order to “spread”, we need to makes use of a data structure, queue ,to remember just visited vertices

28 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

29 BFS (Demonstration) Queue: A B C F D E H G J I A B C D E F G H I J
unvisited visited visited (dequeued)

30 Applications of BFS Shortest paths finding
Flood-fill (can also be handled by DFS)

31 Comparisons of DFS and BFS
Depth-first Breadth-first Stack Queue Does not guarantee shortest paths Guarantees shortest paths

32 Bidirectional search (BDS)
Searches simultaneously from both the start vertex and goal vertex Commonly implemented as bidirectional BFS start goal

33 BDS Example: Bomber Man (1 Bomb)
find the shortest path from the upper-left corner to the lower-right corner in a maze using a bomb. The bomb can destroy a wall. S E

34 Bomber Man (1 Bomb) S 1 2 3 4 E 13 12 11 12 4 10 8 7 6 5 6 7 8 9 9 5 10 11 12 13 4 3 2 1 Shortest Path length = 7 What will happen if we stop once we find a path?

35 Example S 1 2 3 4 5 6 7 8 9 10 21 11 20 12 19 13 18 14 17 16 15 E

36 Iterative deepening search (IDS)
Iteratively performs DFS with increasing depth bound Shortest paths are guaranteed

37 IDS

38 IDS (pseudo code) DFS (vertex u, depth d) { mark u as visited
if (d>0) for each vertex v directly reachable from u if v is unvisited DFS (v,d-1) } i=0 Do { DFS(start vertex,i) Increment i }While (target is not found)

39 IDS Complexity (the details can be skipped)
( )=bm ( ) =bm - b is branching factor - td is the number of vertices visited for depth d

40 IDS ( )=bm ( ) =bm - b is branching factor - td is the number of vertices visited for depth d Conclusion: the complexity of IDS is the same as DFS

41 Summary of DFS, BFS We learned some variations of DFS and BFS
Bidirectional search (BDS) Iterative deepening search (IDS)

42 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

43 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

44 Simple examples (1) Given a grid maze with obstacles, find a shortest path between two given points start goal

45 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?

46 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

47 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 (Bomber Man with 1 bomb) What should a vertex represent? your position only? your position + whether you have used the trick

48 Complex examples (1) A vertex is in the form (position, used)
The vertices are divided into two groups trick used trick not used

49 Complex examples (1) unused start goal start goal used goal

50 Complex examples (1) How about you can walk through obstacles for k times?

51 Complex examples (2) The famous 8-puzzle
Given a state, find the moves that bring it to the goal state 1 2 3 4 5 6 7 8

52 Complex examples (2) What does a vertex represent? What are the edges?
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?

53 Complex examples (2) 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 6 7 5 8 1 2 3 4 5 7 8 6 1 2 4 5 3 7 8 6 1 2 3 4 5 6 7 8 1 2 3 4 5 7 8 6

54 Complex examples (3) Theseus and Minotaur
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.

55 Complex examples (3) What does a vertex represent? Theseus’ position
Minotaur’s position Both

56 Some more examples How can the followings be modeled?
Tilt maze (Single-goal mazes only) Double title maze No-left-turn maze Same as complex example 1, but you can use the trick for k times

57 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 NOI2001 – Equation * IOI2000 – Walls IOI2002 – Troublesome Frog IOI2003 – Amazing Robots

58 Teacher’s Problem Question: A teacher wants to distribute sweets to students in an order such that, if student u tease student v, u should not get the sweet before v Vertex: student Edge: directed, (v,u) is a directed edge if student v tease u Algorithm: Tsort

59 OI Man Question: OIMan (O) has 2 kinds of form: H- and S-form. He can transform to S-form for m minutes by battery. He can only kill monsters (M) and virus (V) in S-form. Given the number of battery and m, find the minimum time needed to kill the virus. Vertex: position, form, time left for S-form, number of batteries left Edge: directed Move to P in H-form (position) Move to P/M/V in S-form (position, S-form time) Use battery and move (position, form, S-form time, number of batteries) PWWP PPPP PWWP OMMV

60 Equation Question: Find the number of solution of xi, given ki,pi. 1<=n<=6, 1<=xi<=150 Vertex: possible values of k1x1p1 , k1x1p1 + k2x2p2 , k1x1p1 + k2x2p2 + k3x3p3 , k4x4p4 , k4x4p4 + k5x5p5 , k4x4p4 + k5x5p5 + k6x6p6


Download ppt "Advanced DFS, BFS, Graph Modeling"

Similar presentations


Ads by Google