Look Back Search - ai.dmi.unibas.ch · Backtracking is a basic algorithm used to solve a CSP...

74
Look Back Search Cedric Geissmann University Basel October 31, 2014

Transcript of Look Back Search - ai.dmi.unibas.ch · Backtracking is a basic algorithm used to solve a CSP...

Page 1: Look Back Search - ai.dmi.unibas.ch · 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 Back Search

Cedric Geissmann

University Basel

October 31, 2014

Page 2: Look Back Search - ai.dmi.unibas.ch · 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

Outline

1 Backtracking

2 BackjumpingGaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

3 LearningGraph-Based LearningConflict-Directed Learning

Page 3: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

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

Page 4: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 5: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 6: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 7: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 8: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 9: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 10: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 11: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Motivation Example

Cedric Geissmann Look Back Search

Page 12: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Gaschnig’s Backjumping

Cedric Geissmann Look Back Search

Page 13: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Dead-End

Definition (Dead-End)

A dead-end state at level i indicates that a current partialinstantiation ~ai = (a1, . . . , ai ) conflicts with every possiblevalue of xi+1.

(a1, . . . , ai ) is called a dead-end state, and xi+1 is called adead-end variable.

Cedric Geissmann Look Back Search

Page 14: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Dead-End Example

Cedric Geissmann Look Back Search

Page 15: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Dead-End Example

Cedric Geissmann Look Back Search

Page 16: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Leaf Dead-End

Definition (Leaf Dead-End)

Let ~ai = (a1, . . . , ai ) be a consistent tuple. If ~ai is in conflict withxi+1, it is called a leaf dead-end and xi+1 is a leaf dead-endvariable.

Cedric Geissmann Look Back Search

Page 17: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Culprit Variable

Definition (Culprit Variable)

Let ~ai = (a1, . . . , ai ) be a leaf dead-end.

The culprit index relative to ~ai is defined byb = min{j ≤ i | ~aj conflicts with xi+1}.We define the culprit variable of ~ai to be xb.

Cedric Geissmann Look Back Search

Page 18: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Culprit Variable Example

Cedric Geissmann Look Back Search

Page 19: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Culprit Variable Example

Cedric Geissmann Look Back Search

Page 20: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

No-Good

Definition (No-Good)

Given a network R = (X ,D,C )

Any partial instantiation a that does not appear in anysolution of R is called a no-good.

Minimal no-goods have no no-good subtuples.

Cedric Geissmann Look Back Search

Page 21: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

Page 22: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Safe Jump Example

Cedric Geissmann Look Back Search

Page 23: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

Gaschnig’s Backjumping Algorithm

Cedric Geissmann Look Back Search

Page 24: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Gaschnig’s Backjumping Algorithm

i ← 1; D ′i ← Di ; latesti ← 0;

while 1 ≤ i ≤ n doinstantiate xi ← SELECT-VALUE-GBJ;if xi is null then

i ← latesti ;else

i ← i + 1; D ′i ← Di ; latesti ← 0;end

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 25: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 26: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 theni ← latesti ;

elsei ← i + 1; D ′i ← Di ; latesti ← 0;

end

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 27: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 ;

elsei ← i + 1; D ′i ← Di ; latesti ← 0;

end

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 28: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 29: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 30: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 31: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

SELECT-VALUE-GBJ

Cedric Geissmann Look Back Search

Page 32: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 ← falseelse

k ← k + 1end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 33: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 ← falseelse

k ← k + 1end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 34: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect an arbitrary element a ∈ D ′i , and remove a from D ′i ;

consistent ← true; k ← 1;

while k < i and consistent doif k > latesti then latesti ← k ;if not consistent(~ak , xi = a) then

consistent ← falseelse

k ← k + 1end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 35: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect an arbitrary element a ∈ D ′i , and remove a from D ′i ;consistent ← true;k ← 1;

while k < i and consistent doif k > latesti then latesti ← k ;if not consistent(~ak , xi = a) then

consistent ← falseelse

k ← k + 1end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 36: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect 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) thenconsistent ← false

elsek ← k + 1

end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 37: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect 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;

elsek ← k + 1;

end

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 38: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect 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

endif consistent then return a ;

endreturn null

Cedric Geissmann Look Back Search

Page 39: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect 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 ;

