i am patrick prosser i am a senior lecturer at glasgow i teach af2 & cp4 i am a member of the...
TRANSCRIPT
![Page 1: 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](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/1.jpg)
![Page 2: 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](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/2.jpg)
• 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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/3.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/4.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/5.jpg)
![Page 6: 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](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/6.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/7.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/8.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/9.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/10.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/11.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/12.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/13.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/14.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/15.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/16.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/17.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/18.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/19.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/20.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/21.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/22.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/23.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/24.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/25.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/26.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/27.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/28.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/29.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/30.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/31.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/32.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/33.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/34.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/35.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/36.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/37.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/38.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/39.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/40.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/41.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/42.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/43.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/44.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/45.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/46.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/47.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/48.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/49.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/50.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/51.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/52.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/53.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/54.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/55.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/56.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/57.jpg)
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 algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/58.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/59.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/60.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/61.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/62.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/63.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/64.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/65.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/66.jpg)
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 the algorithms group the apes (distributed, not disbanded) I](https://reader035.vdocument.in/reader035/viewer/2022062619/5515c92b55034689058b4931/html5/thumbnails/67.jpg)