Informed Search Algorithms: UNIT-2
Informed Search Algorithms: UNIT-2
Informed Search Algorithms: UNIT-2
UNIT-2
Chapter 4
Important terms
Informed search strategy is one that uses problem-specific
knowledge beyond the definition of the problem itself. It can find
solutions more efficiently than uninformed strategy
A heuristic function or simply a heuristic is a function that ranks
alternatives in various search algorithms at each branching step basing
on an available information in order to make a decision which branch is
to be followed during a search.
Outline
Best-first search
Greedy best-first search
A* search
Heuristics
Memory Bounded A* Search
Best-first search
Idea: use an evaluation function f(n) for each node
f(n) provides an estimate for the total cost.
Expand the node n with smallest f(n).
Implementation:
Order the nodes in fringe increasing order of cost.
Special cases:
greedy best-first search
A* search
Romania with straight-line dist.
Greedy best-first search
f(n) = estimate of cost from n to goal
e.g., f(n) = straight-line distance from n
to Bucharest
Greedy best-first search expands the
node that appears to be closest to goal.
Greedy best-first search
example
Greedy best-first search
example
Greedy best-first search
example
Greedy best-first search
example
Properties of greedy best-first
search Think of
an
example
c
b g
a goal state
start state
h1(S) = ?
h2(S) = ?
Admissible heuristics
E.g., for the 8-puzzle:
h1(n) = number of misplaced tiles
h2(n) = total Manhattan distance
(i.e., no. of squares from desired location of each tile)
h1(S) = ? 8
h2(S) = ? 3+1+2+2+2+3+3+2 = 18
Dominance
If h2(n) ≥ h1(n) for all n (both admissible)
then h2 dominates h1
h2 is better for search: it is guaranteed to expand
less or equal nr of nodes.
If h is consistent, we have
R
9 1
try yourself
The graph above shows the step-costs for different paths going from the start (S) to
the goal (G). On the right you find the straight-line distances.
1. Draw the search tree for this problem. Avoid repeated states.
2. Give the order in which the tree is searched (e.g. S-C-B...-G) for A* search.
Use the straight-line dist. as a heuristic function, i.e. h=SLD,
and indicate for each node visited what the value for the evaluation function, f, is.
Memory Bounded Heuristic
Search: Recursive BFS
How can we solve the memory problem for
A* search?
Idea: Try something like depth first search,
but let’s not forget everything about the
branches we have partially explored.
We remember the best f-value we have
found so far in the branch we are deleting.
RBFS:
best alternative
over fringe nodes,
which are not children:
i.e. do I want to back up?
Queue MAKE-QUEUE({MAKE-NODE(INITIAL-STATE[problem])})
loop do
if Queue is empty then return failure
n deepest least-f-cost node in Queue
if GOAL-TEST(n) then return success
s NEXT-SUCCESSOR(n)
if s is not a goal and is at maximum depth then
f(s)
else
f(s) MAX(f(n),g(s)+h(s))
if all of n’s successors have been generated then
update n’s f-cost and those of its ancestors if necessary
if SUCCESSORS(n) all in memory then remove n from Queue
if memory is full then
delete shallowest, highest-f-cost node in Queue
remove it from its parent’s successor list
insert its parent on Queue if necessary
insert s in Queue
end
Simple Memory-bounded A* (SMA*)
(Example with 3-node memory) maximal depth is 3, since
memory limit is 3. This
Progress of SMA*. Each node is labeled with its current f-cost. branch is now useless.
Values in parentheses show the value of the best forgotten
descendant. best forgotten node
Search space best estimated solution
so far for that node
f = g+h ☐ = goal A
13[15]
A
0+12=12 A A A
12 12
10 8 13
G
B G 13
10+5=15 8+5=13
B B G
10 10 8 16 15
18 H
20+5=25
C D
16+2=18
H I 15 13
20+0=20 24+0=24
10 10 A A A
8 8 15[15] 15[24] 20[24]
E F J K
A 8
15
30+5=35 30+0=30 24+0=24 24+5=29 G B B
15 20[]
24[]
B G
I D
15 24 C 25
24
20
Algorithm can tell you when best solution found within memory constraint is optimal or not.
Conclusions
The Memory Bounded A* Search is the
best of the search algorithms we have
seen so far. It uses all its memory to avoid
double work and uses smart heuristics to
first descend into promising branches of
the search-tree.