03_search
03_search
Artificial Intelligence
Solving problems
by searching
AIMA Chapter 3
What are
Uninformed Informed
search State space Tree search
search search
problems?
What are search problems?
• We will consider the problem of designing goal-based agents in
known, fully observable, and deterministic environments.
• Example environment:
Start
Exit
Remember: Goal-based Agent
• The agent has the task to reach a defined goal state.
• The agent needs to move towards the goal. It can use search algorithms to
plan actions that lead to the goal.
• The performance measure is typically the cost to reach the goal.
Agent’s
Maze
location
Result of
moving
Exit
location
Discretization grid
Goal state • Available actions in a state come from the
transition function. E.g.,
𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎(4) = {𝐸𝐸, 𝑆𝑆, 𝑁𝑁}
Distance in miles
Example: Vacuum world
State Space
Goal states
Goal states
Issue: Transition model is not a tree!
It can have redundant paths
Cycles
Return to the same state. The search tree will create a new node!
Initial state
Path 1 Path 2
Goal states
Search tree
• Superimpose a “what if” tree of possible actions Root node =
and outcomes (states) on the state space graph. Initial state
• The Root node represents the initial stare.
• An action child node is reached by an edge
a
representing an action. The corresponding state Edge = Action
is defined by the transition model.
• Trees cannot have cycles (loops) or multiple Child node Non-cycle
paths to the same state. These are called b c redundant
redundant paths. Cycles in the search space path
must be broken to prevent infinite loops.
Removing other redundant paths improves
search efficiency.
• A path through the tree corresponds to a d e e
sequence of actions (states).
… … …
Cycle
• A solution is a path ending in a node
representing a goal state.
b
• Nodes vs. states: Each tree node represents a
state of the system. If redundant path cannot be Solution path
prevented then state can be represented by
multiple nodes.
f Node representing
a Goal state
Differences between typical Tree search and
AI search
Typical tree search AI tree/graph search
• Assumes a given tree that fits • The search tree is too large to fit into
in memory. memory.
a. Builds parts of the tree from the
initial state using the transition
function representing the graph.
b. Memory management is very
important.
Transition model
Tree search example
1. Expand Arad
Frontier
Transition model
Tree search example
Frontier
2. Expand Sibiu
Transition model
Example of
a cycle
We could have
also expanded
Timisoara or
Zerind!
Search strategies
• Worst case time and space complexity are measured in terms of the size
of the state space n (= number of nodes in the search tree).
Metrics used if the state space is only implicitly defined by initial state,
actions and a transition function are:
• d: depth of the optimal solution (= number of actions needed)
• m: the number of actions in any path (may be infinite with loops)
• b: maximum branching factor of the search tree (number of successor nodes for a
parent)
State Space for Search
State Space
• Number of different states the agent and environment State representation
can be in.
• Reachable states are defined by the initial state and the
transition model. Not all states may be reachable from 𝑥𝑥1
the initial state. 𝑥𝑥2
…
• Search tree spans the state space. Note that a single
state can be represented by several search tree nodes if
we have redundant paths.
• State space size is an indication of problem size.
2 × 2 = 22 = 4
3×2×1=6
Factorial: 𝑛𝑛! = 𝑛𝑛 × 𝑛𝑛 − 1 × ⋯ × 2 × 1
#Python
import math
print (math.factorial(23))
#Python
import scipy.special
Dirt
• Permutation: A and B are different rooms, order
does matter!
• With repetition: Dirt can be in both rooms.
• There are 2 options (clean/dirty)
→ 22
Robot location
• Can be in 1 out of 2 rooms.
→2
Total: 2 × 22 = 23 = 8
r … # of rooms
n … options
Examples: What is the state space size?
Often a rough upper limit is sufficient to determine how hard the search problem is.
Positions the agent All arrangements with All arrangements All possible boards.
can be in. 8 queens on the of 9 elements.
board. 𝑛𝑛 < 39 = 19,683
n = Number of 𝑛𝑛 ≤ 9!
64
white squares. 𝑛𝑛 < 2 ≈ 1.8 × 1019 Many boards are not
Half is legal (e.g., all x’s)
We can only have 8 unreachable:
queens: 9!
𝑛𝑛 = = 181,440
𝑛𝑛 = 64
8
≈ 4.4 × 109 2
Uninformed Search
Uninformed search strategies
Breadth-first search
Uniform-cost search
Depth-first search
Iterative deepening search
Breadth-first search (BFS)
Data Structures
• Frontier data structure: holds references to the green nodes (green) and is
implemented as a FIFO queue.
• Reached data structure: holds references to all visited nodes (gray and green)
and is used to prevent visiting nodes more than once (cycle checking).
• Builds a tree with links from parent to child.
Implementation: BFS
31
Implementation: Expanding the search tree
• Optimal?
Yes – if cost is the same per step (action). Otherwise: Use uniform-cost search.
• Time?
Sum of the number of nodes created in at each level in a b-ary tree of depth d:
1 + 𝑏𝑏 + 𝑏𝑏 2 + ⋯ + 𝑏𝑏 𝑑𝑑 = 𝑂𝑂(𝑏𝑏 𝑑𝑑 )
• Space?
Stored nodes: 𝑂𝑂(𝑏𝑏 𝑑𝑑 )
Note:
• The large space complexity is usually a bigger problem than time!
d: depth of the optimal solution
m: max. depth of tree
Breadth-first search b: maximum branching factor
• Time and Space: 𝑂𝑂 𝑏𝑏 𝑑𝑑 - all paths to the depth of the goal are expanded
expanded
d=2
b=2
m=4
B C Goal
D E F G
C Goal
Uniform-cost search
(= Dijkstra’s shortest path algorithm)
• Expansion rule: Expand node in the frontier with the least path cost from the initial state.
• Implementation: best-first search where the frontier is a priority queue ordered by lower 𝑓𝑓(𝑛𝑛) =
path cost (cost of all actions starting from the initial state).
• Breadth-first search is a special case when all step costs being equal, i.e., each action costs the
same!
• Time?
Number of nodes with path cost ≤ cost of optimal solution (C*) is O(b1+C*/ ε).
This can be greater than O(bd): the search can explore long paths consisting of small steps before exploring
shorter paths consisting of larger steps
• Space?
O(b1+C*/ ε)
• Time?
Could be the time to reach a solution at maximum depth m in the last path: 𝑂𝑂 𝑏𝑏𝑚𝑚
Terrible if 𝑚𝑚 ≫ 𝑑𝑑, but if there are many shallow solutions, it can be much faster than
BFS.
• Space?
𝑂𝑂 𝑏𝑏𝑏𝑏 linear in max. tree depth (only if no reached data structure is used!)
d: depth of the optimal solution
m: max. depth of tree
Depth-first search b: maximum branching factor
A
b=2 d=2
B C Goal
m=4
D E
Note: The order in which we add new nodes to the frontier can change what goal we find!
Iterative deepening search (IDS)
Can we
a) get DFS’s good memory footprint,
b) avoid infinite cycles, and
c) preserve BFS’s optimality guaranty?
• Optimal?
Yes, if step cost = 1
• Time?
Consists of rebuilding trees up to d times
𝑑𝑑 𝑏𝑏1 + (𝑑𝑑 − 1)𝑏𝑏2 + … + 1𝑏𝑏 𝑑𝑑 = 𝑂𝑂(𝑏𝑏𝑑𝑑 ) Slower than BFS, but the same complexity!
• Space?
O(bd) linear space. Even less than DFS since m<=d. Cycles need to be handled by the
depth-limited DFS implementation.
Note: IDS produces the same result as BFS but trades better space complexity for
worse run time.
This makes IDS/DFS into the
workhorse of AI.
Informed Search
Informed search
• The agent can use additional information in the form of “hints” about how
promising different states/nodes are to lead to the goal. These hints are
derived from
• information the agent has (e.g., a map) or
• percepts coming from a sensor.
• The agent uses a heuristic function 𝒉𝒉(𝒏𝒏) to rank nodes in the frontier and
select the most promising state in the frontier for expansion using a best-
first search strategy.
• Algorithms:
• Greedy best-first search
• A* search
Heuristic function
• Heuristic function ℎ(𝑛𝑛) estimates the cost of reaching a node representing
the goal state from the current node 𝑛𝑛.
• Examples:
Euclidean distance Manhattan distance
Start state Start state
h(n)
Greedy best-first search example
Expansion rule: Expand the
node that has the lowest value
of the heuristic function h(n) h(n)=
Greedy best-first search example
Greedy best-first search example
Greedy best-first search example
Total:
140 + 99 + 211 = 450 miles
Properties of greedy best-first search
• Complete?
Yes – Best-first search if complete in finite spaces.
• Optimal?
No
Total:
140 + 99 + 211 = 450 miles
• Complete?
Yes – Best-first search if complete in finite spaces.
• Optimal?
No d: depth of the optimal solution
m: max. depth of tree
b: maximum branching factor
• Time?
Worst case: O(bm) like DFS
Best case: O(bm) – If ℎ(𝑛𝑛) is 100% accurate
• Space?
Same as time complexity.
How can we fix the optimality problem with
greedy best-first search?
• Idea: Take the cost of the path to 𝑛𝑛 called 𝑔𝑔(𝑛𝑛) into account to avoid
expanding paths that are already very expensive.
• The evaluation function 𝑓𝑓(𝑛𝑛) is the estimated total cost of the path
through node 𝑛𝑛 to the goal:
𝑓𝑓(𝑛𝑛) = 𝑔𝑔(𝑛𝑛) + ℎ(𝑛𝑛)
𝑔𝑔(𝑛𝑛): cost so far to reach n (path cost)
ℎ(𝑛𝑛): estimated cost from n to goal (heuristic)
• The agent in the example above will stop at n with 𝑓𝑓(𝑛𝑛) = 3 and chose the
path up with a better 𝑓𝑓(𝑛𝑛𝑛) = 2
ℎ(𝑛𝑛)
A* search example
𝑓𝑓 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + ℎ(𝑛𝑛)
ℎ(𝑛𝑛)
A* search example
𝑓𝑓 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + ℎ(𝑛𝑛)
ℎ(𝑛𝑛)
A* search example
𝑓𝑓 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + ℎ(𝑛𝑛)
ℎ(𝑛𝑛)
A* search example
𝑓𝑓 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + ℎ(𝑛𝑛)
ℎ(𝑛𝑛)
A* search example
𝑓𝑓 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + ℎ(𝑛𝑛)
ℎ(𝑛𝑛)
BFS vs. A* search
BFS
A*
Source: Wikipedia
Implementation of A* Search
n* (goal)
Any unexplored node 𝑛𝑛 has:
𝐶𝐶 ∗ = 𝑓𝑓(𝑛𝑛∗ ) = 𝑔𝑔(𝑛𝑛∗ ) + 0 n
𝑓𝑓 𝑛𝑛 ≥ 𝑓𝑓(𝑛𝑛∗ )
n’ (other goal)
𝑔𝑔 𝑛𝑛′ ≥ 𝑓𝑓 𝑛𝑛 ⟺ 𝑔𝑔 𝑛𝑛′ ≥ 𝐶𝐶 ∗
A* is optimally efficient
a. No other tree-based search algorithm that uses the same heuristic can
expand fewer nodes and still be guaranteed to find the optimal solution.
b. Any algorithm that does not expand all nodes with 𝑓𝑓(𝑛𝑛) < 𝐶𝐶 ∗ (the lowest
cost of going to a goal node) cannot be optimal. It risks missing the optimal
solution.
Properties of A*
• Complete?
Yes
• Optimal?
Yes
• Time?
Number of nodes for which 𝑓𝑓(𝑛𝑛) ≤ 𝐶𝐶 ∗ (exponential)
• Space?
Same as time complexity.
Designing heuristic functions
Heuristics for the 8-puzzle
ℎ1(𝑛𝑛) = number of misplaced tiles
ℎ2(𝑛𝑛) = total Manhattan distance (number of squares from desired
location of each tile)
ℎ1(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠) = 8
ℎ2(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠) = 3 + 1 + 2 + 2 + 2 + 3 + 3 + 2 = 18
1 needs to move 3
Are ℎ1 and ℎ2 admissible? positions
Heuristics from relaxed problems
• A problem with fewer restrictions on the actions is called a relaxed
problem.
• The cost of an optimal solution to a relaxed problem is an admissible
heuristic for the original problem. I.e., the true cost is never smaller.
• ℎ1: If the rules of the 8-puzzle are relaxed so that a tile can move
anywhere, then ℎ1(𝑛𝑛) gives the shortest solution.
• ℎ2: If the rules are relaxed so that a tile can move to any adjacent square,
then ℎ2(𝑛𝑛) gives the shortest solution.
ℎ1(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠) = 8
ℎ2(𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠)
= 3+1+2+2+2+3+3+2
= 18
Heuristics from relaxed problems
What relaxations are used in these two cases?
Euclidean distance Manhattan distance
Start state Start state
*
* * *
* * * *
Dominance: What heuristic is better?
• That is, always pick for each node the heuristic that
is closest to the real cost to the goal ℎ∗ (𝑛𝑛).
Satisficing Search: Weighted A* search
f 𝑛𝑛 = 𝑔𝑔 𝑛𝑛 + 𝑊𝑊 × ℎ(𝑛𝑛)
If all step
IDS Yes 𝑂𝑂(𝑏𝑏𝑑𝑑 ) 𝑂𝑂(𝑏𝑏𝑏𝑏)
costs are equal
Uniform-cost
Yes Yes Number of nodes with 𝑔𝑔(𝑛𝑛) ≤ 𝐶𝐶 ∗
Search
If all step
IDS Yes 𝑂𝑂(𝑏𝑏𝑑𝑑 ) 𝑂𝑂(𝑏𝑏𝑏𝑏)
costs are equal
• Tree search can be used for planning actions for goal-based agents in
known, fully observable and deterministic environments.
• Issues are:
• The large search space typically does not fit into memory. We use a
description using a compact transition model.
• The search tree is built on the fly, and we have to deal with cycles and
redundant paths.