Intelligent Backtracking Algorithms Foundations of Constraint Processing CSCE
Intelligent Backtracking Algorithms Foundations of Constraint Processing CSCE 421/821, Fall 2005: www. cse. unl. edu/~choueiry/F 05 -421 -821/ Berthe Y. Choueiry (Shu-we-ri) Avery Hall, Room 123 B choueiry@cse. unl. edu Tel: +1(402)472 -5444 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Reading • Required reading Hybrid Algorithms for the Constraint Satisfaction Problem [Prosser, CI 93] • Recommended reading – Chapters 5 and 6 of Dechter’s book – Tsang, Chapter 5 • Notes available upon demand – Notes of Fahiem Bacchus: Chapter 2, Section 2. 4 – Handout 4 and 5 of Pandu Nayak (Stanford) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Outline • • Review of terminology of search Hybrid backtracking algorithms Looking ahead Evaluation of (deterministic) BT search algorithms Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Backtrack search (BT) • Variable/value ordering • Variable instantiation • (Current) path • Current variable • Past variables • Future variables • Shallow/deep levels /nodes • Search space / search tree • Back-checking • Backtracking Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Outline • Review of terminology of search • Hybrid backtracking algorithms – Vanilla: BT – Improving back steps: {BJ, CBJ} – Improving forward step: {BM, FC} • Looking ahead • Evaluation of (deterministic) BT search algorithms Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Two main mechanisms in BT 1. Backtracking: • To recover from dead-ends • To go back 2. Consistency checking: • To expand consistent paths • To move forward Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Backtracking To recover from dead-ends 1. Chronological (BT) 2. Intelligent • • Backjumping (BJ) Conflict directed backjumping (CBJ) With learning algorithms (Dechter Chapt 6. 4) Etc. Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Consistency checking To expand consistent paths 1. Back-checking: against past variables • Backmarking (BM) 2. Look-ahead: against future variables • • • Forward checking (FC) (partial look-ahead) Directional Arc-Consistency (DAC) (partial look-ahead) Maintaining Arc-Consistency (MAC) (full look -ahead) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Hybrid algorithms Backtracking + checking = new hybrids BT BJ CBJ BM BMJ BM-CBJ FC FC-BJ FC-CBJ Evaluation: • Empirical: Prosser 93. 450 instances of Zebra • Theoretical: Kondrak & Van Beek 95 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Notations (in Prosser’s paper) • • Variables: Vi, i in [1, n] Domain: Di = {vi 1, vi 2, …, vi. Mi} Constraint between Vi and Vj: Ci, j Constraint graph: G Arcs of G: Arc(G) Instantiation order (static or dynamic) Language primitives: list, pushnew, remove, set-difference, union, max-list Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Main data structures • v: a (1 xn) array to store assignments – v[i] gives the value assigned to ith variable – v[0]: pseudo variable (root of tree), backtracking to v[0] indicates insolvability • domain[i]: a (1 xn) array to store the original domains of variables • current-domain[i]: a (1 xn) array to store the current domains of variables – Upon backtracking, current-domain[i] of future variables must be refreshed • check(i, j): a function that checks whether the values assigned to v[i] and v[j] are consistent Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Generic search: bcssp 1. 2. 3. 4. 5. 6. Procedure bcssp (n, status) • Forward move: x-label Begin consistent true • Backward move: x-unlabel status unknown • Parameters: current variable, Boolean i 1 While status = unknown • Return: new current variable 7. Do Begin 8. If consistent 9. Then i label (i, consistent) 10. Else i unlabel (i, consistent) 11. If i > n 12. Then status “solution” 13. Else If i=0 then status “impossible” 14. End 15. End Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Chronological backtracking (BT) • Uses bt-label and bt-unlabel • When v[i] is assigned a value from current-domain[i], we perform back-checking against past variables (check(i, k)) • If back-checking succeeds, bt-label returns i+1 • If back-checking fails, we remove the assigned value from current-domain[i], assign the next value in currentdomain[i], etc. • If no other value exists, v[i-1] is un-instantiated and we seek a new value for it… (notation: in general v[h]) • For all future variables j: current-domain[j] = domain[j] • For all past variables g: current-domain[g] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
BT-label 1. 2. 3. 4. Function bt-label(i, consistent): INTEGER BEGIN consistent false For v[i] each element of current-domain[i] while not consistent 5. Do Begin Terminates: 6. consistent true • consistent=true, return i+1 7. For h 1 to (i-1) While consistent • consistent=false, current 8. Do consistent check(i, h) domain[i]=nil, returns i 9. If not consistent 10. Then current-domain[i] remove(v[i], current-domain[i]) 11. End 12. If consistent then return(i+1) ELSE return(i) 13. END Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
BT-unlabel 1. 2. FUNCTION bt-unlabel(i, consistent): INTEGER BEGIN 3. h i -1 4. current-domain[i] 5. current-domain[h] remove(v[h], current-domain[h]) 6. consistent current-domain[h] nil 7. return(h) • Is called when consistent=false and current-domain[i]=nil 8. END • Selects vh to backtrack to • Uninstantiates all variables between vh and vi • Removes v[h] from current-domain [h] • Sets consistent to true if current-domain[h] 0 • Returns h Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Example: BT (the dumbest example ever) {1, 2, 3, 4, 5} V 1 V 2 V 3 v[0] - v[1] 1 v[2] 1 v[3] 1 CV 3, V 4={(V 3=1, V 4=3)} {1, 2, 3, 4, 5} V 4 v[4] 1 2 3 4 etc… 4 5 CV 2, V 5={(V 2=5, V 5=1), (V 2=5, V 5=4)} {1, 2, 3, 4, 5} V 5 v[5] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking 1 2 3
Outline • Review of terminology of search • Hybrid backtracking algorithms – Vanilla: BT – Improving back steps: BJ, CBJ – Improving forward step: BM, FC • Looking ahead • Evaluation of (deterministic) BT search algorithms Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Danger of BT: thrashing • BT assumes that the instantiation of v[i] was prevented by a bad choice at (i-1). • It tries to change the assignment of v[i-1] • When this assumption is wrong, we suffer from thrashing (exploring ‘barren’ parts of solution space) • Backjumping (BT) tries to avoid that – Jumps to the reason of failure – Then proceeds as BT Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Backjumping (BJ) • Tries to reduce thrashing by saving some backtracking effort • When v[i] is instantiated, BJ remembers v[h], the deepest node of past variables that v[i] has checked against. • Uses: max-check[i], global, initialized to 0 • At level i, when check(i, h) succeeds 1 2 3 0 1 2 3 h-1 h h-2 i h 0 0 h-1 max-check[i] max(max-check[i], h) • If current-domain[h] is getting empty, simple chronological backtracking is performed from h Past variable Current variable – BJ jumps then steps! Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking 0
BJ: label/unlabel • bj-label: same as bt-label, but updates max-check[i] • bj-unlabel, same as bt-unlabel but – Backtracks to h = max-check[i] – Resets max-check[j] 0 for j in [h+1, i] Important: max-check is the deepest level we checked against, could have been success or could have been failure Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking 1 2 3 0 1 2 3 h-1 h h-2 i h 0 0 h-1 0
Example: BJ v[0] = 0 {1, 2, 3, 4, 5} V 1 V 2 - v[1] 1 v[2] 1 v[3] 1 Max-check[1] = 0 2 Max-check[2] = 1 CV 2, V 5={(V 2=5, V 5=1)} {1, 2, 3, 4, 5} V 3 CV 2, V 4={(V 2=1, V 4=3)} {1, 2, 3, 4, 5} V 4 CV 1, V 5={(V 1=1, V 5=2)} {1, 2, 3, 4, 5} V 5 V 4=1, fails for V 2, mc=2 V 4=2, fails for V 2, mc=2 V 4=3, succeeds max-check[4] = 3 v[4] V 5=1, fails for V 1, mc=1 V 5=2, fails for V 2, mc=2 V 5=3, fails for V 1 V 5=4, fails for V 1 v[5] V 5=5, fails for V 1 max-check[5] = 2 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking 1 1 2 2 3 3 4 4 5
Conflict-directed backjumping (CBJ) • Backjumping – jumps from v[i] to v[h], – but then, it steps back from v[h] to v[h-1] • CBJ improves on BJ – Jumps from v[i] to v[h] – And jumps back again, across conflicts involving both v[i] and v[h] – To maintain completeness, we jump back to the level of deepest conflict Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
CBJ: data structure 0 1 conf-set 2 • Maintains a conflict set: conf-set g • conf-set[i] are first initialized to {0} h-1 • At any point, conf-set[i] is a subset of h past variables that are in conflict with i i conf-set[g] {0} conf-set[h] {0} conf-set[i] {0} {0} Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
CBJ: conflict-set 1 2 3 • When a check(i, h) fails Past variables conf-set[i] {h} • When current-domain[i] empty 1. Jumps to deepest past variable h in conf-set[i] g conf-set[g] {x} {x, 3, 1} h-1 h conf-set[h] {3} {3, 1, g} Current variable i conf-set[i] {1, g, h} 2. Updates conf-set[h] (conf-set[i] {h}) • Primitive form of learning (while searching) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking {0} {0}
Example CBJ V 1 V 2 V 3 v[0] = 0 {1, 2, 3, 4, 5} {(V 2=1, V 4=3), (V 2=4, V 4=5)} V 4 V 5 {1, 2, 3, 4, 5} v[1] 1 conf-set[1] = {0} v[2] 1 conf-set[2] = {0} v[3] 1 conf-set[3] = {0} v[4] 1 2 conf-set[4] = {2} {(V 1=1, V 5=3)} v[5] 1 conf-set[5] = {1} v[6] 1 {(V 4=5, V 6=3)} V 6 {(V 1=1, 2 2 3 conf-set[4] = {1, 2} 3 3 4 5 conf-set[6] = {1} conf-set[6] = {1, 4} V 6=3)} conf-set[6] = {1, 4} Foundations of Constraint Processing, Fall 2005 September 11, 2005 - Backtracking
Backtracking: summary • Chronological backtracking – Steps back to previous level – No extra data structures required • Backjumping – Jumps to deepest checked-against variable, then steps back – Uses array of integers: max-check[i] • Conflict-directed backjumping – Jumps across deepest conflicting variables – Uses array of sets: conf-set[i] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Outline • Review of terminology of search • Hybrid backtracking algorithms – Vanilla: BT – Improving back steps: BJ, CBJ – Improving forward step: BM, FC • Looking ahead • Evaluation of (deterministic) BT search algorithms Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Backmarking: goal • Tries to reduce amount of consistency checking • Situation: – v[i] about to be re-assigned k – v[i] k was checked against v[h] g v[h] = g – v[h] has not been modified v[i] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking k k
BM: motivation • Two situations 1. Either (v[i]=k, v[h]=g) has failed it will fail again 2. Or, (v[i]=k, v[h]=g) was founded consistent it will remain consistent v[h] = g v[i] • k v[h] = g k v[i] k k In either case, back-checking effort against v[h] can be saved! Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Data structures for BM: 2 arrays • • maximum checking level: mcl (n x m) Minimum backup level: mbl (n x 1) 0 0 0 0 Number of variables n max domain size m 0 0 0 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Maximum checking level • • mcl[i, k] stores the deepest variable that v[i] k checked against mcl[i, k] is a finer version of max-check[i] Number of variables n max domain size m 0 0 0 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking 0
Minimum backup level mbl[i] gives the shallowest past variable whose value has changed since v[i] was the current variable • BM (and all its hybrid) do not allow dynamic variable ordering Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking Number of variables n •
When mcl[i, k]=mbl[i]=j BM is aware that • The deepest variable that (v[i] k) checked against is v[j] • Values of variables in the past of v[j] (h<j) have not changed So • We do need to check (v[i] k) against the values of the variables between v[j] and v[i] • We do not need to check (v[i] k) against the values of the variables in the past of v[j] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking v[j] v[i] k mbl[i] = j k
Type a savings When mcl[i, k] < mbl[i], do not check v[i] k because it will fail v[h] v[j] v[i] k mcl[i, k]=h k mcl[i, k] < mbl[i]=j Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Type b savings When mcl[i, k] mbl[i], do not check (i, h<j) because they will succeed h v[j] v[g] v[i] k mcl[i, k]=g k mcl[i, k] mbl[i] = j Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Hybrids of BM • mcl can be used to allow backjumping in BJ • Mixing BJ & BM yields BMJ – avoids redundant consistency checking (types a+b savings) and – reduces the number of nodes visited during search (by jumping) • Mixing BM & CBJ yields BM-CBJ Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Problem of BM and its hybrids: warning BMJ enjoys only some of the advantages of BM Assume: mbl[h] = m and max-check[i]=max(mcl[i, x])=g • Backjumping from v[i]: v[m] – v[i] backjumps up to v[g] v[m] v[f] • Backmarking of v[h]: – When reconsidering v[h], v[h] will be checked against all f in [m, g( – effort could be saved • Phenomenon will worsen with CBJ • Problem fixed by Kondrak & van Beek 95 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking v[g] v[h] v[i] v[h]
Forward checking (FC) • Looking ahead: from current variable, consider all future variables and clear from their domains the values that are not consistent with current partial solution • FC makes more work at every instantiation, but will expand fewer nodes • When FC moves forward, the values in current-domain of future variables are all compatible with past assignment, thus saving backchecking • FC may “wipe out” the domain of a future variable (aka, domain annihilation) and thus discover conflicts early on. FC then backtracks chronologically • Goal of FC is to fail early (avoid expanding fruitless subtrees) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
FC: data structures • When v[i] is instantiated, current-domain[j] are filtered for all j connected to i and i<j<n • reduction[j] store sets of values remove from current -domain[j] by some variable before v[j] reductions[j] = {{a, b}, {c, d, e}, {f, g, h}} • future-fc[i]: subset of the future variables that v[i] checks against (redundant) future-fc[i] = {k, j, n} • past-fc[i]: past variables that checked against v[j] • All these sets are treated like stacks Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking v[i] v[k] v[m] v[j] v[l] v[n]
Forward Checking: functions • • • check-forward undo-reductions update-current-domain fc-label fc-unlabel Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
FC: functions • check-forward(i, j) is called when instantiating v[i] – It performs REVISE(j, i) – Returns false if current-domain[j] is empty, true otherwise – Values removed from current-domain[j] are pushed, as a set, into reductions[j] • These values will be popped back if we have to backtrack over v[i] (undo-reductions) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
FC: functions • update-current-domain – current-domain[i] reductions[i] – actually, we have to iterate over reductions=set of sets • fc-label – Attempts to instantiate current-variable – Then filters domains of all future variables (push into reductions) – Whenever current-domain of a future variable is wiped -out: • v[i] is un-instantiated and • domain filtering is undone (pop reductions) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Hybrids of FC • FC suffers from thrashing: it is based on BT • FC-BJ: – max-check is integrated in fc-bj-label and fc-bj-unlabel – Enjoys advantages of FC and BJ… but suffers malady of BJ (jump the step) • FC-CBJ: – Best algorithm for far (assuming static variable ordering) – fc-cbj-label and fc-cbj-unlabel Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Consistency checking: summary • Chronological backtracking – Uses back-checking – No extra data structures • Backmarking – Uses mcl and mbl – Two types of consistency-checking savings • Forward-checking – Works more at every instantiation, but expands fewer subtrees – Uses: reductions[i], future-fc[i], past-fc[i] Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Experiments • Empirical evaluations on Zebra – Representative of design/scheduling problems – 25 variables, 122 binary constraints – Permutation of variable ordering yields new search spaces – Variable ordering: different bandwidth/induced width of graph • 450 problem instances were generated • Each algorithm was applied to each instance Experiments were carried out under static variable ordering Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Analysis of experiments Algorithms compared with respect to: 1. Number of consistency checks (average) FC-CBJ < FC-BJ < BM-CBJ < FC < CBJ < BM < BJ < BT 2. Number of nodes visited (average) FC-CBJ < FC-BJ < FC < BM-CBJ < BMJ =BJ < BM = BT 3. CPU time (average) FC-CBJ < FC-BJ < FC < BM-CBJ < BMJ < BT < BM FC-CBJ apparently the champion Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Additional developments • Other backtracking algorithms exist: – Graph-based backjumping (GBJ), etc. [Dechter] – Pseudo-trees [Freuder 85] • Other look-ahead techniques exist: – DAC, MAC, etc. • More empirical evaluations: – over randomly generated problems • Theoretical evaluations: – Based on approach of Kondrak & Van Beek IJCAI’ 95 Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Outline • Review of terminology of search • Hybrid backtracking algorithms • Looking ahead – Forward checking (FC) – Directional Arc Consistency (DAC) – Maintaining Arc Consistency (a. k. a. full arcconsistency) • Evaluation of (deterministic) BT search algorithms Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Looking ahead • Rationale: – As decisions are made (conditioning), • Revise the domain of future variables to propagate the effects of decisions • I. e. , eliminate inconsistent choices in future sub-problem – Domain annihilation of a future variable avoids expansion of useless portions of the tree • Techniques – Partial: forward-checking (FC), directional arcconsistency (DAC) – Full: Maintaining arc-consistency (MAC) – Use: Revise(Vf, Vc), Vf future variable, Vc current variable Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Revising the domain of Vi • Revising the domain of Vi given a constraint C on Vi (i. e. , Vi Scope(C)) • General notation: Revise(Vi, C) • In a binary CSP: Revise(Vi, C)= Revise(Vi, CVi, Vj)= Revise(Vi, Vj) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Revise(Vi, Vj) • Revise(Vi, Vj) 1. x DVi 2. y DVj 3. If y DVj with (x, y) C return() 4. Else. If DVi {x} NOTE: only DVi may be updated Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Domain filtering in lookahead • • • Vc current variable Vf future variable {Vf} all future variables Revise(Vf, Vc) FC(Vc): 1. Vf {Vf} connected to Vc 2. Revise(Vf, Vc) 3. If DVf ={} then return(failure) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Look-ahead techniques: • FC: • DAC: – FC, DAC, MAC FC(Vc); Vf {Vf}, FC(Vf) in the ordering d assumes a fixed variable ordering d • MAC: FC(Vc); AC({Vf}) FC(Vc); Repeat until quiescence or failure Vf 1, Vf 2 {Vf}, Revise(Vf 1, Vf 2) – does more pruning at the cost of more consistency checks Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Terminology overload alert: FC • FC is used to denote any of the following: – a partial look-ahead schema – a specific chronological backtrack search algorithm that uses the partial look-ahead schema • Meaning is inferred from context • Not a healthy situation, but a reality • Advice: state upfront the meaning of your terms and stick to them throughout your paper Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Outline • • Review of terminology of search Hybrid backtracking algorithms Looking ahead Evaluation of (deterministic) BT search algorithms [Dechter, 6. 6. 2] – – CSP parameters Comparison criteria Theoretical evaluations Empirical evaluations Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
CSP parameters • Number of variables: n • Domain size: a, d • Constraint tightness: t = |forbidden tuples| / | all tuples | • Proportion of constraints (a. k. a. , constraint density, constraint probability): p 1 = e / emax, e is nbr of constraints Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Comparison criteria 1. Number of nodes visited (NV) • 2. Every time you call label Number of constraint check (CC) • 3. Every time you call check(i, j) CPU time • Be as honest and consistent as possible 4. Some specific criterion for assessing the quality of the improvement proposed Presentation of values: • • • Average or median of criterion (qualified) run-time distribution Solution-quality distribution Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Theoretical evaluations • Comparing NV and/or CC • Common assumptions: – for finding all solutions – static orderings Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Empirical evaluation: data sets • Use real-data sets (anecdotal evidence) • Use benchmarks (csp library) • Use randomly generated problems Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Empirical evaluations: random problems • Various models exist (use Model B) – Models A, B, C, E, F, etc. • Vary parameters: <n, a, t, p> – – Number of variables: n Domain size: a, d Constraint tightness: t = |forbidden tuples| / | all tuples | Proportion of constraints (a. k. a. , constraint density, constraint probability): p 1 = e / emax • Issues: – Uniformity – Difficulty (phase transition) – Solvability of instances (for incomplete search techniques) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Model B 1. Input: n, a, t, p 1 2. Generate n nodes 3. Generate a list of n 2 tuples of all combinations of 2 nodes 4. Choose e elements from above list as constraints to between the n nodes 5. If the graph is not connected, throw away, go back to step 4, else proceed 6. Generate a list of a 2 tuples of all combinations of 2 values 7. For each constraint, choose randomly a number of tuples from the list to guarantee tightness t for the constraint Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
Example: MAC vs. FC • Reference: [Sabin & Freuder, ECAI 94], [Bessière & Régin, CP 97], [Sabin & Freuder, CP 97], [Gent & Prosser, APES-20 -2000], [Experiments by Lin XU, 2001], [Yang, MS thesis 2003] • Results: (sketchy) Low tightness High tightness Low density (sparse) FC MAC High density (dense) FC FC Note: results depend on • Variable ordering (static vs. dynamic) • Problem difficulty (positive relative to crossover point) Foundations of Constraint Processing, Fall 2005 September 11, 2005 Backtracking
- Slides: 62