Translation

powered by

Computing (FOLDOC) dictionary

backtracking

algorithm A scheme for solving a series of sub-problems each

of which may have multiple possible solutions and where the

solution chosen for one sub-problem may affect the possible

solutions of later sub-problems.

To solve the overall problem, we find a solution to the first

sub-problem and then attempt to recursively solve the other

sub-problems based on this first solution. If we cannot, or

we want all possible solutions, we backtrack and try the next

possible solution to the first sub-problem and so on.

Backtracking terminates when there are no more solutions to

the first sub-problem.

This is the algorithm used by logic programming languages

such as Prolog to find all possible ways of proving a

goal. An optimisation known as "intelligent backtracking"

keeps track of the dependencies between sub-problems and only

re-solves those which depend on an earlier solution which has

changed.

Backtracking is one algorithm which can be used to implement

nondeterminism. It is effectively a depth-first search of