I am patrick prosser i am a senior lecturer at glasgow i teach af2 cp4 i am a member of
This presentation is the property of its rightful owner.
Sponsored Links
1 / 67

I am Patrick Prosser I am a senior lecturer at Glasgow I teach AF2 & CP4 I am a member of PowerPoint PPT Presentation


  • 46 Views
  • Uploaded on
  • Presentation posted in: General

(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.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

(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


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


Ci 9 4 hybrid algorithms for the constraint satisfaction problem

Patrick Prosser

CI 9(4)Hybrid Algorithms for the Constraint Satisfaction Problem

  • Still using that old greasy stuff?

  • Who cares?

  • So?


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?


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

What’s a csp?

<V,D,C>

  • 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


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

Example of a csp

A

B

E

C

D

H

F

G

3 colour me!


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

Example of a csp

A

B

E

C

D

H

F

G


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

A

B

E

C

D

H

F

G

Example of a csp

Variables and Instantiation Order

Checking back

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

Why did it do that?

That was dumb!

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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

Example of a csp

Variables and Instantiation Order

Checking back

A

B

Va

Vb

Vc

Vd

Ve

Vf

Vg

Vh

E

C

D

H

F

G

1 = red

2 = blue

3 = green


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


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

Example of a csp

What would have happened if we had

the E* intermediate variables?

i.e. it falls back on E4, then E3, towards E?

A

B

E

C

D

E1

H

E2

F

G

E3

1 = red

2 = blue

3 = green

E4


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?


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

BT Thrashes!

past variable v[h]

past

conflict with v[h]

current variable v[i]

future

future variable v[j]


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


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

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?

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


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

John Gaschnig’s BJ

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?

If the loop terminates with consistent true ...

lastCheck[i] = i-1

we then step back!

BJ jumps then steps back. It can only jump after it has moved forwards!


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

BJ reduces thrashing

maxCheck[i]

0

1

2

3

4

1

2

3

4

5

4

6

Jump back to v[4]

then step back


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

Rina Dechter’s GBJ

Graph-based backjumping, exploits topology of constraint graph

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

What happens if constraint graph is a clique?


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 caused

a dead-end, not something that just looks at the

topology of the constraint graph

Combine BJ and GBJ


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 conflict

with values in the domain of v[i]


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

CBJ

Conflict-directed backjumping, exploits failures within the search process

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]

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]

What happens if: constraint graph is dense, tight, or highly consistent?


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

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


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)


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

CBJ

1

2

conflict set

3

4

{2,0}

5

{4,1,0}

6


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

CBJ

1

2

conflict set

3

4

{2,1,0}

5

6


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

{2,1,0}

5

6

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


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

NOTE: arrows go forward!

4

5

6

7

8

9


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

Forward Checking Can Thrash

6

7

8

9


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

  • 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]

3

4

5

6

7

8

9


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


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


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


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


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

Funny things about cbj

The bridge and the long jump


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


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

We now order domains and choose B then A!

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

Value ordering made a difference to an insoluble problem!


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

Conflicting claims

Smith & Grant IJCAI95:

CBJ helps minimise occurrence of EHP’s

random problems as evidence

Bessier & Regin CP96:

CBJ is nothing but an overhead

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


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 AIJ

conflict and solution directed!


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


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?


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)


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.


  • Login