Look Back Search Cedric Geissmann University Basel October 31, - - PowerPoint PPT Presentation

look back search
SMART_READER_LITE
LIVE PREVIEW

Look Back Search Cedric Geissmann University Basel October 31, - - PowerPoint PPT Presentation

Look Back Search Cedric Geissmann University Basel October 31, 2014 Outline Backtracking 1 Backjumping 2 Gaschnigs Backjumping Graph-Based Backjumping Conflict-Directed Backjumping Learning 3 Graph-Based Learning Conflict-Directed


slide-1
SLIDE 1

Look Back Search

Cedric Geissmann

University Basel

October 31, 2014

slide-2
SLIDE 2

Outline

1

Backtracking

2

Backjumping Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

3

Learning Graph-Based Learning Conflict-Directed Learning

slide-3
SLIDE 3

Backtracking Backjumping Learning

Backtracking

Backtracking is a basic algorithm used to solve a CSP Backtracking has to explore every node in a search tree Search space can be reduced by Look-ahead

Cedric Geissmann Look Back Search

slide-4
SLIDE 4

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-5
SLIDE 5

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-6
SLIDE 6

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-7
SLIDE 7

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-8
SLIDE 8

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-9
SLIDE 9

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-10
SLIDE 10

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-11
SLIDE 11

Backtracking Backjumping Learning

Motivation Example

Cedric Geissmann Look Back Search

slide-12
SLIDE 12

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping

Cedric Geissmann Look Back Search

slide-13
SLIDE 13

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Dead-End

Definition (Dead-End) A dead-end state at level i indicates that a current partial instantiation ai = (a1, . . . , ai) conflicts with every possible value of xi+1. (a1, . . . , ai) is called a dead-end state, and xi+1 is called a dead-end variable.

Cedric Geissmann Look Back Search

slide-14
SLIDE 14

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Dead-End Example

Cedric Geissmann Look Back Search

slide-15
SLIDE 15

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Dead-End Example

Cedric Geissmann Look Back Search

slide-16
SLIDE 16

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Leaf Dead-End

Definition (Leaf Dead-End) Let ai = (a1, . . . , ai) be a consistent tuple. If ai is in conflict with xi+1, it is called a leaf dead-end and xi+1 is a leaf dead-end variable.

Cedric Geissmann Look Back Search

slide-17
SLIDE 17

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Culprit Variable

Definition (Culprit Variable) Let ai = (a1, . . . , ai) be a leaf dead-end. The culprit index relative to ai is defined by b = min{j ≤ i | aj conflicts with xi+1}. We define the culprit variable of ai to be xb.

Cedric Geissmann Look Back Search

slide-18
SLIDE 18

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Culprit Variable Example

Cedric Geissmann Look Back Search

slide-19
SLIDE 19

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Culprit Variable Example

Cedric Geissmann Look Back Search

slide-20
SLIDE 20

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

No-Good

Definition (No-Good) Given a network R = (X, D, C) Any partial instantiation ¯ a that does not appear in any solution of R is called a no-good. Minimal no-goods have no no-good subtuples.

Cedric Geissmann Look Back Search

slide-21
SLIDE 21

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Safe Jump

Definition (Safe Jump) Let ai = (a1, . . . , ai) be a leaf dead-end. xj is save when j ≤ i and

  • aj = (ai, . . . , aj) is a no-good

Cedric Geissmann Look Back Search

slide-22
SLIDE 22

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Safe Jump Example

Cedric Geissmann Look Back Search

slide-23
SLIDE 23

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

Gaschnig’s Backjumping Algorithm

Cedric Geissmann Look Back Search

slide-24
SLIDE 24

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-25
SLIDE 25

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-26
SLIDE 26

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-27
SLIDE 27

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-28
SLIDE 28

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-29
SLIDE 29

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-30
SLIDE 30

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D′

i ← Di; latesti ← 0;

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE-GBJ; if xi is null then i ← latesti; else i ← i + 1; D′

i ← Di; latesti ← 0;

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-31
SLIDE 31

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

SELECT-VALUE-GBJ

Cedric Geissmann Look Back Search

slide-32
SLIDE 32

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true; k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-33
SLIDE 33

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true; k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-34
SLIDE 34

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true; k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-35
SLIDE 35

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-36
SLIDE 36

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-37
SLIDE 37

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false; else k ← k + 1; end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-38
SLIDE 38

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false; else k ← k + 1; end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-39
SLIDE 39

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false; else k ← k + 1; end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-40
SLIDE 40

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE-GBJ

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

consistent ← true;k ← 1; while k < i and consistent do if k > latesti then latesti ← k ; if not consistent( ak, xi = a) then consistent ← false; else k ← k + 1; end end if consistent then return a ; end return null

Cedric Geissmann Look Back Search

slide-41
SLIDE 41

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Gaschnig’s Backjumping

Jumps back to its culprit variable at leaf dead-ends. Only performs safe jumps. Performs a maximal jump but only in leaf dead-ends. Uses simple backtracking on internal dead-ends.

Cedric Geissmann Look Back Search

slide-42
SLIDE 42

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping

Cedric Geissmann Look Back Search

slide-43
SLIDE 43

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Ancestor, Parent

Definition (Ancestor, Parent) Ancestor set of a variable x all variables that precede x and are connected to x The parent of a variable x is the most recent variable in the ancestor set of x

