blog2geek.com
Amy&RedoxAvatar de Amy&Redox

5 billets | Profil

Recherche Google

ce blog tous
Derniers billets Connexion
Archives

complexite

20/05/2007

Formalisation du problème du Sudoku pour la réduction à SAT

 

Le Sudoku

Une grille de Sudoku est composée de $n cases, avec $n$ un carré parfait (c'est à dire que l'on a $n) et cette grille est elle-même divisée en $k sous-grilles. Généralement, on prend $n et $k. Au départ certaines cases sont remplies par des chiffres et d'autres sont vides. Le but du jeu est de remplir les cases vides en respectant les règles suivantes :

 

  • On ne doit pas avoir deux chiffres identiques sur une même ligne
  • On ne doit pas avoir deux chiffres identiques sur une même colonne
  • Il ne doit pas y avoir deux chiffres identiques dans l'une des sous-grilles de taille $k.

 

Figure: Grille de sudoku Image

Le Sudoku possède plusieurs propriétés :

 

  • Un problème de Sudoku ne possède qu'une seule solution
  • Il est possible de résoudre un Sudoku en raisonnant, donc sans faire de recherche de toutes les possibilités.

 

Formalisation

Pour représenter le problème sous forme de problème SAT, nous avons besoin de beaucoup de variables booléennes (qui correspondent aux littéraux). En effet il faut $n variables $Vxyz$ avec $x$, $y$ et $z$ $\in$ $[1..n]$. La variable $V_{xyz}$ sera vraie si et seulement si la case ($x,y$) contient la valeur $z$. On a besoin de $n variables pour avoir chaque case et on multiplie une troisième fois par $n$ pour avoir chaque case remplie du symbole $z$, avec $z$ $\in$ $[1..n]$, ce qui donne $n^3$ variables.

Par exemple : si $V_{135}$ est vraie, alors on a la case $[1,3]$ remplie avec le chiffre $5$.

Si on prend $n, il faudra $9 variables.