DEV Community

Cover image for Python - Use Backtracking for Solving Search Problems with Constraints
Keyur Ramoliya
Keyur Ramoliya

Posted on

Python - Use Backtracking for Solving Search Problems with Constraints

Backtracking is a general algorithmic technique used to find solutions for problems involving choices and constraints. It explores all possible options systematically, "backtracking" when it realizes that the current path cannot lead to a valid solution. This approach is often used for solving puzzles, search problems, and constraint satisfaction problems. Here's an example:

Example - Solving the N-Queens Problem with Backtracking in Python:

def solve_n_queens(n):
    def is_safe(row, col, board):
        # Check if it's safe to place a queen at the given position
        # Check the current column
        for i in range(row):
            if board[i][col] == 'Q':
                return False
        # Check the upper-left diagonal
        for i, j in zip(range(row, -1, -1), range(col, -1, -1)):
            if board[i][j] == 'Q':
                return False
        # Check the upper-right diagonal
        for i, j in zip(range(row, -1, -1), range(col, n)):
            if board[i][j] == 'Q':
                return False
        return True

    def backtrack(row):
        if row == n:
            # Add the current board configuration to the result
            result.append([''.join(row) for row in board])
            return
        for col in range(n):
            if is_safe(row, col, board):
                board[row][col] = 'Q'
                backtrack(row + 1)
                board[row][col] = '.'

    result = []
    board = [['.' for _ in range(n)] for _ in range(n)]
    backtrack(0)
    return result

# Example usage:
n = 4
solutions = solve_n_queens(n)
for solution in solutions:
    for row in solution:
        print(row)
    print()
Enter fullscreen mode Exit fullscreen mode

In this example, we use backtracking to solve the N-Queens problem, where you must place N queens on an N×N chessboard such that no two queens threaten each other. The algorithm explores different queen placements row by row, backtracking when it detects that the current configuration cannot lead to a valid solution.

Backtracking is a powerful technique for solving problems with constraints, and it can be applied to various scenarios where a solution needs to be found within a large search space while satisfying specific rules or conditions.

Top comments (0)