I am Patrick Prosser I am a senior lecturer at Glasgow I teach AF2 & CP4 I am a member of the algorithms group the apes (distributed, not disbanded) I.

Slides:



Advertisements
Similar presentations
Constraint Satisfaction Problems
Advertisements

I am Patrick Prosser I am a senior lecturer at Glasgow I teach algorithms & data structures in java I am a member of the algorithms group the apes (distributed,
Constraint Programming Peter van Beek University of Waterloo.
Constraint Satisfaction Patrick Prosser. An Example, Exam Timetabling Someone timetables the exams We have a number of courses to examine how many? Dept.
Backward Checking Search BT, BM, BJ, CBJ. An example problem Colour each of the 5 nodes, such that if they are adjacent, they take different colours 12.
Constraint Satisfaction Problems Russell and Norvig: Chapter
University of Toronto Mechanical & Industrial Engineering An Introduction to Constraint Programming J. Christopher Beck Dept. of Mechanical & Industrial.
Fc. Consider the following problem (csp5) variables V[1] to V[10] uniform domains D[1] to D[10] = {1,2,3} constraints V[1] = V[4] V[4] > V[7] V[7] = V[10]
Foundations of Constraint Processing Lookahead Schemas 1 Foundations of Constraint Processing CSCE421/821, Spring
Backward Checking Search BT, BM, BJ, CBJ. An example problem Colour each of the 5 nodes, such that if they are adjacent, they take different colours.
Lecture 11 Last Time: Local Search, Constraint Satisfaction Problems Today: More on CSPs.
1 Constraint Satisfaction Problems A Quick Overview (based on AIMA book slides)
1 Constraint Satisfaction Problems. 2 Intro Example: 8-Queens Generate-and-test: 8 8 combinations.
This lecture topic (two lectures) Chapter 6.1 – 6.4, except 6.3.3
1 Finite Constraint Domains. 2 u Constraint satisfaction problems (CSP) u A backtracking solver u Node and arc consistency u Bounds consistency u Generalized.
Artificial Intelligence Constraint satisfaction problems Fall 2008 professor: Luigi Ceccaroni.
Constraint Satisfaction problems (CSP)
Constraint Satisfaction CSE 473 University of Washington.
Constraint Satisfaction Problems
Constraint Satisfaction
Foundations of Constraint Processing, Fall 2005 Sep 20, 2005BT: A Theoretical Evaluation1 Foundations of Constraint Processing CSCE421/821, Fall 2005:
Chapter 5 Outline Formal definition of CSP CSP Examples
4/18/2005EE5621 EE562 ARTIFICIAL INTELLIGENCE FOR ENGINEERS Lecture 7, 4/25/2005 University of Washington, Department of Electrical Engineering Spring.
Subgraph Isomorphism Problem Simple algorithms. Given two graphs G = (V,E) and H = (W,F) is there a subgraph of H that is isomorphic to G?
Artificial Intelligence CS482, CS682, MW 1 – 2:15, SEM 201, MS 227 Prerequisites: 302, 365 Instructor: Sushil Louis,
Constrainedness Including slides from Toby Walsh.
I am Patrick Prosser I am a senior lecturer at Glasgow (and Strathclyde till mid April) I teach algorithms & data structures in java I am a member of.
Constraint Satisfaction Read Chapter 5. Model Finite set of variables: X1,…Xn Variable Xi has values in domain Di. Constraints C1…Cm. A constraint specifies.
Constraint Satisfaction CPSC 386 Artificial Intelligence Ellen Walker Hiram College.
Problem Solving with Constraints Lookahead Schemas 1 Foundations of Constraint Processing CSCE496/896, Fall
CSCI 5582 Fall 2006 CSCI 5582 Artificial Intelligence Fall 2006 Jim Martin.
Chapter 5 Constraint Satisfaction Problems
Principles of Intelligent Systems Constraint Satisfaction + Local Search Written by Dr John Thornton School of IT, Griffith University Gold Coast.
Review Test1. Robotics & Future Technology Future of Intelligent Systems / Ray Kurzweil futurist Ray Kurzweil / A Long Bet A Long Bet / Robot Soccer.
Maintaining Arc Consistency (MAC) MAC is the same as Back-tracking, but with calls to AC-3 interleaved... function Backtracking-Search(csp) returns.
An Introduction to Artificial Intelligence Lecture 5: Constraint Satisfaction Problems Ramin Halavati In which we see how treating.
Maximum Density Still Life Symmetries and Lazy Clause Generation Geoffrey Chu, Maria Garcia de la Banda, Chris Mears, Peter J. Stuckey.
Constraint Satisfaction Problems University of Berkeley, USA
Constraint Satisfaction Problems
Constraint Satisfaction CSE 473 University of Washington.
CS 171: Intro to AI Discussion Week 2 Jan 15 th 2016.
Where are the hard problems?. Remember Graph Colouring? Remember 3Col?
1 Constraint Satisfaction Problems (CSP). Announcements Second Test Wednesday, April 27.
Cbj. What’s a csp? a set of variables each with a domain of values a collection of constraints (I’m going to assume binary for the present) assign each.
Where are the hard problems?
I am a senior lecturer at Glasgow
Constraint Satisfaction Problems Lecture # 14, 15 & 16
543 cbj fans can’t be wrong.
Constraint Satisfaction
Constraint Satisfaction
I am a senior lecturer at Glasgow
CSP Search Techniques Backtracking Forward checking
Intelligent Backtracking Algorithms: A Theoretical Evaluation
Constraint Satisfaction Problems
Foundations of Constraint Processing All questions to Piazza
Lookahead Schemas Foundations of Constraint Processing
Intelligent Backtracking Algorithms
Constraints and Search
Intelligent Backtracking Algorithms: A Theoretical Evaluation
Intelligent Backtracking Algorithms: A Theoretical Evaluation
at Glasgow (and Strathclyde till mid April)
Constraint satisfaction problems
Constraint Satisfaction Problems. A Quick Overview
Intelligent Backtracking Algorithms: A Theoretical Evaluation
Intelligent Backtracking Algorithms: A Theoretical Evaluation
Artificial Intelligence
Foundations of Constraint Processing All questions to Piazza
Intelligent Backtracking Algorithms: A Theoretical Evaluation
Constraint Satisfaction Problems
Constraint satisfaction problems
Presentation transcript:

I am Patrick Prosser I am a senior lecturer at Glasgow I teach AF2 & CP4 I am a member of the algorithms group the apes (distributed, not disbanded) I am a Glaswegian This is all that I am allowed to tell you (baby) Bio

10 years of conflict-directed backjumping

CI 9(4) Hybrid Algorithms for the Constraint Satisfaction Problem Still using that old greasy stuff? Who cares? So? Patrick Prosser

Plan of the talk Whats a csp? The simplest algorithm (BT) and its behaviour Some improvements (BJ, GBJ) A better way (CBJ) Improvements to CBJ Strange things about CBJ k-inconsistencies the bridge and the long jump value ordering and insolubility So, what about CBJ? some say its good some say its a waste of time whos using it whos not using Wheres it going QBF?

Whats a csp? a set of variables each with a domain of values a collection of constraints (Im going to assume binary) assign each variable a value from its domain to satisfy the constraint

Example of a csp C E D B F A G H 3 colour me!

Example of a csp C E D B F A G H

C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back Why did it do that? That was dumb!

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

Example of a csp C E D B F A G H Va Vb Vc Vd Ve Vf Vg Vh 1 = red 2 = blue 3 = green Variables and Instantiation Order Checking back

That was good old fashioned chronological backtracking instantiate a variable check current against past variables to see if okay current? past? Future? If not okay try another value If no values left go back to previous variable

Example of a csp C E D B F A G H 1 = red 2 = blue 3 = green E1 E2 E3 E4 What would have happened if we had the E* intermediate variables? i.e. it falls back on E4, then E3, towards E?

Its all just depth first search, right?

BT Thrashes! pastpast futurefuture current variable v[i] conflict with v[h] past variable v[h] future variable v[j]

BT Assume that when we instantiate the current variable v[i] we check against all past variables from v[1] to v[i-1] to check if consistent consistent := false for x in domain[i] while not(consistent) // find a consistent value begin consistent := true v[i] := x for h in (1.. i-1) while consistent // check backwards begin consistent := (check(v[i],v[h]) end if not(consistent) then delete(x,domain[i]) end // did we find a good value?

John Gaschnigs BJ Make a small modification to BT. Remember the last variable we check against If the loop terminates with consistent false then jump back to v[h], where h := lastCheck[i] This is then the deepest variable we failed against consistent := false maxCheck[i] := 0 for x in domain[i] while not(consistent) // find a consistent value begin consistent := true v[i] := x for h in (1.. i-1) while consistent // check backwards begin consistent := (check(v[i],v[h]) maxCheck := max(h,maxCheck[i]) end if not(consistent) then delete(x,domain[i]) end // did we find a good value?

John Gaschnigs BJ If the loop terminates with consistent true... lastCheck[i] = i-1 we then step back! consistent := false maxCheck[i] := 0 for x in domain[i] while not(consistent) // find a consistent value begin consistent := true v[i] := x for h in (1.. i-1) while consistent // check backwards begin consistent := (check(v[i],v[h]) maxCheck := max(h,maxCheck[i]) end if not(consistent) then delete(x,domain[i]) end // did we find a good value? BJ jumps then steps back. It can only jump after it has moved forwards!

BJ reduces thrashing maxCheck[i] Jump back to v[4] then step back

Rina Dechters GBJ If there are no values remaining for v[i] Jump back to v[h], where v[h] is the deepest variable connected to v[i] in the constraint graph If there are no values remaining for v[h] Jump back to v[g], where v[g] is the deepest variable connected to v[h] or v[i] in the constraint graph If there are no values remaining for v[g] Jump back to v[f], where v[f] is the deepest variable connected to v[g] or v[h] or v[i] in the constraint graph Graph-based backjumping, exploits topology of constraint graph What happens if constraint graph is a clique?

We want something that can jump and jump again, something that takes into consideration what caused a dead-end, not something that just looks at the topology of the constraint graph Combine BJ and GBJ

CBJ Remember your conflicts, and when you have used them forget them. When we instantiate v[i] := x and check(v[i],v[h]) and it fails v[i] is in conflict with v[h] add h to the set confSet[i] confSet[i] is then the set of past variables that conflict with values in the domain of v[i]

CBJ If there are no values remaining for v[i] Jump back to v[h], where v[h] is the deepest variable in conflict with v[i] The hope: re-instantiate v[h] will allow us to find a good value for v[i] Conflict-directed backjumping, exploits failures within the search process What happens if: constraint graph is dense, tight, or highly consistent? If there are no values remaining for v[h] Jump back to v[g], where v[g] is the deepest variable in conflict with v[i] or v[h] The hope: re-instantiate v[g] will allow us to find a good value for v[i] or a good value for v[h] that will be good for v[i] If there are no values remaining for v[g] Jump back to v[f], where v[f] is the deepest variable in conflict with v[i] or v[h] or v[g] The hope: re-instantiate v[f] will allow us to find a good value for v[i] or a good value for v[h] that will be good for v[i] or a good value for v[g] that will be good for v[h] and v[i]

CBJ consistent := false confSet[i] := {0} for x in domain[i] while not(consistent) // find a consistent value begin consistent := true v[i] := x for h in (1.. i-1) while consistent // check backwards begin consistent := (check(v[i],v[h]) if not(consistent) then confSet[i] := confSet[i] {h} end if not(consistent) then delete(x,domain[i]) end

CBJ When jumping back from v[i] to v[h] update conflict sets confSet[h] := confSet[h] confSet[i] \ {h} confSet[i] := {0} That is, when we jump back from v[h] jump back to a variable that is in conflict with v[h] or with v[i] Throw away everything you new on v[i] Reset all variables from v[h+1] to v[i] (i.e. domain and confSet)

CBJ {4,1,0} {2,0} conflict set

CBJ {2,1,0} conflict set

CBJ (reduce thrashing) {2,1,0} Jump back to deepest past variable in confSet (call it h) and then combine confSet[i] with confSet[h] History: Konkrat and V Beek, Gent and Underwood

Forward Checking NOTE: arrows go forward!

Check Forwards, Jump Back! There are no values in cd[6] compatible with v[9] get more values into cd[9] (undo v[1]?) OR get more values into cd[6] (undo v[4]) … and if that doesnt work? undo v[3] so cd[4] gets value compatible with cd[6] that is then compatible with cd[9]

CBJ Variants BM-CBJ, FC-CBJ, MAC-CBJ

CBJ DkC If we jump from v[i] to v[h] and confSet[i] = {0,h} then remove value(v[h]) from domain(h) value(v[h]) is 2-inconsistent wrt v[i] If we jump from v[h] to v[g] and confSet[h] = {0,g} then remove value(v[g]) from domain(g) value(v[g]) is 3-inconsistent wrt v[i] and v[h] If we jump from v[g] to v[f] and confSet[g] = {0,f} then remove value(v[f]) from domain(f) value(v[f]) is 4-inconsistent wrt v[i] and v[h] and v[g] What happens if the problem is highly consistent? See JAIR , Xinguang Chen & Peter van Beek

CBJ ATMS If we jump from v[i] to v[g] and confSet[h] {0.. g-1} then do NOT reset domain(h) and do NOT reset confSet(h) Consider the past variables as assumptions and confSet[i] as an explanation Down side, we have more work to do. This is a kind of learning (what kind?)

CBJ ~ DB confSet[x,i] gives the past variable in conflict with v[i] := x Finer grained: on jumping back we can deduce better what values to return to domains Down side, we have more work to do. This is an algorithm between CBJ and DB

The bridge and the long jumpFunny things about cbj

Value ordering on insoluble problems can have an effect Problem: V1 to V7, each with domain {A,B} nogoods {(1A,7A),(3A,7B),(5A,7B),(6A,7A),(6A,7B),(6B,7A),(6B,7B)} Var Val confSet V1 A V2 A V3 A V4 A V5 A V6 A V7 A/B {1,3} Var Val confSet V1 A V2 A V3 B V4 A V5 A V6 A V7 A/B {1,5} Var Val confSet V1 A V2 A V3 B V4 A V5 B V6 A V7 A/B {6} Var Val confSet V1 A V2 A V3 B V4 A V5 B V6 B V7 A/B {6} Finally V6 has no values and cbj jumps to V0

Funny things about cbjValue ordering on insoluble problems can have an effect Problem: V1 to V7, each with domain {A,B} nogoods {(1A,7A),(3A,7B),(5A,7B),(6A,7A),(6A,7B),(6B,7A),(6B,7B)} Var Val confSet V1 B V2 B V3 B V4 B V5 B V6 B V7 A/B {6} Var Val confSet V1 B V2 B V3 B V4 B V5 B V6 A V7 A/B {6} Finally V6 has no values and cbj jumps to V0 We now order domains and choose B then A! Value ordering made a difference to an insoluble problem!

Conflicting claims Bessier & Regin CP96: CBJ is nothing but an overhead random problems as evidence Smith & Grant IJCAI95: CBJ helps minimise occurrence of EHPs random problems as evidence Chen & van Beek JAIR 2001: CBJ is a tiny overhead When it makes a difference it is a HUGE difference random & real problems as evidence

New CBJ I believe all state of the art sat solvers are using cbj (or have rediscovered cbj but dont know it) CBJ for QSAT: see recent AIJ conflict and solution directed!

Who is not using cbj? Constraint programming! We dont jump and we dont learn

Is speed everything? No How about explanations and retraction?

Why is cbj not in CP? Need to propagate laterally (see MAC-CBJ tech report) but this is no big deal Need to get explanations out of constraints! Not just writing a good constraint propagator but a good constraint explainer! Maybe there is not yet the demand for retraction and explanation (but I dont believe that)

So? Paper rejected from IJCAI91 (written in 1990) I was a Lisp programmer at the time (it shows) I think the experiments were very good (so there!) Nice study of influence of topological parameter on search cost. In conclusion I forgot to say CBJ was new … why? I like BMJ, it is cool (I was smart for 1 day) I think CBJ is pretty (natural, discovered, not invented) I like FC-CBJ (I can understand it) I identify work to be done (researchers love that (why?)) … and I make errors re-dvos (researchers love that (why?)) I put my results in perspective (trash them :) I got encouragement (Nadel) and help (Ole and Peter) I got a whole load of background (Rina) But it hurt … why did it take 3 years to get somebody to read it? It is still alive! We are not done yet.