Rapport du Projet

Transcription

Rapport du Projet
Rapport du Projet
12 Janvier 2007
Université Bordeaux1
Master 2 ISC
Technologie de Vérification
Année universitaire 2006-2007
Rapport du Projet
Présenté par : Atoui Roland & Amri Kamal
Enseignant : M. Emmanuel Fleury
Modélisation du Jeu
SUDOKU
Atoui Roland & Amri Kamal
Master 2 ISC
1
BDDSudoku
Rapport du Projet
12 Janvier 2007
Sommaire
Introduction
3
I.
4
Sudoku: Jeu de logique
1. Présentation du Jeu
2. Présentation de BDD
4
5
II.
6
1.
2.
3.
4.
5.
Modélisation du Jeu
Objectifs
Moyens utilisés
Travaux effectués
Résultats
Conclusions
Atoui Roland & Amri Kamal
Master 2 ISC
6
7
7
8
8
2
BDDSudoku
Rapport du Projet
12 Janvier 2007
Introduction
Dans le cadre de l’année de Master 2 ISC, on a été amené à réaliser un Projet qui
concrétise nos connaissances qu’on a acquises en « technologie de vérification des
systèmes » au cours de l’année.
Le sujet du Projet qu’on a effectué est très représentatif de la tendance actuelle en
matière de modélisation des jeux de logique. Ce jeu a déjà inspiré plusieurs versions de
sudoku électroniques qui apportent un intérêt différent à la résolution des grilles de
Sudoku. Sa forme en grille et son utilisation ludique le rapprochent d'autres casse-tête
publiés dans les journaux, tels les mots croisés et les problèmes d'échecs, le sudoku
est partout.
Ce projet a consisté à modéliser un jeu de logique « Sudoku », et à essayer de
résoudre le problème en utilisant des BDD.
Ce rapport présente dans une première partie le jeu. Puis il décrit, avec un regard
critique, le travail qu’on a effectué.
Atoui Roland & Amri Kamal
Master 2 ISC
3
BDDSudoku
Rapport du Projet
I.
12 Janvier 2007
Sudoku: Jeu de logique
1. Présentation du jeu
La grille du jeu est composée de 9 lignes, 9 colonnes et de 9 régions
La grille du jeu contient toujours des chiffres de 1 à 9 et des cases vides, le but est
donc de remplir entièrement la grille de manière logique.
La règle du jeu est simple : chaque ligne, colonne et région ne doit contenir qu'une
seule fois tous les chiffres de un à neuf. Formulé autrement, chacun de ces ensembles
doit contenir tous les chiffres de un à neuf.
La plupart du temps, le jeu est proposé sous la forme d'une grille de 9×9, et composé
de sous grilles de 3×3, appelées « régions ». Quelques cellules contiennent des
chiffres, dits « dévoilés ». Le but est de remplir les cellules vides, un chiffre dans
chacune, de façon à ce que chaque rangée, chaque colonne et chaque région soient
composées d'un seul chiffre allant de 1 à 9.
En conséquence, chaque chiffre dans la solution apparaît une seule fois selon les trois
« directions », d'où le nom « chiffre unique ». Lorsque qu'un chiffre peut s'inscrire dans
une cellule, on dit qu'il est candidat.
Vous avez plusieurs difficultés accessibles :
En grille 4*4 :- Enfant facile,- Enfant difficile,
En grille 9*9 :- Facile,- Moyen,- Difficile,- Diabolique,
En grille 16*16 :- Samouraï.
L'intérêt du jeu réside dans la simplicité de ses règles, et dans la complexité de ses
solutions. Les grilles publiées ont souvent un niveau de difficulté indicatif. En général,
les grilles contenant le plus de chiffres pré remplis fussent les plus simples, l'inverse
n'est pas systématiquement vrai. La véritable difficulté du jeu réside plutôt dans la
difficulté à trouver la suite exacte de chiffres à ajouter.
Atoui Roland & Amri Kamal
Master 2 ISC
4
BDDSudoku
Rapport du Projet
12 Janvier 2007
2. Présentation de la BDD
Une BDD est une représentation compacte (parfois) d'une formule booléenne. Vous
pouvez faire l'intersection (ET) et se joindre (OU) des formules booléennes directement
sur le BDD.
Elle est parfois compacte, mais pas toujours. Il y a des formules booléennes qui n'ont
aucune BDD compacte (les formules qui décrivent la multiplication par exemple).
Mais puisque le sudoku est NP-complet, on pourra avoir un doute en l’intérêt de
résoudre un sudoku en utilisant des BDD.
Pour plus de détails sur ce sujet, veuillez lire Resolution and Binary Decision Diagrams
cannot simulate each other polynomially par janv. Friso Groote et Hans Zantema, écrit en
2000. Il explique la substance.
Exemple de BDD
Atoui Roland & Amri Kamal
Master 2 ISC
5
BDDSudoku
Rapport du Projet
II.
12 Janvier 2007
Modélisation du Jeu
1. Objectifs
En ce basant sur les BDD on a été amené a modéliser un solveur de sudoku.
Le format d'entrée du logiciel doit avoir cette forme:
{{5,3,0,0,7,0,0,0,0},
{6,0,0,1,9,5,0,0,0},
{0,9,8,0,0,0,0,6,0},
{8,0,0,0,6,0,0,0,3},
{4,0,0,8,0,3,0,0,1},
{7,0,0,0,2,0,0,0,6},
{0,6,0,0,0,0,2,8,0},
{0,0,0,4,1,9,0,0,5},
{0,0,0,0,8,0,0,7,9}}
2. Moyens utilisés
En terme de moyens techniques :
•
Langage de programmation : C++.
•
Plateforme de développement : Emacs.
•
Outils : buddy dans sa version 2.4.
En terme de moyens temporels, on mis à profit deux semaines pour réaliser ce travail.
3. Travaux effectués
Pour réaliser ce jeu «BDDSudoku », on a commencé par résoudre le problème comme
un problème SAT. Une fois on a trouvé la solution en utilisant des formules booléennes
on a employé la bibliothèque Buddy pour résoudre le problème avec des BDD.
1. Rappel:
L’exemple de placement d’une reine dans un échiquier nous à été d’une grande utilitée
pour plusieurs raisons:
Atoui Roland & Amri Kamal
Master 2 ISC
6
BDDSudoku
Rapport du Projet
12 Janvier 2007
-
C’est un problème simple a comprendre et implémenté dans les exemples
d’utilisation de la bibliothèque Buddy, ce qui nous à permis d’avoir rapidement une
idée claire sur le fonctionnement des BDD en utilisant cette bibliothèque.
-
Après l’étude de l’exemple précèdent, nous avons établi le lien entre le problème de
queen et le problème du sudoku. En effet le premier est un cas particulier du
deuxième avec la particularité d’avoir a placé un seul chiffre, au lieu de N pour le
deuxième, donc nous l’avons utilisé comme base que nous avons adapté à nos
besoin.
2. Modélisation du sudoku en BDD :
 Les structures des données :
