Forward Checking
For implementation, we have to cope with undoing the effects of forward checking after backtracking
- One way is to store CDi on the stack at each depth in search, so it can be restored
- expensive on space
- very easy in languages which make copies automatically, e.g. Lisp, Prolog
- Another is to store only the changes to CDi
- then undo destructive changes to data structures on backtracking
- usually faster but can be more fiddly to implement