Artificial Intelligence: Informed Search
Artificial Intelligence: Informed Search
Informed
Search
Chapter 4
Adapted from materials by Tim Finin,
Marie desJardins, and Charles R. Dyer
Outline
Heuristic search
Best-first search
Greedy search
Beam search
A, A*
Examples
Memory-conserving variations of A*
Heuristic functions
Iterative improvement methods
Hill climbing
Simulated annealing
Local beam search
Genetic algorithms
Online search
Heuristic
Merriam-Webster's Online Dictionary
Heuristic (pron. \hyu- ris-tik\): adj. [from Greek heuriskein to discover.]
involving or serving as an aid to learning, discovery, or problemsolving by experimental and especially trial-and-error methods
The Free On-line Dictionary of Computing (15Feb98)
heuristic 1. <programming> A rule of thumb, simplification or educated
guess that reduces or limits the search for solutions in domains that are
difficult and poorly understood. Unlike algorithms, heuristics do not
guarantee feasible solutions and are often used with no theoretical
guarantee. 2. <algorithm> approximation algorithm.
From WordNet (r) 1.6
heuristic adj 1: (computer science) relating to or using a heuristic rule 2:
of or relating to a general formulation that serves to guide investigation
[ant: algorithmic] n : a commonsense rule (or set of rules) intended to
increase the probability of solving some problem [syn: heuristic rule,
heuristic program]
Heuristics
All domain knowledge used in the search is encoded in the
heuristic function h().
Heuristic search is an example of a weak method because
of the limited way that domain-specific information is used to
solve the problem.
Examples:
Missionaries and Cannibals: Number of people on starting river bank
8-puzzle: Number of tiles out of place
8-puzzle: Sum of distances each tile is from its goal position
In general:
h(n) 0 for all nodes n
h(n) = 0 implies that n is a goal node
h(n) = implies that n is a dead-end that can never lead to a goal
Best-first search
Order nodes on the nodes list by increasing
value of an evaluation function f (n)
f (n) incorporates domain-specific information in
some way.
Greedy search
Use as an evaluation function f (n) = h(n),
sorting nodes by increasing values of f.
Selects node to expand believed to be
h=2
closest (hence greedy ) to a goal node
(i.e., select node with smallest f value)
h=1
Not complete
Not admissible, as in the example.
h=1
h=0
a
b
h=4
h=1
h=0
d
e
g
Beam search
Use an evaluation function f (n) = h(n), but the maximum
size of the nodes list is k, a fixed constant
Only keeps k best nodes as candidates for expansion, and
throws the rest away
More space efficient than greedy search, but may throw
away a node that is on a solution path
Not complete
Not admissible
Algorithm A
Use as an evaluation function
f (n) = g(n) + h(n)
S
g(n) = minimal-cost path from the start
8
1
5
state to state n.
1
The g(n) term adds a breadth-first
5 B
A
C
component to the evaluation function.
9
3
Ranks nodes on search frontier by
5
1
estimated cost of solution from start
4 D
node through the given node to goal.
G
Not complete if h(n) can equal infinity.
9
Not admissible.
g(d)=4
C is chosen
h(d)=9
next to expand
Algorithm A
1. Put the start node S on the nodes list, called OPEN
2. If OPEN is empty, exit with failure
3. Select node in OPEN with minimal f (n) and place on CLOSED
4. If n is a goal node, collect path back to start and stop.
5. Expand n, generating all its successors and attach to them
pointers back to n. For each successor n' of n
1. If n' is not already on OPEN or CLOSED
put n' on OPEN
compute h(n'), g(n') = g(n) + c(n,n'), f (n') = g(n') + h(n')
Algorithm A*
Algorithm A with constraint that h(n) h*(n)
h*(n) = true cost of the minimal cost path from n to a goal.
Some observations on A
Perfect heuristic: If h(n) = h*(n) for all n, then only the
nodes on the optimal solution path will be expanded. So, no
extra work will be performed.
Null heuristic: If h(n) = 0 for all n, then this is an
admissible heuristic and A* acts like Uniform-Cost Search.
Better heuristic: If h1(n) < h2(n) h*(n) for all non-goal
nodes, then h2 is a better heuristic than h1
If A1* uses h1, and A2* uses h2, then every node expanded by A2* is
also expanded by A1*.
In other words, A1 expands at least as many nodes as A2*.
We say that A2* is better informed than A1*.
parent pointer
0 S 8
1
3
1 A 8
5 B 4
9
arc cost
4 D 8 E 9 G 0
8 C 3
5
h value
g value
goal state
In-class Example
n
S
A
B
C
D
E
G
0
1
5
8
4
8
9
8
8
4
3
inf
inf
0
8
9
9
11
inf
inf
9
9
9
4
5
inf
inf
0
Greedy search
f (n) = h(n) !
node expanded
S
C
G
{
{
{
{
nodes list!
S(8) }!
C(3) B(4) A(8) }!
G(0) B(4) A(8) }!
B(4) A(8) }
A* search
f (n) = g(n) + h(n)
!
node exp.
S
A
B
G
{
{
{
{
{
nodes list!
S(8) }!
A(9) B(9) C(11) }!
B(9) G(10) C(11) D(inf) E(inf) }!
G(9) G(10) C(11) D(inf) E(inf) } !
C(11) D(inf) E(inf) }!
N-Queens
Missionaries and
Cannibals
Remove 5
Sticks
Route Planning