Chaque case de la grille d’un sudoku est exprimée comme étant une BDD .
La résolution du problème nécessite essentiellement une matrice de BDD à trois
dimensions à partir de laquelle les expressions logiques seront calculer et stocker dans
une BDD qui contient les expressions logiques qui doivent respecter les contraintes.
 La modélisation des contraintes :
La bibliothèque buddy possède les fonctions nécessaires pour pouvoir exprimer
aisément les contraintes, donc dans une fonction intitulée « build » nous avons
rassemblé les contraintes classiques liées à chaque case de la grille.
La seule manière de résoudre un problème du sudoku est d’avoir une grille complète,
cette contrainte a été exprimé grâce à une règle logique qui impose à la solution finale
d’avoir au moins une valeur pour chaque case de la grille.
Une règle supplémentaire a été rajoutée à la fonction « build » dans un souci de
performance des calculs et qui rappelle que chaque case du tableau doit avoir au
maximum une seule valeur.
En l’absence de cette dernière règle le résultat reste le même car la règle qui impose
au moins une valeur pour chaque case combiné avec les contraintes classique permet
d’avoir toutes les cases de la grille avec exactement une seul valeur ( 9 valeurs pour 9
cases « case ici est utilisé au terme d’un tableau » ) de la grille.
 La résolution du problème :
Une fois les contraintes exprimées pour chaque case de la matrice de départ la
« BddGride » contient l’ensemble des solutions du problème. Ainsi nous pouvons
connaître le nombre de solutions, ainsi que les solutions elles-mêmes…
3. Gestion des entrées sorties :
Atoui Roland & Amri Kamal
Master 2 ISC
7
BDDSudoku
Rapport du Projet
12 Janvier 2007
Pour adapter les formats d’entrées et puis de sorties des données à nos objectifs, nous
avons gérer les entrées sorties de façon quasi manuelle, mais le travail effectué a visé
une utilisation simple de notre application, nous pouvons donc avoir le format d’entrée
comme demandé, et le format de sortie de la même manière.
4. Résultats
Nous avons fait le choix de vous exposer des résultats pour une grille 4*4, mais pour
les autres tailles l’application donne des résultats satisfaisant.
Format d’entrée
Format de sortie
There are 1 solutions
one is:
{{1,0,3,4},
{4,3,0,1},
{2,0,4,3},
{3,4,1,2}}
{{1,2,3,4},
{4,3,2,1},
{2,1,4,3},
{3,4,1,2}}
Le BDD obtenu contient bien une seul branche conduisant à une solution. Nous l’avons
nommé res44.dot.
Pour une grille 4*4 initialement vide {}:
There are 288 solutions
one is:
{{4,3,2,1},
{2,1,4,3},
{3,4,1,2},
{1,2,3,4}}
5. Conclusion
Pendant la réalisation de ce projet, on a progressivement bénéficié, pendant,
d’avantage d’autonomie dans la résolution des sudoku.
Le point fort de la résolution de ce problème en utilisant les BDD est la résolution de
façon automatique une fois les contraintes exprimées. Donc le travaille de modélisation
à remplacer le travail de développement qui est très compliqué pour ce problème. Donc
finalement nos doutes à propos des BDD ont disparu pour ce type de problèmes.
Atoui Roland & Amri Kamal
Master 2 ISC
8
BDDSudoku

Documents pareils