Depth-first search - Cornell Computer Science

CS 4700:
Foundations of Artificial Intelligence
Prof. Carla P. Gomes
[email protected]
Module:
Search I
(Reading R&N: Chapter 3)
Carla P. Gomes
CS4700
Outline
Problem-solving agents
Problem types
Problem formulation
Example problems
Basic search algorithms
Carla P. Gomes
CS4700
Problem-solving agents
Problem solving agents are Goal-based Agents.
1. Goal Formulation  set of (desirable) world states.
2. Problem formulation  what actions and states to consider given a
goal.
3. Search for solution  given the problem, search for a solution, a
sequence of actions to achieve the goal.
4. Execution of the solution
Carla P. Gomes
CS4700
Example: Romania
On holiday in Romania; currently in
Arad.
Flight leaves tomorrow from
Bucharest
Formulate goal:
– be in Bucharest
–
Formulate problem:
– actions: drive between
cities
–
– states: various cities
Find solution:
– sequence of cities, e.g.,
Arad, Sibiu, Fagaras,
Bucharest
–
Execution
– drive from Arad to
Initial
State
Goal
State
Environment: fully observable (map),
deterministic, and the agent knows effects
of each action. Is this really the case?
Carla P. Gomes
CS4700
Problem-solving agents
(Goal-based Agents)
Carla P. Gomes
CS4700
Increasing complexity
Problem types
Deterministic, fully observable  single-state problem
– Agent knows exactly which state it will be in; solution is a sequence
actions.
–
Non-observable  sensorless problem (conformant problem)
– Agent may have no idea where it is (no sensors); it reasons in terms of
belief states; solution is a sequence actions (effects of actions certain).
Nondeterministic and/or partially observable  contingency problem
– Actions uncertain, percepts provide new information about current state
(adversarial problem if uncertainty comes from other agents)
Unknown state space and uncertain action effects  exploration problem
Carla P. Gomes
CS4700
Example: vacuum world
Single-state, start in #5. Solution?
Carla P. Gomes
CS4700
Example: vacuum world
Single-state, start in #5.
Solution? [Right, Suck]
Sensorless, start in
{1,2,3,4,5,6,7,8} e.g.,
Right goes to {2,4,6,8}
Solution?
Goal: 7 or 8
Carla P. Gomes
CS4700
Example: vacuum world
Sensorless, start in
{1,2,3,4,5,6,7,8} e.g.,
Right goes to {2,4,6,8}
Solution?
[Right,Suck,Left,Suck]
Contingency
– Nondeterministic: Suck may
dirty a clean carpet
– Partially observable: location, dirt at current location.
– Percept: [L, Clean], i.e., start in #5 or #7
Solution?
Carla P. Gomes
CS4700
Example: vacuum world
Sensorless, start in
{1,2,3,4,5,6,7,8} e.g.,
Right goes to {2,4,6,8}
Solution?
[Right,Suck,Left,Suck]
Contingency
– Nondeterministic: Suck may
dirty a clean carpet
– Partially observable: location, dirt at current location.
– Percept: [L, Clean], i.e., start in #5 or #7
Solution? [Right, if dirt then Suck]
Carla P. Gomes
CS4700
Single-state problem formulation
A problem is defined by four items:
1. Initial state e.g., "at Arad"
2.
2. Actions available to the agent
Common description  successor function S(x) = set of (action–state) pairs
– e.g., S(Arad) = {<Arad  Zerind, Zerind>, <Arad  Sibiu, Sibiu>, … }
–
Note:
State space – graph in which the nodes are states and arcs between nodes are
actions.
Initial state + successor function implicitly define state space.
Carla P. Gomes
CS4700
Path in a state space is a sequence of states connected by a sequence of actions.
Single-state problem formulation
3. Goal test, which determines whether a given state is the goal state.
Can be
– explicit, e.g., x = "at Bucharest"
– implicit, e.g., Checkmate(x)
–
4.
Path cost, which assigns a numeric cost to each path, reflecting performance
measure of agent.
– e.g., sum of distances, number of actions executed, etc.
– Step cost of taking action a to go from state x to state y  c(x,a,y);
assumed to be ≥ 0, and additive.
–
A solution is a path (sequence of actions) leading from the initial state to a goal
state. Optimal solution has the lowest path cost among all solutions.
Carla P. Gomes
CS4700
Vacuum-cleaner world
Percepts: location and contents, e.g., [A, Dirty]
Actions: Left, Right, Suck
states?
actions?
goal test?
path cost?
Carla P. Gomes
CS4700
Vacuum world state space graph
states? The agent is in one of n (2) locations, with or without dirt. (nx2n)
actions? Left, Right, Suck
goal test? no dirt at all locations?
path cost? 1 per action
Carla P. Gomes
CS4700
Example: The 8-puzzle
states?
actions?
goal test?
path cost?
Carla P. Gomes
CS4700
Example: The 8-puzzle
states? locations of tiles
actions? move blank left, right, up, down
goal test? = goal state (given)
path cost? 1 per move
[Note: optimal solution of n-Puzzle family is NP-hard]
Carla P. Gomes
CS4700
Example: robotic assembly
states?: real-valued coordinates of robot joint angles parts of the object to be
assembled
actions?: continuous motions of robot joints
goal test?: complete assembly
path cost?: time to execute
Carla P. Gomes
CS4700
Real World Problems
Route finding problems;
Touring problems (end up in the same city)  Traveling Salesman
Problem
VLSI layout  positioning millions of components and connections on a
chip to minimize area, circuit delays, etc.
Robot navigation
Automatic assembly of complex objects
Protein design – sequence of amino acids that will fold into the 3dimensional protein with the right properties.
Carla P. Gomes
CS4700
Now that we have formulated the problem how do we find a
solution?
Search through the state space.
We will consider search techniques that use an
explicit search tree that is generated by the initial state +
successor function
initialize (initial node)
Loop
choose a node for expansion
according to strategy;
goal node?  done
expand node with successor function
Carla P. Gomes
CS4700
Search is a central topic in AI.
Originated with Newell and Simon’s work on problem solving;
Human Problem Solving (1972).
Automated reasoning is a natural search task.
More recently: Given that almost all AI formalisms
(planning, learning, etc) are NP-Complete or worse,
Some form of search is generally unavoidable
(i.e., no smarter algorithm available).
Carla P. Gomes
CS4700
Tree search example
Carla P. Gomes
CS4700
Tree search example
Carla P. Gomes
CS4700
Tree search example
Carla P. Gomes
CS4700
Implementation: states vs. nodes
A state is a --- representation of --- a physical configuration
A node is a data structure constituting part of a search tree includes state,
tree parent node, action (applied to parent), path cost (initial state to
node) g(x), depth
The Expand function creates new nodes, filling in the various fields and
using the SuccessorFn of the problem to create the corresponding
states.
Fringe is the collection of nodes that have been generated but not expanded
(queue  different types of queues insert elements in different orders);
Each node of the fringe is a leaf node.
Carla P. Gomes
CS4700
Search strategies
A search strategy is defined by picking the order of node expansion
Strategies are evaluated along the following dimensions:
– completeness: does it always find a solution if one exists?
– time complexity: number of nodes generated
– space complexity: maximum number of nodes in memory
– optimality: does it always find a least-cost solution?
–
Time and space complexity are measured in terms of
– b: maximum branching factor of the search tree
– d: depth of the least-cost solution
– m: maximum depth of the state space (may be ∞)
–
Carla P. Gomes
CS4700
Uninformed search strategies
Uninformed (blind) search strategies use only the information available in
the problem definition:
–
–
–
–
–
–
–
–
–
–
Breadth-first search
Uniform-cost search
Depth-first search
Depth-limited search
Iterative deepening search
Bidirectional search
Carla P. Gomes
CS4700
Breadth-first search
Expand shallowest unexpanded node
Implementation:
– fringe is a FIFO queue, i.e., new successors go at end
–
Carla P. Gomes
CS4700
Breadth-first search
Expand shallowest unexpanded node
Implementation:
– fringe is a FIFO queue, i.e., new successors go at end
–
Carla P. Gomes
CS4700
Breadth-first search
Expand shallowest unexpanded node
Implementation:
– fringe is a FIFO queue, i.e., new successors go at end
–
Carla P. Gomes
CS4700
Breadth-first search
Expand shallowest unexpanded node
Implementation:
– fringe is a FIFO queue, i.e., new successors go at end
–
Carla P. Gomes
CS4700
Properties of breadth-first search
Complete? Yes (if b is finite)
Time? 1+b+b2+b3+… +bd + b(bd-1) = O(bd+1)
Space? O(bd+1) (keeps every node in memory)
Optimal? Yes (if all step costs are identical)
Space is the bigger problem (more than time)
Carla P. Gomes
CS4700
Uniform-cost search
Expand least-cost unexpanded node (instead of shallowest) (1)
Implementation:
– fringe = queue ordered by path cost
–
(1) Equivalent to breadth-first if step costs all equal
Complete? Yes, if b is finite, step cost ≥ ε
(>0)
Time? # of nodes with g ≤ cost of optimal solution (C*), O(b(1+C*/
ε))
Space? # of nodes with g ≤ cost of optimal solution, O(b(1+  C*/ ε ))
(1) Same as breadth-first search is step costs are equal
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO (stack) queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Depth-first search
Expand deepest unexpanded node
Implementation:
– fringe = LIFO queue, i.e., put successors at front
–
Carla P. Gomes
CS4700
Properties of depth-first search
Complete? No: fails in infinite-depth spaces, spaces with loops
– Modify to avoid repeated states along path
–
 complete in finite spaces
