cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ)...

127
CSPs Algorithms

Transcript of cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ)...

Page 1: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

CSPs Algorithms

Page 2: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Variables: V1, V2, …., V10

Domains: D1 – D10 = {1,2,3}

Constraints: V1 = V4 V4 > V7 V7 = V10 + 1

A possible solution is [3,1,1,3,1,1,2,1,1,1]

Page 3: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

BT (Back Tracking)

BJ (Back Jumping)

FC (Forward Checking), FC+MRV (FC + Minimum-Remaining Values)

CBJ (Conflict-based Back Jumping)

Page 4: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 5: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 6: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 7: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 8: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 9: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 10: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 11: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 12: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 13: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 3

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 14: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 2

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 15: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 2

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 16: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 2

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 17: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 2

V7 = 3

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 18: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 3

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 19: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 3

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 20: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 3

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 21: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 3

V7 = 3

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 22: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 3

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 23: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 2

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 24: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 2

V6 = 1

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 25: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 2

V6 = 1

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 26: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

After some steps, we are back in V4…

Page 27: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 28: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 3

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

Page 29: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments?

Page 30: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Too many!

Why?

Page 31: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Too many!

Why? BT suffers from thrashing!

Page 32: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Too many!

Why? BT suffers from thrashing! Node inconsistency

(There are values in domains, which don’t satisfy the unary constraints)

Page 33: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Too many!

Why? BT suffers from thrashing! Node inconsistency

(There are values in domains, which don’t satisfy the unary constraints) Arc inconsistency

(Variables served V1,V2,…V10, so maybe there is such a Vi = c, which is inconsistent with any value of Vj (j>i) e.g. V4 = 1 → V7 ≠ 1,2,3 )

Page 34: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Too many!

Why? BT suffers from thrashing! Node inconsistency

(There are values in domains, which don’t satisfy the unary constraints) Arc inconsistency

(Variables served V1,V2,…V10, so maybe there is such a Vi = a, which is inconsistent with any value of Vj (j>i) e.g. V4 = 1 → V7 ≠ 1,2,3 )

Path inconsistency(Variables served V1,V2,…V10, so maybe there is such a Vi = a, which is consistent with Vj = b, but maybe there is no value of Vk, which would be consistent with Vi = a && Vj = b(k>j>i) e.g. V4 = 2 && V7 = 1 → V10 ≠ 1,2,3 )

Page 35: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 36: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 37: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 38: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 39: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 40: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 41: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 42: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 43: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 = 1

V6 = 1

V7 = 3

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { V4}

CS8 = { }

CS9 = { }

CS10 = { }

! Use CS7 and back-jump to V4

Page 44: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 45: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 3

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

! Use CS4 and back-jump to V1

Page 46: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 47: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 48: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 49: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 50: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 51: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 52: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 53: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 54: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 = 1

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 55: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 = 1

V9 = 1

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 56: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 = 1

V9 = 1

V10 = 1

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { V7}

Page 57: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 = 1

V9 = 1

V10 = 2

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { V7}

Page 58: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 = 1

V9 = 1

V10 = 3

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { V7} ! Use CS10 and back-jump to V7

Page 59: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 60: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 3

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = {V4}

CS8 = { }

CS9 = { }

CS10 = { }

Page 61: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 3

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V1}

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 62: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CS7 = { }

CS8 = { }

CS9 = { }

CS10 = { }

Page 63: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments?

Page 64: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Many! Less than BT…

Why?

Backjumping (BJ) is different from BT in the following:

When BJ reaches a dead-end it does not backtrack to the immediately precedingvariables. It backtracks to the deepest variable in the search tree which is in conflictwith the current variable.

Page 65: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 =

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1,2,3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 66: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 67: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 68: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 69: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V3

Page 70: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 2

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 71: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 2

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V3

Page 72: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 3

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 73: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 3

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V2

Page 74: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 75: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V2

Page 76: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 3

V3 = 3

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V1

Page 77: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 78: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 79: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 80: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 81: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 82: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 83: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 1

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {} ! D10 is empty and backtrack to V6

Page 84: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 2

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 85: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 = 2

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

DOMAINS

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {} ! D10 is empty and backtrack to V6

Page 86: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments?

Page 87: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Still many! Less than BT and BJ…

Why?

