The goal of a constraint solver is to bind (constrain) all of the defined variables to a single value which satisfies the constraints put upon that variable.
This is in essence traversing through a search tree (through DFS) and finding a valid end-node.
This means that when we find an invalid end-node (for example by running out of possible values for a variable) then we must in some way go back up the search tree.
This is in essence traversing through a search tree (through DFS) and finding a valid end-node.
This means that when we find an invalid end-node (for example by running out of possible values for a variable) then we must in some way go back up the search tree.
There are several different ways of doing this.
Short answer: Yes, we must backtrack somehow.