Heuristic Search Methods
Methods that use a heuristic function to provide
specific knowledge about the problem:
Heuristic Functions
Hill climbing
Beam search
Hill climbing (2)
Greedy search
Heuristic Functions
To further improve the quality of the previous
methods, we need to include problem-specific
knowledge on the problem.
How to do this in such a way that the algorithms
remain generally applicable ???
HEURISTIC FUNCTIONS:
f: States --> Numbers
f(T) : expresses the quality of the state T
– allow to express problem-specific knowledge,
BUT: can be imported in a generic way in the
algorithms.
2
Examples (1):
Imagine the problem of finding a route on a road
map and that the NET below is the road map:
4 4
3 A B C
S 5 5
G
4 D 2 E F 3
4
Define f(T) = the straight-line distance from T to G
A 10.4 B 6.7 C 4
11 The estimate
S
8.9 G can be wrong!
D E 6.9 F 3
3
Examples (2): 8-puzzle
f1(T) = the number correctly placed tiles on the
board: 1 3 2
f1 8 4 =4
5 6 7
f2(T) = number or incorrectly placed tiles on board:
gives (rough!) estimate of how far we are from goal
1 3 2
f2 8 4 =4
5 6 7
Most often, ‘distance to goal’ heuristics are more useful !
4
Examples (3):
Manhattan distance
f3(T) = the sum of ( the horizontal + vertical
distance that each tile is away from its final
destination):
gives a better estimate of distance from the goal node
1 3 2
f2 8 4 =1+1+2+2=6
5 6 7
5
Hill climbing
A basic heuristic search method:
depth-first + heuristic
Hill climbing_1
Example: using the straight-line distance:
S
Perform depth-first,
A 10.4 D 8.9 BUT:
instead of left-to-
right selection,
A 10.4 6.9
E FIRST select the child
with the best heuristic
value
6.7 B F 3.0
7
Hill climbing_1 algorithm:
1. QUEUE <-- path only containing the root;
2. WHILE QUEUE is not empty
AND goal is not reached
DO remove the first path from the QUEUE;
create new paths (to all children);
reject the new paths with loops;
sort new paths (HEURISTIC) ;
add the new paths to front of QUEUE;
3. IF goal reached
THEN success;
ELSE failure;
8
Beam search
Narrowing the width of the breadth-first search
Beam search (1):
Depth 1) S Assume a pre-
fixed WIDTH
10.4 8.9 (example : 2 )
A D
Perform breadth-
Depth 2) first, BUT:
S
Only keep the
A D WIDTH best new
nodes
6.7 8.9 10.4 6.9 depending on
B D A E heuristic
X X
ignore ignore at each new level.
10
Beam search (2):
Depth 3) S
A D Optimi-
zation:
4.0 B D A E
6.9 X X 6.7 B 3.0 ignore
_C E F
leafs
X
end
ignore that are
not goal
Depth 4) S nodes
(see C)
A D
B D A E
_C E X X B F
X
10.4 A 0.0
_C G
11
Beam search algorithm:
See exercises!
Properties:
Completeness:
Hill climbing: YES (backtracking), Beam search: NO
Speed/Memory:
Hill climbing:
same as Depth-first (in worst case)
Beam search:
QUEUE always has length WIDTH, so memory
usage is constant = WIDTH, time is of the order
of WIDTH*m or WIDTH*d if no solution is found
12
Hill climbing_2
== Beam search with a width of 1.
Inspiring Example: climbing a hill in the fog.
Heuristic function: check the change in altitude in 4
directions: the strongest increase is the direction in
which to move next.
Is identical to Hill climbing_1, except for dropping
the backtracking.
Produces a number of classical problems:
13
Problems with
Hill climbing_2:
Foothills: Plateaus
Local
maximum
Ridges
14
Comments:
Foothills are local minima: hill climbing_2 can’t
detect the difference.
Plateaus don’t allow you to progress in any direction.
Foothills and plateaus require random jumps to be
combined with the hill climbing algorithm.
Ridges neither: the directions you have fixed in
advance all move downwards for this surface.
Ridges require new rules, more directly targeted to
the goal, to be introduced (new directions to move) .
15
Local search
Hill climbing_2 is an example of local S
search. A
In local search, we only keep track of 1
path and use it to compute a new path in B
the next step. C
QUEUE is always of the form: D
( p)
Another example:
MINIMAL COST search: A
3 4
If p is the current path:
B C
the next path extends p by adding the
2 3 5
node with the smallest cost from the
endpoint of p D E F
16
Greedy search
Always expand the heuristically best nodes first.
Greedy search, or
Heuristic best-first search:
S 30
10 40
1 20 At each step,
3 select the
node with the
35 15 best (in this
2 27 18 case: lowest)
heuristic
value.
25 45 The ‘open’
nodes
18
Greedy search algorithm:
1. QUEUE <-- path only containing the root;
2. WHILE QUEUE is not empty
AND goal is not reached
DO remove the first path from the QUEUE;
create new paths (to all children);
reject the new paths with loops;
add the new paths and sort the entire QUEUE;
(HEURISTIC)
3. IF goal reached
THEN success;
ELSE failure;
19