Page 88: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Still many! Less than BT and BJ…

Why? When BJ back jump, all values of the domain conflict with the assignment…but FC would

have already recognize the inconsistency in the first place! Still we don’t have full arc consistency!

Page 89: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 =

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1,2,3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

Page 90: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

D4 is the smaller domain

Page 91: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 = 1

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {1}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

! D7 is empty and backtrack to V1

Page 92: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

D4 is the smaller domain

Page 93: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 =

V3 =

V4 = 2

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

D7 is the smaller domain

Page 94: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 2

V2 =

V3 =

V4 = 2

V5 =

V6 =

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {2}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {} ! D10 is empty and backtrack to V1

Page 95: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 =

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2,3}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

D4 is the smaller domain

Page 96: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 = 3

V5 =

V6 =

V7 =

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1,2,3}

D7 is the smaller domain

Page 97: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 = 3

V5 =

V6 =

V7 = 1

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {} ! D10 is empty and backtrack to V7

Page 98: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 = 3

V5 =

V6 =

V7 = 2

V8 =

V9 =

V10 =

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1} D10 is the smaller domain

Page 99: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 =

V3 =

V4 = 3

V5 =

V6 =

V7 = 2

V8 =

V9 =

V10 = 1

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1}

Page 100: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 3

V2 = 1

V3 = 1

V4 = 3

V5 = 1

V6 = 1

V7 = 2

V8 = 1

V9 = 1

V10 = 1

CONSTRAINTS

V1 = V4

V4 > V7

V7 = V10 + 1

CONSTRAINT

D1 = {1,2,3}

D2 = {1,2,3}

D3 = {1,2,3}

D4 = {3}

D5 = {1,2,3}

D6 = {1,2,3}

D7 = {1,2}

D8 = {1,2,3}

D9 = {1,2,3}

D10 = {1}

After 6 more steps, we have a solution!

Page 101: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Variables: V1,V2,….,V6

Domains: D1-D6 = {1,2,3,4,5}

Constraints: (V2=1,V4=2) (V2=4,V4=5) (V1=1,V5=3) (V4=5,V6=3) (V1=1,V6=6)

Page 102: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 =

V3 =

V4 =

V5 =

V6 =

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

Page 103: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 =

V4 =

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 104: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 =

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 105: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 1

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = { V2}

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 106: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 107: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 1

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 108: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 2

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 109: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 110: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 = 1

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 111: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 = 2

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 112: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 = 3

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1,V4}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 113: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 = 4

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1,V4}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 114: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 2

V5 = 3

V6 = 5

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1,V4}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

! Use CS6 and back-jump to V4,which is the most recent

Page 115: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 3

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V1,V2}

CS5 = { }

CS6 = { }CS4 = CS4 U CS6 – V4 →CS4 = {V2} U {V1,V4} –V4

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 116: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 4

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V1,V2}

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 117: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 1

V3 = 1

V4 = 5

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = { }

CS3 = { }

CS4 = {V1,V2}

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

! Use CS4 and back-jump to V2,which is the most recent

Page 118: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 =

V4 =

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 119: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 =

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = { }

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 120: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 =

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = {V2}

CS5 = { }

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 121: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 = 1

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=6)

Page 122: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 = 2

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 123: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 = 3

V6 =

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = { }

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 124: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

VARIABLES

V1 = 1

V2 = 2

V3 = 1

V4 = 1

V5 = 3

V6 = 1

CONFLICTS SETS

CS1 = { }

CS2 = {V1}

CS3 = { }

CS4 = {V2}

CS5 = {V1}

CS6 = {V1}

CONSTRAINTS

(V2=1,V4=2)

(V2=4,V4=5)

(V1=1,V5=3)

(V4=5,V6=3)

(V1=1,V6=3)

Page 125: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments?

Page 126: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Still many! Less than BT and BJ…

Why?

Page 127: cgi.di.uoa.grcgi.di.uoa.gr/~ys02/frontistiria2014/CSPs_TUTORIAL_VOL2.pdf · Why? Backjumping (BJ) is different from BT in the following: When BJ reaches a dead-end it does not backtrack

Unnecessary assignments? Still many! Less than BT and BJ…

Why? CBJ back-jumps to the right node of the search tree, but it doesn’t prevent to repeat the

same wrong assignments!