Problem Solving as Search. Problem Types Deterministic, fully observable single-state problem...

Preview:

Citation preview

Problem Solving as Search

Problem Types• Deterministic, fully observable single-state

problem

• Non-observable conformant problem

• Nondeterministic and/or partially observable contingency problem

• Unknown state space exploration problem

Consider this problem

• Five missionaries and five cannibals• Want to cross a river using one canoe.• Canoe can hold up to three people.• Can never be more cannibals than

missionaries on either side of the river.• Aim: To get all safely across the river

without any missionaries being eaten.

• States?? Actions?? Goal test?? Path cost??

Single-State Problem Formulation

• A problem is defined by four items:1. initial state

2. successor function (which actually defines all reachable states)

3. goal test

4. path cost (additive)e.g., sum of distances, number of

actions executed, etc.C(x,a,y) is the step cost, assumed to be

0

Problem Representation : Cannibals and Missionaries

• Initial State– We can show number of cannibals,

missionaries and canoes on each side of the river.

– Start state is therefore:• [5,5,1,0,0,0]

Problem Representation : Cannibals and Missionaries

• Initial State– However, since the system is closed, we only

need to represent one side of the river, as we can deduce the other side.

– We will represent the starting side of the river, and omit the ending side.

– So start state is:• [5,5,1]

Problem Representation : Cannibals and Missionaries

• Goal State(s)– [0,0,0] – TECHNICALLY also [0,0,1]

Problem Representation : Cannibals and Missionaries

• Successor Function (9 actions)1. Move one missionary.

2. Move one cannibal.

3. Move two missionaries.

4. Move two cannibals.

5. Move three missionaries.

6. Move three cannibals.

7. Move one missionary and one cannibal.

8. Move one missionary and two cannibals.

9. Move two missionaries and one cannibal.

Problem Representation : Cannibals and Missionaries

• Successor Function (9 actions)1. Move one missionary.

2. Move one cannibal.

3. Move two missionaries.

4. Move two cannibals.

5. Move three missionaries.

6. Move three cannibals.

7. Move one missionary and one cannibal.

8. Move one missionary and two cannibals.

9. Move two missionaries and one cannibal.

Problem Representation : Cannibals and Missionaries

• Successor Function– To be a little more mathematical/computer

like, we want to represent this in a true successor function format…

S(state) state

1. Move one cannibal across the river.S([x,y,1]) [x-1,y,0]S([x,y,0]) [x+1,y,1]

[Note, this is a slight simplification. We also require, 0 x, y, [x+1 or x-1] 5 ]

Problem Representation : Cannibals and Missionaries

• Successor FunctionS([x,y,0]) [x+1,y,1] //1 missionaryS([x,y,1]) [x-1,y,0]…S([x,y,0]) [x+2,y,1] //2 missionariesS([x,y,1]) [x-2,y,0]…S([x,y,0]) [x+1,y+1,1] // 1 of eachS([x,y,1]) [x-1,y-1,0]

Problem Representation : Cannibals and Missionaries

• Path Cost– One unit per trip across the river.

Implementation: General Tree Search

Tree Search Example

Tree Search Example

Uninformed Search Strategies

• Uninformed strategies use only information available in the problem definition– Breadth-first search– Uniform-cost search– Depth-first search– Depth-limited search– Iterative deepening search

Uninformed Search Strategies

• Uninformed strategies use only information available in the problem definition– Breadth-first search– Uniform-cost search– Depth-first search– Depth-limited search– Iterative deepening search

Breadth-First Search

• Expanding shallowest unexpanded nodeImplementation

fringe is a FIFO queue, i.e., new successors go at end

Breadth-First Search

• Expanding shallowest unexpanded nodeImplementation

fringe is a FIFO queue, i.e., new successors go at end

Breadth-First Search

• Expanding shallowest unexpanded nodeImplementation

fringe is a FIFO queue, i.e., new successors go at end

Breadth-First Search

• Expanding shallowest unexpanded nodeImplementation

fringe is a FIFO queue, i.e., new successors go at end

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Depth-First Search• Expand deepest unexpanded node

Implementation:fringe = LIFO queue, I.e., put successors

at front

Search Strategies• A 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/expandedspace complexity – maximum number of

nodes in memoryoptimality – does it always find a least-cost

solution

This is how far we got

Search Strategies

• Time and space complexity are measured in terms of

b – maximum branching factor of the search treed – depth of the least-cost solutionm – maximum depth of the state space (may be infinite)

Properties of Depth-first Search

• Complete??

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??

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 dbut if solutions are dense, may be much faster than breadth-first

• Space??

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 dbut if solutions are dense, may be much faster than breadth-first

• Space?? O(bm), I.e., linear space!• Optimal??

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 dbut if solutions are dense, may be much faster than breadth-first

• Space?? O(bm), I.e., linear space!• Optimal?? No.

Properties of Breadth-First Search

• Complete??

Properties of Breadth-First Search

• Complete?? Yes (if b is finite)

• Time??

Properties of Breadth-First Search

• Complete?? Yes (if b is finite)

• Time?? 1 + b + b2 + b3 + … + bd + b(bd – 1)= O( bd+1 ), ie, exp. in d

• Space??

Properties of Breadth-First Search

• Complete?? Yes (if b is finite)

• Time?? 1 + b + b2 + b3 + … + bd + b(bd – 1)= O( bd+1 ), ie, exp. in d

• Space?? O( bd+1 ) (keep every node in memory)

• Optimal??

Properties of Breadth-First Search

• Complete?? Yes (if b is finite)• Time?? 1 + b + b2 + b3 + … + bd + b(bd – 1)

= O( bd+1 ), ie, exp. in d• Space?? O( bd+1 ) (keep every node in memory)• Optimal?? Yes (if cost = 1 per step); not optimal

in general• Space is the big problem: can easily generate

nodes at 10MB/sec, so 24hours = 860GB.

Implementation: General Tree Search

Recommended