Skip to content

hemanth45-gudi/Sudoku-Solver-using-Backtracking

Repository files navigation

🧩 Sudoku Solver β€” Production Edition (DSA Project)

Python Status DSA License

A production-level Sudoku Solver built using Backtracking and Dancing Links (DLX) algorithms with step-by-step visualization, performance benchmarking, and interactive GUI.

This project demonstrates core Data Structures and Algorithms (DSA) concepts including recursion, constraint satisfaction, optimization techniques, and efficient search space exploration with a modern software architecture.


⭐ Key Features

  • πŸ”„ Step-by-step solving visualization
  • ⚑ Backtracking + DLX algorithm support
  • πŸ“Š Performance benchmarking (time, memory, steps, backtracks)
  • πŸ”¬ Algorithm comparison (Backtracking vs DLX)
  • ✏️ Custom puzzle input
  • 🎨 Modern production UI with theme support
  • πŸ” Constraint validation (row, column, subgrid)
  • πŸ§ͺ Unit testing support
  • 🌐 FastAPI backend API
  • 🐳 Docker deployment ready
  • πŸ“ Logging and configuration management

πŸ“Œ Project Overview

This project implements a Sudoku Solver that automatically solves a given 9Γ—9 puzzle while satisfying all Sudoku constraints.

The system demonstrates:

  • Recursion and backtracking techniques
  • Constraint satisfaction problem solving
  • Algorithm visualization
  • Performance measurement and benchmarking
  • Algorithm comparison (Backtracking vs DLX)
  • Interactive user interface

It combines theoretical algorithm concepts with real-world application design.


πŸš€ Quick Start

Clone Repository

git clone <your-repo-url>
cd sudoku-solver

Install Dependencies

pip install -r requirements.txt

Run Application (GUI)

python main.py

Run API Server

uvicorn src.api.main:app --reload

Run Tests

pytest

πŸ“Έ Demo

Solver Interface

Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking

assets/images/solver.png

Custom Puzzle Input

Sudoku-Solver-using-Backtracking

assets/images/input.png

Performance Benchmark

Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking Sudoku-Solver-using-Backtracking


βš™οΈ Technologies Used

  • Python
  • Backtracking Algorithm
  • Dancing Links (DLX)
  • Recursion
  • Pygame (GUI Visualization)
  • FastAPI (API Service)
  • Pytest (Testing)
  • Docker (Deployment)
  • Logging System
  • Performance Benchmarking
  • Matrix / 2D Array Operations

🧠 Algorithms Used

Backtracking

Backtracking is a recursive problem-solving technique that explores possible solutions and eliminates invalid ones.

Dancing Links (DLX)

DLX is an optimized algorithm for solving exact cover problems and provides faster performance for complex Sudoku puzzles.

Sudoku is a constraint satisfaction problem where each solution must satisfy:

  • Row constraint
  • Column constraint
  • 3Γ—3 subgrid constraint

πŸ”¬ Algorithm Performance Comparison

The project compares multiple solving approaches:

Backtracking

  • Recursive search
  • Constraint validation
  • Explores search space systematically

Dancing Links (DLX)

  • Exact cover formulation
  • Optimized search
  • Faster for complex puzzles

Benchmark Metrics

  • Execution time
  • Memory usage
  • Steps and backtracks
  • Nodes visited

DLX typically provides faster performance than standard backtracking.


🧠 Data Structures Used

  • 2D Matrix β†’ Sudoku grid representation
  • Recursion Stack β†’ Function calls during solving
  • Constraint Checking Functions β†’ Rule validation

⭐ Features in Detail

πŸ”„ Visualization

  • Highlights current cell
  • Shows number placement
  • Displays backtracking process
  • Adjustable solving speed

πŸ“Š Performance Metrics

  • Counts recursive calls
  • Tracks backtracking steps
  • Measures execution time
  • Displays solving statistics

✏️ Custom Puzzle Input

  • Manual puzzle entry
  • Accepts values 1–9
  • Empty cells represented as 0
  • Input validation with error detection

πŸ” Constraint Validation

  • Row validation
  • Column validation
  • 3Γ—3 subgrid validation

πŸ“ Input Format

  • Sudoku represented as 9Γ—9 grid
  • Empty cells represented using 0
  • Solver fills all empty cells while maintaining constraints

πŸ“Š Time & Space Complexity

Time Complexity

Worst case: O(9^(nΒ²)) for an nΓ—n grid.

Backtracking explores possible values but prunes invalid paths early.

Space Complexity

O(nΒ²) due to board storage and recursion stack.


πŸ“‚ Project Structure

Sudoku-Solver/
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ api/           # FastAPI backend
β”‚   β”œβ”€β”€ solver/        # Solver algorithms
β”‚   β”œβ”€β”€ gui/           # GUI implementation
β”‚   └── utils/         # Helper functions & configs
β”‚
β”œβ”€β”€ tests/             # Unit tests
β”œβ”€β”€ assets/            # Images and icons
β”œβ”€β”€ docs/              # Documentation
β”œβ”€β”€ main.py            # Entry point
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ requirements.txt
└── README.md

🌍 Applications

  • Puzzle solving systems
  • Constraint satisfaction problems
  • AI problem solving
  • Game development
  • Scheduling and optimization systems

⚠️ Limitations

  • Designed primarily for 9Γ—9 Sudoku puzzles
  • Performance varies with puzzle difficulty

πŸš€ Future Improvements

  • Support for different grid sizes
  • Advanced heuristics (MRV, forward checking)
  • Web-based Sudoku interface

πŸ‘¨β€πŸ’» Author

Hemanth Gudi

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors