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