Time? O(bm): terrible if m is much larger than d
– but if solutions are dense, may be much faster than breadth-first
–
Space? O(bm), i.e., linear space!
m – maximum depth of state sapce.
d – depth of shallowest (least cost) solution
Optimal? No
Note: In backtracking search only one successor is generated
 only O(m) memory is needed; also successor is modification of
the current state, but we have to be able to undo each modification.Carla P. Gomes
CS4700
Iterative deepening search
Why would one do that?
Combine good memory requirements of depth-first with
the completeness of breadth-first when branching factor is
finite and its optimality when the path cost is a non-decreasing
function of the depth of the node.
Carla P. Gomes
CS4700
Iterative deepening search l =0
Carla P. Gomes
CS4700
Iterative deepening search l =1
Carla P. Gomes
CS4700
Iterative deepening search l =2
Carla P. Gomes
CS4700
Iterative deepening search l =3
Carla P. Gomes
CS4700
Iterative deepening search
Looks quite wasteful, is it?
Number of nodes generated in an iterative deepening search to depth d with
branching factor b:
NIDS = d b1 + (d-1)b2 + … + 3bd-2 +2bd-1 + 1bd
Number of nodes generated in a breadth-first search with branching factor b:
NBFS = b1 + b2 + … + bd-2 + bd-1 + (bd+1-b)
Note: BFS generates
some nodes at depth (d+1)
For b = 10, d = 5,
– NBFS= 10 + 100 + 1,000 + 10,000 + 100,000 + 999,990= 1,111,100
–
– NIDS
= 50 + deepening
400 + 3,000is+ the
20,000
+ 100,000
= 123,456search method
Iterative
preferred
uninformed
– When there is a large search space and the depth of the solution
is not known.
Carla P. Gomes
CS4700
Properties of iterative deepening search
Complete? Yes
(b finite)
Time? d b1 + (d-1)b2 + … + bd = O(bd)
Space? O(bd)
Optimal? Yes, if step costs identical
Carla P. Gomes
CS4700
Bidirectional Search
•
Simultaneously:
– Search forward from start
– Search backward from the goal
Stop when the two searches meet.
• If branching factor = b in each direction,
with solution at depth d
 only O(2 bd/2)= O(2 bd/2)
• Checking a node for membership in the other search tree can be done in
constant time (hash table)
• Key limitations:
Space O(bd/2)
How to search backwards (e.g., in Chess)?
 lost of states satisfy that goal
The predecessor of a node should be easily computable (i.e., actions are easily reversible)
Carla P. Gomes
CS4700
Summary of Complexity Results
See page 81 R & N
Carla P. Gomes
CS4700
Summary
Problem formulation usually requires abstracting away realworld details to define a state space that can feasibly be
explored
Variety of uninformed search strategies
Iterative deepening search uses only linear space and not
much more time than other uninformed algorithms
Carla P. Gomes
CS4700