Backtracking is a general algorithm for solving some computational problems, most notably constraint satisfaction problems, that incrementally builds candidates to the solutions and abandons a candidate's backtracks as soon as it determines that the candidate cannot be completed to a reasonable solution. The backtracking algorithm is used in various applications, including the N-queen problem, the knight tour problem, maze solving problems, and the search for all Hamilton paths in a graph.

## Introduction to Backtracking Algorithm

Backtracking is an algorithmic technique whose goal is to use brute force to find all solutions to a problem. It entails gradually compiling a set of all possible solutions. Because a problem will have constraints, solutions that do not meet them will be removed.

### Backtracking Algorithm

Backtrack(s) ifs is not a solution return false if is a new solution add to list of solutions backtrack(expand s) |

It finds a solution by building a solution step by step, increasing levels over time, using recursive calling. A search tree known as the state-space tree is used to find these solutions. Each branch in a state-space tree represents a variable, and each level represents a solution.

A backtracking algorithm uses the depth-first search method. When the algorithm begins to explore the solutions, the abounding function is applied so that the algorithm can determine whether the proposed solution satisfies the constraints. If it does, it will keep looking. If it does not, the branch is removed, and the algorithm returns to the previous level.

### State-Space Tree

A space state tree is a tree that represents all of the possible states of the problem, from the root as an initial state to the leaf as a terminal state.

You will now look at how the algorithm works after you have learned what it is.

## How Does a Backtracking Algorithm Work?

In any backtracking algorithm, the algorithm seeks a path to a feasible solution that includes some intermediate checkpoints. If the checkpoints do not lead to a viable solution, the problem can return to the checkpoints and take another path to find a solution. Consider the following scenario:

- In this case, S represents the problem's starting point. You start at S and work your way to solution S1 via the midway point M1. However, you discovered that solution S1 is not a viable solution to our problem. As a result, you backtrack (return) from S1, return to M1, return to S, and then look for the feasible solution S2. This process is repeated until you arrive at a workable solution.
- S1 and S2 are not viable options in this case. According to this example, only S3 is a viable solution. When you look at this example, you can see that we go through all possible combinations until you find a viable solution. As a result, you refer to backtracking as a brute-force algorithmic technique.
- A "space state tree" is the above tree representation of a problem. It represents all possible states of a given problem (solution or non-solution).

The final algorithm is as follows:

- Step 1: Return success if the current point is a viable solution.
- Step 2: Otherwise, if all paths have been exhausted (i.e., the current point is an endpoint), return failure because there is no feasible solution.
- Step 3: If the current point is not an endpoint, backtrack and explore other points, then repeat the preceding steps.

Moving on in this tutorial, you will now look at one example to help understand it better.

## An Example of Backtracking Algorithm

Now, this tutorial is going to use a straightforward example to explain the theory behind the backtracking process. You need to arrange the three letters x, y, and z so that z cannot be next to x.

According to the backtracking, you will first construct a state-space tree. Look for all possible solutions and compare them to the given constraint. You must only keep solutions that meet the following constraint:

The following are possible solutions to the problems: (x,y,z), (x,z,y), (y,x,z), (y,z,x), (z,x,y) (z,y,x).

Nonetheless, valid solutions to this problem are those that satisfy the constraint that keeps only (x,y,z) and (z,y,x) in the final solution set.

## When to Use a Backtracking Algorithm?

There are the following scenarios in which you can use the backtracking:

- It is used to solve a variety of problems. You can use it, for example, to find a feasible solution to a decision problem.
- Backtracking algorithms were also discovered to be very effective for solving optimization problems.
- In some cases, it is used to find all feasible solutions to the enumeration problem.
- Backtracking, on the other hand, is not regarded as an optimal problem-solving technique. It is useful when the solution to a problem does not have a time limit.

Following an example of a backtracking algorithm, you will now look at different types.

## Types of Backtracking Algorithm

Backtracking algorithms are classified into two types:

- Algorithm for recursive backtracking
- Non-recursive backtracking algorithm

### Algorithm for Recursive Backtracking

Backtracking must be described in this manner because it is a postorder traversal of a tree:

