Look Back Search Cedric Geissmann University Basel October 31, 2014
Outline Backtracking 1 Backjumping 2 Gaschnig’s Backjumping Graph-Based Backjumping Conflict-Directed Backjumping Learning 3 Graph-Based Learning Conflict-Directed Learning
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
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Backjumping Learning Motivation Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Dead-End Definition (Dead-End) A dead-end state at level i indicates that a current partial instantiation � a i = ( a 1 , . . . , a i ) conflicts with every possible value of x i +1 . ( a 1 , . . . , a i ) is called a dead-end state, and x i +1 is called a dead-end variable. Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Dead-End Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Dead-End Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Leaf Dead-End Definition (Leaf Dead-End) a i = ( a 1 , . . . , a i ) be a consistent tuple. If � Let � a i is in conflict with x i +1 , it is called a leaf dead-end and x i +1 is a leaf dead-end variable. Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Culprit Variable Definition (Culprit Variable) Let � a i = ( a 1 , . . . , a i ) be a leaf dead-end. The culprit index relative to � a i is defined by b = min { j ≤ i | � a j conflicts with x i +1 } . We define the culprit variable of � a i to be x b . Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Culprit Variable Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Culprit Variable Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning 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
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Safe Jump Definition (Safe Jump) Let � a i = ( a 1 , . . . , a i ) be a leaf dead-end. x j is save when j ≤ i and � a j = ( a i , . . . , a j ) is a no-good Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Safe Jump Example Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm Gaschnig’s Backjumping Algorithm Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping Gaschnig’s Backjumping Algorithm i ← 1; D ′ i ← D i ; latest i ← 0; while 1 ≤ i ≤ n do instantiate x i ← SELECT-VALUE-GBJ; if x i is null then i ← latest i ; else i ← i + 1; D ′ i ← D i ; latest i ← 0; end end if i = 0 then return ”inconsistent” else return instantiated values of { x 1 , . . . , x n } end Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning Conflict-Directed Backjumping SELECT-VALUE-GBJ SELECT-VALUE-GBJ Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning 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 > latest i then latest i ← k ; if not consistent ( � a k , x i = a ) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null Cedric Geissmann Look Back Search
Backtracking Gaschnig’s Backjumping Backjumping Graph-Based Backjumping Learning 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 > latest i then latest i ← k ; if not consistent ( � a k , x i = a ) then consistent ← false else k ← k + 1 end end if consistent then return a ; end return null Cedric Geissmann Look Back Search
Recommend
More recommend