* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Artificial Intelligence
Incomplete Nature wikipedia , lookup
Linear belief function wikipedia , lookup
Logic programming wikipedia , lookup
Granular computing wikipedia , lookup
Ecological interface design wikipedia , lookup
Narrowing of algebraic value sets wikipedia , lookup
Constraint logic programming wikipedia , lookup
Decomposition method (constraint satisfaction) wikipedia , lookup
Artificial Intelligence Constraint Programming 1 Ian Gent [email protected] Artificial Intelligence Part I : Constraint Programming 1 Constraint Satisfaction Problems Constraint Satisfaction Problems CSP = Constraint Satisfaction Problems AI exams, CSP =/= Communicating Sequential Processes A CSP consists of: a set of variables, X for each variable xi in X, a domain Di Di is a finite set of possible values a set of constraints restricting tuples of values if only pairs of values, it’s a binary CSP A solution is an assignment of a value in Di to each variable xi such that every constraint satisfied 3 Who Cares? Many problems can be represented as CSP’s e.g. scheduling, timetabling, graph coloring, puzzles, supply chain management, parcel routing, party arranging … Many Constraint Programming toolkits available CHIP ILOG Solver [expensive commercially] Eclipse [free academically] Mozart [available as rpm for Linux] 4 Colouring as CSP Can we colour all 4 nodes with 3 colours so that no two connected nodes the same colour? Variable for each node All Di = { red, green, blue} Constraint for each edge all constraints of the form xi xj Solution gives a colouring It’s a binary CSP 5 SAT as a CSP Variable in CSP for each variable/letter in SAT Each domain Di = {true, false} Constraint corresponds to each clause disallows unique tuple which falsifies clause e.g. (not A) or (B) or (not C) not < A = true, B = false, C = true > Not binary CSP unless all clauses 2-clauses 6 N-Queens as a CSP Chessboard puzzle e.g. when n = 8… place 8 queens on a 8x8 chessboard so that no two attack each other Variable xi for each row i of the board Domain = {1, 2, 3 … , n} for position in row Constraints are: xi xj xi - xj i-j xj - xi i - j queens not in same column queens not in same SE diagonal queens not in SW diagonal 7 Constraint Satisfaction Problems CSP = Constraint Satisfaction Problems AI exams, CSP =/= Communicating Sequential Processes A CSP consists of: a set of variables, X for each variable xi in X, a domain Di Di is a finite set of possible values a set of constraints restricting tuples of values if only pairs of values, it’s a binary CSP A solution is an assignment of a value in Di to each variable xi such that every constraint satisfied 8 Formal Definition of Constraints A constraint Cijk… involving variables xi, xj, xk … is any subset of combinations of values from Di, Dj, Dk … I.e. Cijk... Di x Dj x Dk … indicating the allowed set of values Most constraint programming languages/toolkits allow a number of ways to write constraints: e.g. if D1 = D2 = {1,2,3} … { (1,2), (1,3), (2,1), (2,3), (3,1), (3,2) } x1 x2 CtNeq(x1,x2) I’ll use whatever notation seems right at the time 9 More Complex Constraints Constraints don’t need to be simple + = D G R O E O N R B A A E L L R D D T Cryptarithmetic: all letters different and sum correct Variables are D, O, N, A, L, G, E, R, B, T Domains: {0,1,2,3, … , 9} for O, N, A L,E,R,B,T {1,2,3, … , 9} for D, G How do we express it? 10 Donald + Gerald = Robert We can write one long constraint for the sum: 100000*D + 10000*O + 1000*N + 100*A+ 10*L + D + 100000*G + 10000*E + 1000*R + 100*A+ 10*L + D = 100000*R + 10000*O + 1000*B + 100*E+ 10*R + T But what about the difference between variables? Could write D =/= O, D=/=N, … B =/= T Or express it as a single constraint on all variables AllDifferent(D,O,N,A,L,G,E,R,B,T) These two constraints express the problem precisely both involve all the 10 variables in the problem 11 Search in Constraints The basics of search are (guess what) the same as usual Depth first search is the most commonly used What toolkits (Solver, Mozart … ) add is propagation during search done automatically In particular they offer efficient implementations of propagation algorithms like Forward checking Maintaining Arc consistency 12 Forward Checking The simplest good propagation is Forward Checking The idea is very simple If you set a variable and it is inconsistent with some other variable, backtrack! To do this we need to keep up to date the current state of each variable Add a data structure to do this, the current domain CD Initially, CDi = Di When we set variable xj = v remove xi = u from CDi if some constraint is not consistent with both xj = v, xi= u 13 Forward Checking For implementation, we have to cope with undoing the effects of forward checking after backtracking One way is to store CDi on the stack at each depth in search, so it can be restored expensive on space very easy in languages which make copies automatically, e.g. Lisp, Prolog Another is to store only the changes to CDi then undo destructive changes to data structures on backtracking usually faster but can be more fiddly to implement 14 Forward Checking, example Variables x, y Dx = Dy = {1,2,3,4,5} Constraint x < y - 1 Initially CDx = CDy = {1,2,3,4,5} If we set x = 2, then: the only possible values are y = 4, y = 5 so set CDy = {4,5} If we set x = 4, then no possible values of y remain, I.e. CDy = { } retract choice of x = 4 and backtrack 15 Heuristics As usual we need efficient variable ordering heuristics One is very important, like unit propagation in SAT: If any CD is of size 1 we must set that variable to the remaining value More generally, a common heuristic is “minimum remaining value” I.e. choose variable with smallest size CD motivated by most constrained first, or also some theoretical considerations. 16 Next time Arc Consistency Special kinds of constraints, like all different Formulation of constraint problems How to organise a party 17