1. Algorithm Backtrack (s) 2. // Using recursion, this scheme describes the backtracking process. 3. //The first s-1 values are entered. 4. // z [1], z [2]… z [s-1] of the solution vector. 5. // z [1:n] have been assigned. Z [] and n are global. 6. { 7. For (each z [s] £ T (z [1],……,z [s-1]) do 8. { 9. If ( Bk (z [1], z[2],……….,z [s] != 0) then10 { 11. If (z[1], z[2], …… , z[s] is a path to an answer node ) 12. Then write (z[1:s]); 13. If(s<n) then backtrack (s+1); 14. } 15. } 16. } |

The solution vectors (z1, z2,... zs) are regarded as a global array z [1: n]. All of the possible elements for the zth position of the tuple that satisfy Bs are generated one at a time and then adjoined to the current vector (z1... zs-1). When zs is attached, a check is made to see if a solution has been found. When the for loop on line 7 is finished, there are no more values for zs, and the current copy of the backtrack ends.

### Non-Recursive Backtracking Algorithm

In a non-recursive algorithm, an iterative or non-recursive version of the recursive algorithm appears.

1. Backtracking Algorithm(s) 2. This scheme describes the process of backtracking. 3. // all solutions in z [1: n] are generated and printed 3. / all solutions in z [1: n] are generated and printed 5.{ 6.s=1; 7. While (s!= 0) do 8.{ 9.If ( there remains are untried z [1] £ X ( z [1], z [2], ….., z [s-1]) and Bk (z[1], ….., z[s]) is true) then 10. { 11. If ( z[1], …., z[s] is a path to an answer node) 12. Then write ( z[1 : s]); 13. S = s + 1 14. } 15. Else s=s - 1 // backtrack the previous set 16.} 17.} |

X() returns the set of all possible values assigned to the solution vector's first component, z1. The component z1 will accept values that satisfy the bounding function B1 (z1).

As you progress through this tutorial, you will see some of the applications of the backtracking.

## Applications of Backtracking Algorithm

The backtracking algorithm has the following applications:

### 1. To Find All Hamiltonian Paths Present in a Graph.

A Hamiltonian path, also known as a Hamilton path, is a graph path connecting two graph vertices that visit each vertex exactly once. If a Hamiltonian way exists with adjacent endpoints, the resulting graph cycle is a Hamiltonian or Hamiltonian cycle.

### 2. To Solve the N Queen Problem.

- The problem of placing n queens on the nxn chessboard so that no two queens attack each other is known as the n-queens puzzle.
- Return all distinct solutions to the n-queens puzzle given an integer n. You are free to return the answer in any order.
- Each solution has a unique board configuration for the placement of the n-queens, where 'Q' and. '' represent a queen and a space, respectively.

### 3. Maze Solving Problems

There are numerous maze-solving algorithms, which are automated methods for solving mazes. The random mouse, wall follower, Pledge, and Trémaux's algorithms are used within the maze by a traveler who has no prior knowledge of the maze. In contrast, a person or computer programmer uses the dead-end filling and shortest path algorithms to see the entire maze at once.

### 4. The Knight's Tour Problem

The Knight's tour problem is the mathematical problem of determining a knight's tour. A common problem assigned to computer science students is to write a program to find a knight's tour. Variations of the Knight's tour problem involve chess boards of different sizes than the usual n x n irregular (non-rectangular) boards.

You will look at the summary of what you have learned so far now that you’ve reached the end of this tutorial.

Looking to accelerate your career as a skilled Full Stack Web Developer? Leverage Caltech CTME's academic excellence in a unique bootcamp-style Post Graduate Program in Full Stack Web Development. Enroll Now!

## Next Steps

In this tutorial, you learned what a backtracking algorithm is and how it works, and the different types and their applications.

Simplilearn’s Post Graduate Program in Full Stack Web Development will be ideal for you if you want a more comprehensive study that goes beyond Mobile and Software Development Delivered in collaborations with Caltech CTME, this online coding bootcamp covers the most in-demand programming languages and skills needed for success in software development today. It's time to get out there and explore.

Do you have any queries about this Backtracking Algorithm? Please leave them in the comments section at the bottom of this page if you have any. Our experts will respond as quickly as possible!