endreturn null

Cedric Geissmann Look Back Search

Page 40: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE-GBJ

while D ′i is not empty doselect 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

endif consistent then return a ;

end

return null

Cedric Geissmann Look Back Search

Page 41: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

Page 42: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Graph-Based Backjumping

Cedric Geissmann Look Back Search

Page 43: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

Page 44: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Ancestor Example

Cedric Geissmann Look Back Search

Page 45: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

Page 46: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 onesencountered in the session.

See example on whiteboard.

Cedric Geissmann Look Back Search

Page 47: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 ’ssession.

The graph-based culprit

is the induced parent of xi

or the latest variable in xi ’s induced ancestor set.

Cedric Geissmann Look Back Search

Page 48: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

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

Cedric Geissmann Look Back Search

Page 49: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

I4({x4})

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

Cedric Geissmann Look Back Search

Page 50: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

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

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

Cedric Geissmann Look Back Search

Page 51: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

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

= {x1, x2, x3}

Cedric Geissmann Look Back Search

Page 52: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Induced Ancestors, Graph-Based Culprit Examples

Example

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

Cedric Geissmann Look Back Search

Page 53: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Graph-Based Backjumping Algorithm

Graph-Based Backjumping Algorithm

Cedric Geissmann Look Back Search

Page 54: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 55: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Graph-Based Backjumping Algorithm

compute anc(xi ) for each xi ;

i ← 1; D ′i ← Di ; Ii ← anc(xi );

while 1 ≤ i ≤ n doinstantiate 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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 56: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 57: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 theniprev ← i ; i ← latest index in Ii ; Ii ← Ii ∪ Iiprev − {xi};

elsei ← i + 1; D ′i ← Di ; Ii ← anc(xi );

end

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 58: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 59: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 60: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 61: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

endif i = 0 then

return ”inconsistent”else

return instantiated values of {x1, . . . , xn}end

Cedric Geissmann Look Back Search

Page 62: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE

SELECT-VALUE

Cedric Geissmann Look Back Search

Page 63: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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 aend

endreturn null

Cedric Geissmann Look Back Search

Page 64: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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) thenreturn a

end

endreturn null

Cedric Geissmann Look Back Search

Page 65: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE

while D ′i is not empty doselect an arbitrary element a ∈ D ′i , and remove a from D ′i ;if consistent(~ai−1, xi = a) then

return aend

endreturn null

Cedric Geissmann Look Back Search

Page 66: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

SELECT-VALUE

while D ′i is not empty doselect an arbitrary element a ∈ D ′i , and remove a from D ′i ;if consistent(~ai−1, xi = a) then

return aend

end

return null

Cedric Geissmann Look Back Search

Page 67: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-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

Page 68: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Conflict-Directed Backjumping

Cedric Geissmann Look Back Search

Page 69: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Gaschnig’s BackjumpingGraph-Based BackjumpingConflict-Directed Backjumping

Conflict-Directed Backjumping

Combines the ideas of Gaschnig’s and Graph-BasedBackjumping.

When detecting a dead-end xi+1, jump back to the latestvariable in its jumpback set.

Cedric Geissmann Look Back Search

Page 70: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Graph-Based LearningConflict-Directed Learning

Learning

Cedric Geissmann Look Back Search

Page 71: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Graph-Based LearningConflict-Directed Learning

Learning

Learn from dead-ends to exclude further occur of the samedead-ends.

Add no-goods to the constraints.

Better than backjumping, leads to a smaller tree.

Cedric Geissmann Look Back Search

Page 72: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Graph-Based LearningConflict-Directed Learning

Graph-Based Learning

Uses graph information collected during the search

Learn the no-good from a dead-end, that the previousconflicting 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 inthe search tree.

Cedric Geissmann Look Back Search

Page 73: Look Back Search - ai.dmi.unibas.ch · 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

BacktrackingBackjumping

Learning

Graph-Based LearningConflict-Directed Learning

Conflict-Directed Learning

Uses information gathered during the search.

Learn the no-good from a dead-end, that the previousconflicting variables may not be instantiated like this.

Small overhead, information are already computed.

Better than Graph-Based Learning, no-goods occur earlier inthe search.

Cedric Geissmann Look Back Search

Page 74: Look Back Search - ai.dmi.unibas.ch · 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

Questions?