**What is backtracking?**

Backtracking is an algorithm for capturing some or all of the solutions to given computational problems, particularly constraint satisfaction problems. The algorithm can only be used for problems that accept the concept of a 'partial candidate solution' and allows a quick test to see if the candidate solution can be a complete solution. Backtracking is seen as an important technique for solving constraint satisfaction questions and puzzles. It is also considered a great technique for parsing, and it also forms the basis of many logical programming languages.

Backtracking helps solve a general problem by finding a solution to the first sub-problem and then recursively trying to solve other sub-problems based on the solution to the first problem. If the current problem cannot be resolved, the step is reversed and the next possible solution is applied to the previous steps and then moves on. In fact, one of the most important things about backtracking is recursion. It is also viewed as a 'divide and conquer' exhaustive search method. A backtracking algorithm ends when there are no more solutions for the first sub-problem.

Backtracking is an algorithm that can help implement nondeterminism. It takes a deep search of a given problem space. It is mainly used in logical programming languages like Prolog. Wherever backtracking can be used, it is faster than brute force because it eliminates a large number of candidates with a single test.