Title: Advanced DFS, BFS, Graph Modeling
1Advanced DFS, BFS, Graph Modeling
2Introduction
- Depth-first search (DFS)
- Breadth-first search (BFS)
- Graph Modeling
- Model a graph from a problem, ie. transform a
problem into a graph problem
3What is a graph?
- A set of vertices and edges
4Trees and related terms
5What is a tree?
- A tree is an undirected simple graph G that
satisfies any of the following equivalent
conditions - G is connected and has no simple cycles.
- G has no simple cycles and, if any edge is added
to G, then a simple cycle is formed. - G is connected and, if any edge is removed from
G, then it is not connected anymore. - Any two vertices in G can be connected by a
unique simple path. - G is connected and has n - 1 edges.
- G has no simple cycles and has n - 1 edges.
6Graph 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
7Idea of DFS and BFS
- This is a brief idea of DFS and 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
8DFS (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
9DFS (Demonstration)
10Advanced 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
11DFS 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
12DFS (pseudo code)
- DFS (vertex u)
- mark u as visited
- time ? time1 birthutime
- for each vertex v directly reachable from u
- if v is unvisited
- parentvu
- DFS (v)
- time ? time1 deathutime
-
13DFS forest (Demonstration)
A B C D E F G H
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
14Classification of edges
- Tree edge
- Forward edge
- Back edge
- Cross edge
- Question which type of edges is always absent in
an undirected graph?
15Determination 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 gt birth u and
- death v lt death u
- How about back edge and cross edge?
16Determination of edge types
Tree edge Forward Edge Back Edge Cross Edge
parent v u not a tree edge birthv gt birthu deathv lt deathu birthv lt birthu deathv gt deathu birthv lt birthu deathv lt deathu
17Applications of DFS Forests
- Topological sorting (Tsort)
- Strongly-connected components (SCC)
- Some more advanced algorithms
18Example 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 iltj - Tsort Number the vertices in topological order
3
6
1
7
2
5
4
19Tsort 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
20Tsort (Demonstration)
S A B C D E F G
birth
death
1
2
3
4
5
8
12
13
6
7
9
10
11
14
15
16
A
B
C
G
S
D
F
E
G C F B A E D
? D E A B F C G
21Example 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
22SCC (Illustration)
23SCC (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
24SCC (Demonstration)
A B C D E F G H
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
F
A
E
B
H
D
A
D
G
F
B
C
C
G
H
25SCC (Demonstration)
26DFS 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
27Breadth-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
28BFS (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
29BFS (Demonstration)
Queue
A
B
C
F
D
E
H
G
J
I
30Applications of BFS
- Shortest paths finding
- Flood-fill (can also be handled by DFS)
31Comparisons of DFS and BFS
DFS BFS
Depth-first Breadth-first
Stack Queue
Does not guarantee shortest paths Guarantees shortest paths
32What 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
33Basics 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
34Simple examples (1)
- Given a grid maze with obstacles, find a shortest
path between two given points
35Simple examples (2)
- A student has the phone numbers of some other
students - Suppose you know all pairs (A, B) such that A has
Bs number - Now you want to know Alans number, what is the
minimum number of calls you need to make?
36Simple examples (2)
- Vertex student
- Edge whether A has Bs number
- Add an edge from A to B if A has Bs number
- Problem find a shortest path from your vertex to
Alans vertex
37Complex 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
38Complex examples (1)
- A vertex is in the form (position, used)
- The vertices are divided into two groups
- trick used
- trick not used
39Complex examples (1)
unused
start
goal
used
goal
40Complex examples (1)
- How about you can walk through obstacles for k
times?
41Complex examples (1)
k
start
goal
k-1
k-2
42Complex examples (1)
k
start
goal
k-1
k-4
k-2
k-3
43Complex examples (2)
- The famous 8-puzzle
- Given a state, find the moves that bring it to
the goal state
44Complex 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?
45Complex examples (2)
46Complex examples (3)
- Theseus and Minotaur
- http//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 cant, he will
test if he could move vertically and get closer
to Theseus. If he can, he will move one square
vertically. If he cant move either horizontally
or vertically, then he just skips that turn.
47Complex examples (3)
- What does a vertex represent?
- Theseus position
- Minotaurs position
- Both
48Some 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
49Competition problems
- HKOI2000 S Wormhole Labyrinth
- HKOI2001 S A Node Too Far
- HKOI2004 S Teachers Problem
- TFT2001 OIMan
- TFT2002 Bomber Man
- NOI2001 cung1 ming4 dik7 daa2 zi6 jyun4
- NOI2001 Equation
- IOI2000 Walls
- IOI2002 Troublesome Frog
- IOI2003 Amazing Robots
50Teachers 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
51OI 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)
PWWPPPPPPWWPOMMV
52- What you have learnt
- Graph Modeling
53Variations of BFS and DFS
- Bidirectional Search (BDS)
- Iterative Deepening Search(IDS)
54Bidirectional search (BDS)
- Searches simultaneously from both the start
vertex and goal vertex - Commonly implemented as bidirectional BFS
55BDS 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
56Bomber Man (1 Bomb)
S
E
1
2
3
4
11
12
12
13
4
10
6
6
7
7
8
9
5
8
5
9
1
2
3
4
10
11
12
13
Shortest Path length 8
What will happen if we stop once we find a path?
57Example
S 1 2 3 4 5 6 7 8 9
10
21 11
20 12
19 13
18 14
17 17 16 15
11 12 13 14 15 16
10
9 8 7 6 5 4 3 2 1 E
58Iterative deepening search (IDS)
- Iteratively performs DFS with increasing depth
bound - Shortest paths are guaranteed
59IDS
60IDS (pseudo code)
- DFS (vertex u, depth d)
- mark u as visited
- if (dgt0)
- for each vertex v directly reachable from u
- if v is unvisited
- DFS (v,d-1)
-
- i0
- Do
- DFS(start vertex,i)
- Increment i
- While (target is not found)
61IDS
- The complexity of IDS is the same as DFS
62Summary of DFS, BFS
- We learned some variations of DFS and BFS
- Bidirectional search (BDS)
- Iterative deepening search (IDS)
63Equation
- Question Find the number of solution of xi,
given ki,pi. 1ltnlt6, 1ltxilt150 - Vertex possible values of
- k1x1p1 , k1x1p1 k2x2p2 , k1x1p1 k2x2p2
k3x3p3 , k4x4p4 , k4x4p4 k5x5p5 , k4x4p4
k5x5p5 k6x6p6