Cedric Geissmann Look Back Search

slide-44
SLIDE 44

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Ancestor Example

Cedric Geissmann Look Back Search

slide-45
SLIDE 45

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Invistit, Session

Definition (Invisit, Session) Invisit of xi Processing a variable coming from an earlier variable. Session of xi starts on invisit of xi ends when at least as high as xi holds all variables processed since invisit of xi xi is included in its session See example on whiteboard.

Cedric Geissmann Look Back Search

slide-46
SLIDE 46

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Relevant Dead-Ends

Definition (Relevant Dead-Ends) The relevant dead-ends of xi’s session are just xi if xi is a leaf dead-end. the union of its current relevant dead-ends and the ones encountered in the session. See example on whiteboard.

Cedric Geissmann Look Back Search

slide-47
SLIDE 47

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit

Definition (Induced Ancestors, Graph-Based Culprit) The induced ancestor set of xi is the union of all ancestors for every relevant dead-end in xi’s session. The graph-based culprit is the induced parent of xi

  • r the latest variable in xi’s induced ancestor set.

Cedric Geissmann Look Back Search

slide-48
SLIDE 48

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

Cedric Geissmann Look Back Search

slide-49
SLIDE 49

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example I4({x4})

Cedric Geissmann Look Back Search

slide-50
SLIDE 50

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example I4({x4}) = {x1, x2}

Cedric Geissmann Look Back Search

slide-51
SLIDE 51

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example I4({x4}) = {x1, x2} I4({x4, x6})

Cedric Geissmann Look Back Search

slide-52
SLIDE 52

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example I4({x4}) = {x1, x2} I4({x4, x6}) = {x1, x2, x3}

Cedric Geissmann Look Back Search

slide-53
SLIDE 53

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

Graph-Based Backjumping Algorithm

Cedric Geissmann Look Back Search

slide-54
SLIDE 54

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-55
SLIDE 55

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-56
SLIDE 56

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-57
SLIDE 57

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-58
SLIDE 58

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-59
SLIDE 59

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-60
SLIDE 60

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-61
SLIDE 61

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi) for each xi; i ← 1; D′

i ← Di; Ii ← anc(xi);

while 1 ≤ i ≤ n do instantiate xi ← SELECT-VALUE; if xi is null then iprev ← i; i ← latest index in Ii; Ii ← Ii ∪ Iiprev − {xi}; else i ← i + 1; D′

i ← Di; Ii ← anc(xi);

end end if i = 0 then return ”inconsistent” else return instantiated values of {x1, . . . , xn} end

Cedric Geissmann Look Back Search

slide-62
SLIDE 62

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE

SELECT-VALUE

Cedric Geissmann Look Back Search

slide-63
SLIDE 63

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

if consistent( ai−1, xi = a) then return a end end return null

Cedric Geissmann Look Back Search

slide-64
SLIDE 64

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

if consistent( ai−1, xi = a) then return a end end return null

Cedric Geissmann Look Back Search

slide-65
SLIDE 65

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

if consistent( ai−1, xi = a) then return a end end return null

Cedric Geissmann Look Back Search

slide-66
SLIDE 66

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

SELECT-VALUE

while D′

i is not empty do

select an arbitrary element a ∈ D′

i, and remove a from D′ i;

if consistent( ai−1, xi = a) then return a end end return null

Cedric Geissmann Look Back Search

slide-67
SLIDE 67

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Graph-Based Backjumping

Can also jump on internal dead-ends. Only relies on information from the constraint graph.

Cedric Geissmann Look Back Search

slide-68
SLIDE 68

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Conflict-Directed Backjumping

Cedric Geissmann Look Back Search

slide-69
SLIDE 69

Backtracking Backjumping Learning Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping

Conflict-Directed Backjumping

Combines the ideas of Gaschnig’s and Graph-Based Backjumping. When detecting a dead-end xi+1, jump back to the latest variable in its jumpback set.

Cedric Geissmann Look Back Search

slide-70
SLIDE 70

Backtracking Backjumping Learning Graph-Based Learning Conflict-Directed Learning

Learning

Cedric Geissmann Look Back Search

slide-71
SLIDE 71

Backtracking Backjumping Learning Graph-Based Learning Conflict-Directed Learning

Learning

Learn from dead-ends to exclude further occur of the same dead-ends. Add no-goods to the constraints. Better than backjumping, leads to a smaller tree.

Cedric Geissmann Look Back Search

slide-72
SLIDE 72

Backtracking Backjumping Learning Graph-Based Learning Conflict-Directed Learning

Graph-Based Learning

Uses graph information collected during the search Learn the no-good from a dead-end, that the previous conflicting variables may not be instantiated like this. Small overhead, information does not need to be computed. Disadvantage: No-goods can be very long and appear late in the search tree.

Cedric Geissmann Look Back Search

slide-73
SLIDE 73

Backtracking Backjumping Learning Graph-Based Learning Conflict-Directed Learning

Conflict-Directed Learning

Uses information gathered during the search. Learn the no-good from a dead-end, that the previous conflicting variables may not be instantiated like this. Small overhead, information are already computed. Better than Graph-Based Learning, no-goods occur earlier in the search.

Cedric Geissmann Look Back Search

slide-74
SLIDE 74

Questions?