Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ......

28
T H E U N I V E R S I T Y O F E D I N B U R G H Logic Programming: Search Strategies Alan Smaill Oct 19, 2015 Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 1/28

Transcript of Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ......

Page 1: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Logic Programming:Search Strategies

Alan Smaill

Oct 19, 2015

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 1/28

Page 2: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Today

Problem representation

Search

Depth FirstIterative DeepeningBreadth First

AND/OR (alternating/game tree) search

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 2/28

Page 3: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Search Problems

Many classical AI/CS problems can be formulated as searchproblems.

Examples:

Graph searching

Blocks world

Missionaries and cannibals

Planning (e.g. robotics)

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 3/28

Page 4: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Search Spaces

Given by:

Set of states s1, s2, . . .

Goal predicate goal(X )

Step predicate s(X , Y ) that says we can go from state X tostate Y

A start state (or states)

A solution is a path leading from the S to a goal state Gsatisfying goal(G ).

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 4/28

Page 5: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: Blocks world

Take configuration of blocks as a list of three towers, each towerbeing a list of blocks in a tower from top to bottom.

A

B

C

[[c,b,a],[],[c]]

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 5/28

Page 6: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: Blocks world

Move a block from top of a tower to top of another tower:

A

B

C

[[b,a],[],[c]]

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 6/28

Page 7: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: Blocks world

Next move:

A B C

[[a],[b],[c]]

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 7/28

Page 8: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: Blocks world

Then —

A

B C

[[],[a,b],[c]]

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 8/28

Page 9: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Prolog representation

State is a list of stacks of blocks:

[[a,b,c],[],[]]

Transitions move a block from the top of one stack to the topof another:

s([[A|As],Bs,Cs], [As,[A|Bs],Cs]).s([[A|As],Bs,Cs], [As,Bs,[A|Cs]])....

Can specify particular goal position:

goal([[],[],[a,b,c]]).

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 9/28

Page 10: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

An abstract problem space

s(a,b).s(b,c).s(c,a).s(c,f(d)).s(f(N),f(g(N))).s(f(g(X)),X).

goal(d).

Think of the graph generated by thesedeclarations.

In this case:

the graph is infinite

there is a loop near the top of the graph

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 10/28

Page 11: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

abstract space ctd

a

b

c

f(d)

f(g(d))

f(g(g(d)))

... g(d)

d

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 11/28

Page 12: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

problem 1: cycles

We can already see in the blocks world example and in the abstractsearch space that it is easy to follow actions around in cycles, andnot find the goal, even if there is a path to the goal.

There are two main approaches to deal with this:

remember where you’ve been; OR . . .

work with depth bound

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 12/28

Page 13: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Solution 1: remember where you’ve been

% dfs( PathSoFar, CurrentNode, PathToGoal )

dfs_noloop(Path,Node,[Node|Path]) :-goal(Node).

dfs_noloop(Path,Node,Path1) :-s(Node,Node1),\+ member(Node1,Path),dfs_noloop([Node|Path],Node1,Path1).

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 13/28

Page 14: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Problem 2: Infinite State Space

Compare the graph from the abstract search space.Depth First Search has similar problems to Prolog proof search:

We may miss solutions because state space is infinite;

Even if state space is finite, may wind up finding “easy”solution only after a long exploration of pointless part ofsearch space

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 14/28

Page 15: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Solution 2: depth bounding

Keep track of depth, stop if bound exceeded

Note: does not avoid loops (can do this too)

dfs_bound(_,Node,[Node]) :-goal(Node).

dfs_bound(N,Node,[Node|Path]) :-N > 0,s(Node,Node1),M is N-1,dfs_bound(M,Node1,Path)

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 15/28

Page 16: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Problem 3: what is a good bound?

In general, we just don’t know in advance:

Too low? –Might miss solutionsToo high? – Might spend a long time searching pointlessly

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 16/28

Page 17: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Solution 3: iterative deepening

Use the following with some small start value for N

dfs_id(N,Node,Path) :-dfs_bound(N,Node,Path)

;M is N+1,dfs_id(M,Node,Path).

NB: if there is no solution, this will not terminate.

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 17/28

Page 18: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Breadth first search

Keep track of all possible solutions, try shortest ones first;do this by maintaining a “queue” of solutions

bfs([[Node|Path]|_], [Node|Path]) :-goal(Node).

bfs([Path|Paths], S) :-extend(Path,NewPaths),append(Paths,NewPaths,Paths1),bfs(Paths1,S).

bfs_start(N,P) :- bfs([[N]],P).

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 18/28

Page 19: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

extending paths

extend([Node|Path],NewPaths) :-bagof([NewNode,Node|Path],

(s(Node,NewNode),\+ (member(NewNode,[Node|Path]))),NewPaths),

!.%% if there are no next steps,%% bagof will fail and we’ll fall through.

extend(_Path,[]).

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 19/28

Page 20: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Problem: speed

Concatenating new paths to end of list is slow

Avoid this using difference lists?

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 20/28

Page 21: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

AND/OR search

So far we’ve considered graph search problems

Just want to find some path from start to end

Other problems have more structure

e.g. 2-player games

AND/OR search is a useful abstraction

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 21/28

Page 22: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: Noughts and Crosses

XX

XX

X

X

X

XX

X X

O

OX O

O

X OX O

X

. . . . . . . . . . . .

. . .

. . .

. . .

XX

–1 0 +1

XX

X XO

X XOX XO

O

O

X

X XO

OO

O O X X

MAX (X)

MIN (O)

MAX (X)

MIN (O)

TERMINAL

Utility

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 22/28

Page 23: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Representation

or(S,Nodes)S is an OR node with possible next states Nodes

“Our move”

and(S,Nodes)S is an AND node with possible next states Nodes“Opponent moves”

goal(S)S is a “win” for us

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 23/28

Page 24: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Example: A simple game

and(a,[b,c]).or(b,[d,a]).or(c,[d,e]).goal(e).

What is the graph here?

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 24/28

Page 25: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Basic Idea

andor(Node) :- goal(Node).andor(Node) :-

or(Node,Nodes),member(Node1,Nodes),andor(Node1).

andor(Node) :-and(Node,Nodes),solveall(Nodes).

solveall(Nodes) :- ...

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 25/28

Page 26: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Solutions

For each AND state, we need solutions for all possible nextstates

For each OR state, we just need one choice

A “solution” is thus a tree, or strategy

Can adapt previous program to produce solution tree;Can also incorporate iterative deepening, loop avoidance, BFS.heuristic measures of “good” positions leads to algorithms likeMiniMax.

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 26/28

Page 27: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Noughts and crosses via minimax

Seehttp:

// www. emse. fr/ ~ picard/ cours/ ai/ minimax/

with acknowledgements to EMSE.

This provides alongside an implementation of minimax,instantiation to noughts and crosses (= tic-tac-toe), and a basicinterface for playing the game.

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 27/28

Page 28: Logic Programming: Search Strategies · Graph searching Blocks world Missionaries and cannibals ... (= tic-tac-toe), and a basic interface for playing the game. Alan Smaill Logic

TH

E

U N I V E RS

IT

Y

OF

ED I N B U

RG

H

Further Reading

Bratko, Prolog Programming for Artificial Intelligence

ch. 8 (difference lists), ch. 11 (DFS/BFS)also Ch. 12 (BestFS), 13 (AND/OR)

Alan Smaill Logic Programming: Search Strategies Oct 19, 2015 28/28