Whether to add some sophistication to the search method there constraint solvers use a technique called as forward checking. So here the general idea is to work the like as a backtracking search but, where checking compliance with constraints behind assigning a value to a variable there the agent also checks when this assignment is going to break constraints with future variable assignments. Hence is supposing that Vc has been assigned to the current variable c, after then for each unassigned variable xi, as temporarily remove all values from Di that along with Vc break a constraint. Thus it may be that in doing so, Di becomes empty. Because the choice of Vc for the current variable is bad - so however it will not find its way into a solution to the problem just because there's no way to assign a value to xi without breaking a constraint. In that condition even though the assignment of Vc may not break any constraints such that already assigned variables so a new value is chosen as or backtracking occurs whether there are no values left, just because we know that V is a bad assignment.
Here the next diagram like again, taken from Smith's tutorial to shows how forward checking improves the search for a solution to the 4-queens problem as;:.
In such a scenario to forward checking, to improve the intelligence of the constraint solving agent so there are some possibilities for a heuristic search. Therefore firstly, our agent can worry about the order such that looks at the variables, that is, in example of the 4-queens problem so it might try to put a queen in row 2, after then one in row 3, one in row 1 and then finally one in row 4. Moreover a solver taking such care is said to be utilizing a variable-ordering heuristic. Conversely the ordering of variables can be done earlier than a search is started and rigidly adhered to during the search. In fact this might be a good idea whether there is extra knowledge about the problem, like an example that a particular variable should be assigned a value sooner quite than later. In such a scenario the ordering of the variables can be done dynamically so in response to some information gathered about that how the search is progressing during the search procedure.