How to Play Sudoku & Win Integer Programming Formulation of a Popular Game Sven LeyfferSven Leyffer, Argonne, Feb. 15, 2005 (windoze powerpoint sumi painting style)
Sudoku Rules Given initial data Fill digits 1-9 into boxes such that Every digit 1-9 appears in every row, column, and 3x3 box. Works for letters, names etc
Solving Sudoku Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box:
Solving Sudoku Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box: Gives new
Solving Sudoku Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box: Gives new 2 Continue …
Solving Sudoku Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box: Gives new 2 Continue … … fill other digits
Solving Sudoku Eliminate rows & cols from 3x3 box E.g. eliminate 2 from 3x3 box: Gives new 2 Continue … … fill other digits Fill 3x3 boxes
Solving Sudoku by Integer Optimization 0-1 variables model digit assignment & linear equations model rules … gives integer linear program (ILP) NP-complete (graph coloring) problem (6,670,903,752,021,072,936,960 sols) Solve using ILP solvers: CPLEX, MINTO See ~leyffer/sudoku/ for AMPL models
Branch-and-Bound Solver Solve continuous relaxation: [0,1] Branch on non- integral variable: Two new probs: Set y=1 or y=0 Continue until all nodes explored
Solution to Simple Example Solver: CPLEX Simple Problem: Time: 0 Nodes: 0 … AMPL presolve Challenging Problem Time: 0.03 seconds Nodes: 0 … integral LP soln
Sudokus Without Solutions No solution AMPL/CPLEX: Infeasible constraints by presolve Proof of non- existence of solution
Sudokus With Multiple Solutions Many solution AMPL/MINTO: Find first solution Integer cuts to remove solution Resolve to find new solution Stop when infeasible Soln at root node what ’ s the secret?
AMPL ’ s Primal Presolve Transform problem to smaller/easier equivalent problem Remove fixed variables Remove constraints that express variable bounds Iteratively tighten bounds on variables, using Gauss-Seidel Todd has experience with NCP presolve!
MINTO ’ s Primal Heuristics Find solution early … reduce tree-search Probing: tentatively set binaries to 0 or 1 Rounding & feasibility pump LP relaxation: solution x … round to r(x) Solve LP min dist(y,r(x)) subject to Ax=b LP solution y … round to r(y) & repeat Heuristics: genetic algorithms, et al.
Integer Optimization Applications Crew scheduling Machine scheduling Reactor core reload: Max fuel efficiency Subject to safety & diffusion PDE Find reloading schedule … integer & nonlinear
Constrained Logic Programming CLP origins: AI & logic CLP: declarative language to formulate logical problems, scheduling etc CLP: combines constraints with logic & constraint satisfaction CLP allows tailored solutions/rules CHIP, ECLiPSe, GNU Prolog, IF/Prolog, ILOG, Koalog, MOzart, and SICStus
References: Wikipedia: en.wikipedia.org/wiki/Sudoku Th. Koch: How to Solve Sudoku … M.J. Chlond: IP Modeling: Su Doku (05) W. Shortz: Sudoku – 100 wordless puzzles Fourer & Gay: AMPL ’ s Primal Presolve (93) Sudoku Programmers Forum