Solving Sudoku

September 08, 2019

Sudoku is a simple/easy to define problem. You have a 9 x 9 grid and you have to fill the numbers 1 to 9 in such a way that no number is repeated in any row, column, or sub grid. This problem has been explored by a number of people in a number of different ways. Most popular of them all is Peter Norvig’s Solving Every Sudoku Puzzle.

Sudoku is a Constraint Satisfaction Problem (CSP). Most popular techniques for solving a CSP are Backtracking, Constraint Propagation and Search. In this post, we will explore solving Sudoku as a Mixed-Integer Programming problem using CVXPY. We will also use a SAT Solver to solve the problem.

In the MIP method, we use a dummy objective function to trick the solver into satisfying the constraints.

A SAT Solver is designed for problems like this. SAT is short for SATISFYABILITY or Boolean satisfiability problem.

Sudoku as MIP

Sudoku as SAT Problem


Profile picture

Written by Chenna Kautilya who builds smart robots at beautiful downtown Oakland, California You should follow them on Twitter