Forward Checking: propagate information from assigned to unassigned variables.
We keep track of remaining legal values for unassigned variables and terminate the search when any variable has no legal values.

Forward Checking: propagate information from assigned to unassigned variables.
We keep track of remaining legal values for unassigned variables and terminate the search when any variable has no legal values.
