Professional Documents
Culture Documents
3. Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
2
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
3
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
4
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
5
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
6
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
7
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
8
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
9
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
10
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
11
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
12
Depth-first search
Expand deepest unexpanded node
Implementation:
fringe = LIFO queue, i.e., put successors at front
13
Properties of depth-first search
Complete? No: fails in infinite-depth spaces, spaces
with loops
complete in finite spaces
Time? O(bm): terrible if m is much larger than d
Space? O(bm)
Optimal? No
14
DFS Issue
The drawback of DFS is that It can make a wrong
choice and get stuck going down a very long path
when a different choice would lead to a solution near
the root of the search tree.
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 0, expanded: 0 start
expnd. node Frontier
{S} 5 2 4
A B C
9 4 6 2
6 G 1
D E goal F
H 16
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 1, expanded: 1 start
expnd. node Frontier
{S} 5 2 4
S not goal {A,B,C}
A B C
9 4 6 2
6 G 1
D E goal F
H 17
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 2, expanded: 2 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A not goal {D,E,B,C}
9 4 6 2
6 G 1
D E goal F
H 18
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 3, expanded: 3 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A {D,E,B,C}
D not goal {H,E,B,C}
9 4 6 2
6 G 1
D E goal F
H 19
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 4, expanded: 4 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A {D,E,B,C}
D {H,E,B,C}
9 4 6 2
H not goal {E,B,C}
6 G 1
D E goal F
H 20
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 5, expanded: 5 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A {D,E,B,C}
D {H,E,B,C}
9 4 6 2
H {E,B,C}
6 G 1
E not goal {G,B,C} D E goal F
H 21
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 6, expanded: 5 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A {D,E,B,C}
D {H,E,B,C}
9 4 6 2
H {E,B,C}
6 G 1
E {G,B,C} D E goal F
G goal {B,C} no expand
7
H 22
Depth-First Search (DFS)
generalSearch(problem, stack)
S
# of nodes tested: 6, expanded: 5 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A B C
A {D,E,B,C}
D {H,E,B,C}
9 4 6 2
H {E,B,C}
6 G 1
E {G,B,C} D E goal F
G {B,C}
7
path: S,A,E,G
H cost: 15 23
4. Depth-limited search
24
Iterative-Deepening Search (IDS)
IDS is a general strategy often used with depth first
search, that finds the best depth limit.
Gradually increases the limit, first 0, then 1, then 2
and so on until a goal is found.
This occurs when the depth limit reaches d, the depth
of shallowest goal node.
Iterative-Deepening Search (IDS)
IDS combines benefits of both DFS and BFS.
deepeningSearch(problem)
S
depth: 1, # of nodes tested: 1, expanded: 1 start
expnd. node Frontier
{S} 5 2 4
S not goal {A,B,C}
A B C
9 4 6 2
6 G 1
D E goal F
H 28
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 1, # of nodes tested: 2, expanded: 1 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A not goal {B,C} no expand A B C
9 4 6 2
6 G 1
D E goal F
H 29
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 1, # of nodes tested: 3, expanded: 1 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B not goal {C} no expand
9 4 6 2
6 G 1
D E goal F
H 30
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 1, # of nodes tested: 4, expanded: 1 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
C not goal { } no expand-FAIL 9 4 6 2
6 G 1
D E goal F
H 31
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 4, expanded: 2 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S no test {A,B,C} 6 G 1
D E goal F
H 32
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 4, expanded: 3 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S {A,B,C} 6 G 1
D E goal F
A no test {D,E,B,C}
7
H 33
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 5, expanded: 3 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S {A,B,C} 6 G 1
D E goal F
A {D,E,B,C}
D not goal {E,B,C} no expand 7
H 34
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 6, expanded: 3 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S {A,B,C} 6 G 1
D E goal F
A {D,E,B,C}
D {E,B,C} 7
E not goal {B,C} no expand
H 35
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 6, expanded: 4 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S {A,B,C} 6 G 1
D E goal F
A {D,E,B,C}
D {E,B,C} 7
E {B,C}
B no test {G,C} H 36
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 7, expanded: 4 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
9 4 6 2
C {}
S {A,B,C} 6 G 1
D E goal F
A {D,E,B,C}
D {E,B,C} 7
E {B,C}
B {G,C} H 37
G goal {C} no expand
Iterative-Deepening Search (IDS)
deepeningSearch(problem)
S
depth: 2, # of nodes tested: 7, expanded: 4 start
expnd. node Frontier
{S} 5 2 4
S {A,B,C}
A {B,C} A B C
B {C}
C {} 9 4 6 2
S {A,B,C} 6 G 1
D E goal F
A {D,E,B,C}
D {E,B,C} 7
E {B,C} path: S,B,G
B {G,C} H cost: 8 38
G {C}
Properties of iterative deepening search
Complete? Yes
Space? O(bd)
39
5. Bidirectional search
Run two simultaneous searches
One forwards, from the initial state
Other backward from the goal.
Stops when the two searches meet in the middle
Breadth First Search is applied at both sides of
searches
Bidirectional search
Finds shortest path from initial state to goal
B D A E
C E E B B F
11
D F B F C E A C G
14 17 15 15 13
G C G F
19 19 17 G 25
Bidirectional Search
Complete : Yes
Bidirectional search is complete if BFS is used in both
searches.
Optimality : Yes
It is optimal if BFS is used for search and paths have
uniform cost.