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 a problem space. (1995-04-13)