Logic Programming: Search Strategies · Search Problems Many classical AI/CS problems can be...
Transcript of Logic Programming: Search Strategies · Search Problems Many classical AI/CS problems can be...
![Page 1: Logic Programming: Search Strategies · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/1.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/2.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/3.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/4.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/5.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/6.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/7.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/8.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/9.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/10.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/11.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/12.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/13.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/14.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/15.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/16.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/17.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/18.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/19.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/20.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/21.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/22.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/23.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/24.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/25.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/26.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/27.jpg)
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 · Search Problems Many classical AI/CS problems can be formulated as search problems. Examples: Graph searching Blocks world Missionaries and](https://reader034.fdocuments.us/reader034/viewer/2022051607/6037ad218f0bd20b28772cbc/html5/thumbnails/28.jpg)
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