i am patrick prosser i am a senior lecturer at glasgow i teach af2 & cp4 i am a member of

67

Upload: palmer

Post on 05-Feb-2016

30 views

Category:

Documents


0 download

DESCRIPTION

(baby) Bio. 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. 10 years of conflict-directed backjumping. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of
Page 2: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

• 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

Page 3: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

10 years of conflict-directed backjumping

Page 4: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CI 9(4)

Hybrid Algorithms for the

Constraint Satisfaction

Problem• Still using that old greasy stuff?• Who cares?• So?

Patrick Prosser

Page 5: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of
Page 6: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Plan of the talk

• What’s 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 it’s a waste of time• who’s using it• who’s not using

• Where’s it going• QBF?

Page 7: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

What’s a csp?

• a set of variables• each with a domain of values• a collection of constraints (I’m going to assume binary)• assign each variable a value from its domain to satisfy the constraint

<V,D,C>

Page 8: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

3 colour me!

Page 9: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Page 10: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 11: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 12: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 13: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 14: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 15: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 16: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 17: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 18: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 19: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 20: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 21: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 22: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 23: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 24: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 25: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Why did it do that?That was dumb!

Page 26: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 27: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 28: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 29: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 30: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 31: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 32: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 33: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red2 = blue3 = green

Variables and Instantiation OrderChecking back

Page 34: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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

Page 35: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Example of a csp

CE

D

B

F

A

G

H

1 = red2 = blue3 = 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?

Page 36: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

It’s all just depth first search, right?

Page 37: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

BT Thrashes!

past

future

current variable v[i]

conflict with v[h]

past variable v[h]

future variable v[j]

Page 38: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

BT

Assume that when we instantiate the current variablev[i] we check against all past variables from v[1] to v[i-1]to check if consistent

consistent := falsefor x in domain[i] while not(consistent) // find a consistent valuebegin 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?

Page 39: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

John Gaschnig’s BJ

Make a small modification to BT. Remember the last variable we check against

If the loop terminates with consistent falsethen jump back to v[h], where h := lastCheck[i]This is then the deepest variable we failed against

consistent := falsemaxCheck[i] := 0for x in domain[i] while not(consistent) // find a consistent valuebegin 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?

Page 40: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

John Gaschnig’s BJ

If the loop terminates with consistent true ...lastCheck[i] = i-1we then step back!

consistent := falsemaxCheck[i] := 0for x in domain[i] while not(consistent) // find a consistent valuebegin 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!

Page 41: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

BJ reduces thrashing

1

2

3

4

5

6

maxCheck[i]

0

1

2

3

4

4

Jump back to v[4]then step back

Page 42: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Rina Dechter’s 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?

Page 43: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

We want something that can jump and jump again,something that takes into consideration what causeda dead-end, not something that just looks at thetopology of the constraint graph

Combine BJ and GBJ

Page 44: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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 conflictwith values in the domain of v[i]

Page 45: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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]

Page 46: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CBJ

consistent := falseconfSet[i] := {0}for x in domain[i] while not(consistent) // find a consistent valuebegin 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

Page 47: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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)

Page 48: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CBJ

1

2

3

4

5

6 {4,1,0}

{2,0}

conflict set

Page 49: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CBJ

1

2

3

4

5

6

{2,1,0}

conflict set

Page 50: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CBJ (reduce thrashing)

1

2

3

4

5

6

{2,1,0}

Jump back to deepest past variablein confSet (call it h) and then combine confSet[i] with confSet[h]

•History: •Konkrat and V Beek,•Gent and Underwood

Page 51: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Forward Checking

1

2

3

4

5

6

7

9

8

NOTE: arrows go forward!

Page 52: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

1

2

3

4

5

6

7

9

8

Page 53: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Check Forwards, Jump Back!

1

2

3

4

5

6

7

9

8

•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 doesn’t work? undo v[3] so cd[4] gets value compatible with cd[6] that is then compatible with cd[9]

Page 54: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

CBJ Variants

BM-CBJ, FC-CBJ, MAC-CBJ

Page 55: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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 14 2001, Xinguang Chen & Peter van Beek

Page 56: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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

Page 57: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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

Page 58: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

The bridge and the long jumpFunny things about cbj

Page 59: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Funny 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 confSetV1 AV2 AV3 AV4 AV5 AV6 AV7 A/B {1,3}

Var Val confSetV1 AV2 AV3 BV4 AV5 AV6 AV7 A/B {1,5}

Var Val confSetV1 AV2 AV3 BV4 AV5 BV6 AV7 A/B {6}

Var Val confSetV1 AV2 AV3 BV4 AV5 BV6 BV7 A/B {6}

Finally V6 has no values and cbj jumps to V0

Page 60: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Funny 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 confSetV1 BV2 BV3 BV4 BV5 BV6 BV7 A/B {6}

Var Val confSetV1 BV2 BV3 BV4 BV5 BV6 AV7 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!

Page 61: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Conflicting claims

Bessier & Regin CP96: CBJ is nothing but an overhead random problems as evidence

Smith & Grant IJCAI95: CBJ helps minimise occurrence of EHP’s 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

Page 62: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

New CBJ

I believe all state of the art sat solvers are using cbj(or have rediscovered cbj but don’t know it)

CBJ for QSAT: see recent AIJconflict and solution directed!

Page 63: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Who is not using cbj?

Constraint programming!

We don’t jump and we don’t learn

Page 64: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

Is speed everything?

No

How about explanations and retraction?

Page 65: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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 don’t believe that)

Page 66: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of

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-dvo’s (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.

Page 67: I am Patrick Prosser  I am a senior lecturer at  Glasgow   I teach AF2 & CP4  I am a member of