Forward Checking
The simplest good propagation is Forward Checking
The idea is very simple
- If you set a variable and it is inconsistent with some other variable, backtrack!
To do this we need to keep up to date the current state of each variable
- Add a data structure to do this, the current domain CD
- Initially, CDi = Di
- When we set variable xj = v
- remove xi = u from CDi if some constraint is not consistent with both xj = v, xi= u