Résolution de puzzles à l aide d un solveur SAT

Documents pareils
Programmation linéaire

a et b étant deux nombres relatifs donnés, une fonction affine est une fonction qui a un nombre x associe le nombre ax + b

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Bien lire l énoncé 2 fois avant de continuer - Méthodes et/ou Explications Réponses. Antécédents d un nombre par une fonction

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Projet INF242. Stéphane Devismes & Benjamin Wack. Pour ce projet les étudiants doivent former des groupes de 3 ou 4 étudiants.

Chapitre 2. Eléments pour comprendre un énoncé

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Rapport d'analyse des besoins

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Intelligence Artificielle Planification

Cours de Master Recherche

III- Raisonnement par récurrence

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Chapitre 1 Régime transitoire dans les systèmes physiques

Correction de l examen de la première session

FONDEMENTS MATHÉMATIQUES 12 E ANNÉE. Mathématiques financières

Guide de configuration d'une classe

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Suites numériques 3. 1 Convergence et limite d une suite

Exercices Corrigés Premières notions sur les espaces vectoriels

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Chapitre 1 Qu est-ce qu une expression régulière?

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Engagement de l ABC en matière de lisibilité des documents hypothécaires. Préparé par l Association des banquiers canadiens

Le produit semi-direct

Bases de données relationnelles

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Langage SQL : créer et interroger une base

CUEEP Département Mathématiques E 821 : Problèmes du premier degré 1/27

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Représentation géométrique d un nombre complexe

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

Guide No.2 de la Recommandation Rec (2009).. du Comité des Ministres aux États membres sur la démocratie électronique

BACCALAURÉAT PROFESSIONNEL ÉPREUVE DE MATHEMATIQUES. EXEMPLE DE SUJET n 2

Information utiles. webpage : Google+ : digiusto/

MATHÉMATIQUES. Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN

Fonctions de plusieurs variables

MPI Activité.10 : Logique binaire Portes logiques

CONTRAT DE LICENCE D UTILISATION DU LOGICIEL MORPH M SOUS LA FORME MORPH M PYTHON

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Chp. 4. Minimisation d une fonction d une variable

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Comparer l intérêt simple et l intérêt composé

Annexe commune aux séries ES, L et S : boîtes et quantiles

Plus petit, plus grand, ranger et comparer

La classification automatique de données quantitatives

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Baccalauréat universitaire (bachelor) en mathématiques et sciences informatiques

Python - introduction à la programmation et calcul scientifique

Glossaire des nombres

Valeur cible et solveur. Les calculs effectués habituellement avec Excel utilisent des valeurs numériques qui constituent les données d'un problème.

Rappel sur les bases de données

Logiciel Libre Cours 3 Fondements: Génie Logiciel

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

Plus courts chemins, programmation dynamique

Créer le schéma relationnel d une base de données ACCESS

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Programmes des classes préparatoires aux Grandes Ecoles

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

ÉVALUATION FORMATIVE. On considère le circuit électrique RC représenté ci-dessous où R et C sont des constantes strictement positives.

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Définitions. Numéro à préciser. (Durée : )

Baccalauréat technologique

Les nombres entiers. Durée suggérée: 3 semaines

L informatique en BCPST

TRANSFOLIO version Introduction

OPTIM-IS LA BONNE NOUVELLE FISCALE POUR VOTRE IS 2014

Approche Contract First

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

EPFL TP n 3 Essai oedomètrique. Moncef Radi Sehaqui Hamza - Nguyen Ha-Phong - Ilias Nafaï Weil Florian

Cours 02 : Problème général de la programmation linéaire

Maple: premiers calculs et premières applications

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Jean-Philippe Préaux

Cours 1 : Qu est-ce que la programmation?

OPTIM-IS ENFIN UNE BONNE NOUVELLE FISCALE POUR VOTRE IS 2013

ENSEIGNEMENT DES SCIENCES ET DE LA TECHNOLOGIE A L ECOLE PRIMAIRE : QUELLE DEMARCHE?

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Représentation d un entier en base b

Programmation linéaire

Machines virtuelles Cours 1 : Introduction

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Chapitre 2. Matrices

MIS 102 Initiation à l Informatique

La polarisation des transistors

Probabilités Loi binomiale Exercices corrigés

5255 Av. Decelles, suite 2030 Montréal (Québec) H3T 2B1 T: F:

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

BACCALAUREAT GENERAL MATHÉMATIQUES

Transcription:

Résolution de puzzles à l aide d un solveur SAT F. Herbreteau 2013 Ce projet a pour but la résolution de puzzles de type sudoku à l aide d un solveur SAT. Il comprend essentiellement quatre parties. Premièrement, la mise en équation du puzzle en logique propositionnelle qui réduit la résolution du puzzle à un problème de satisfaisabilité (SAT). Deuxièmement, la génération des équations au format DIMACS, puis l obtention d une solution (s il y en a) grâce à un solveur SAT. Troisièmement, l étude des limites de cette approche : la taille maximale des puzzles qu il est possible de résoudre. Enfin, la quatrième partie sera consacrée à la simplification des équations par une résolution partielle des puzzles par des méthodes ad hoc de votre choix, dans le but d augmenter la taille des puzzles qu il est possible de résoudre. Un sudoku Un jigsaw sudoku Un killer-sudoku Un comparison sudoku 1

1 Quelques puzzles de type sudoku Nous connaissons tous le classique sudoku de taille 9 9, comme celui-ci : 8 7 3 2 1 4 8 7 4 9 9 4 7 8 1 4 6 9 3 5 7 1 8 6 5 2 L objectif est de remplir la grille avec des symboles de 1 à 9 de telle sorte que chaque symbole apparaisse exactement une fois dans chaque ligne, chaque colonne et chaque carré 3 3 de la grille. Il existe de nombreuses variantes de puzzles de type sudoku (voir http://en. wikipedia.org/wiki/sudoku). La plus simple consiste à faire varier la taille de la grille. Par exemple, en passant à des grilles 16 16 (symboles 1,..., 9, A,... F ) ou plus. Certaines variantes modifient la géométrie de la grille. Par exemple, les jigsaw sudoku considèrent des grilles où les carrés 3 3 sont remplacés par des zones irrégulières. Les puzzles peuvent également être définis par d autres types de contraintes. Le samunamupure (ou killer sudoku ) s appuie sur une grille 9 9 classique, augmentée de contraintes sur la somme des nombres apparaissant dans certaines zones de la grille. Les comparison sudoku sont définis par des grilles 9 9 classiques augmentées de relation d ordre entre les cases de la grille. Afin de résoudre ces problèmes algorithmiquement, on peut envisager soit d écrire des algorithmes spécifiques pour chaque jeu, soit d utiliser une approche universelle. L approche universelle la plus simple (dite brute-force ) consiste à énumérer toutes les grilles possibles et à vérifier si chacune d entre elles résout le puzzle. Cette approche est évidemment peu utilisable en pratique. Ce projet cherche à développer une approche universelle utilisable sur des puzzles complexes en s appuyant sur un solveur SAT. 2 SAT : logique propositionnelle et satisfaisabilité L approche développée dans ce projet consiste à formaliser les puzzles de type sudoku en logique propositionnelle. Les contraintes seront exprimées en équations ou formules de la logique propositionnelle. La résolution du puzzle sera alors ramenée à un problème de satisfaisabilité (SAT). Un solveur SAT sera utilisé pour résoudre le puzzle. 2

2.1 Modéliser en logique propositionnelle La logique propositionnelle est un langage mathématique qui permet d exprimer des faits et d en étudier la véracité. Les éléments du langages sont les propositions : des variables ayant pour valeur soit 1 ( vrai ), soit 0 ( faux ). Par exemple, pour modéliser la grille de sudoku précédente, on peut introduire les propositions p ijk, avec i, j, k {1,..., 9}. Dans ce modèle, la proposition p ijk est vraie quand la case de coordonnées (i, j), c est à dire en ligne i et colonne j, contient le chiffre k. Ainsi, p 118, p 127 et p 389 sont vraies. Inversement, p 112 et p 324 sont fausses. On note la négation. On a donc p 112 et p 324 qui sont des formules vraies. La conjonction est notée. La formule p 118 p 127 est vraie puisque la case (1, 1) contient 8 et la case (1, 2) contient 7. La disjonction est notée. La formule p 127 p 125 est également vraie puisque la case (1, 2) contient bien un 7 ou un 5. On ne sait pas dire si la formule p 132 p 135 est vraie : il faudrait résoudre la grille de sudoku pour savoir si la case (1, 3) contient 2 ou 5. Le symbole = représente l implication. La formule p = q se lit p implique q. Elle signifie que si p est vraie, alors q est également vraie. En d autres termes, la formule p = q est vraie lorsque p est fausse et lorsque p et q sont vraies. Par exemple, la formule p 214 = p 224 est vraie, car puisque la case (2, 1) contient un 4, il ne peut pas y avoir un 4 en case (2, 2). La formule p 215 = p 225 signifie que s il y a un 5 en case (2, 1), alors il y a également un 5 en case (2, 2). Cette formule est également vraie puisqu il n y a pas de 5 en case (2, 1). La formule p 429 = p 431 est fausse : il y a un 9 en case (4, 2) mais il n y a pas de 1 en case (4, 3). La sémantique des connecteurs logiques s exprime sous la forme de tables de vérité : p p 0 1 1 0 p q p q 0 0 0 0 1 0 1 0 0 p q p q 0 0 0 0 1 1 1 0 1 p q p = q 0 0 1 0 1 1 1 0 0 Une valuation associe à chaque variable propositionnelle p une valeur 0 ou 1. Étant donnée une valuation, on peut déterminer la valeur d une formule à l aide des tables de vérité. Par exemple, la formule p (q r) a la valeur 1 ( vrai ) dans la valuation p = 1, q = 1, r = 0. Le problème de satisfaisabilité consiste à déterminer si, pour une formule donnée Φ, il existe une valuation v telle que Φ a la valeur 1 dans v (voir http://en.wikipedia. org/wiki/boolean_satisfiability_problem). On a vu par exemple que p (q r) est satisfaisable. 2.2 Les solveurs SAT et le format DIMACS Un solveur SAT est un programme informatique qui résout le problème de satisfaisabilité. À partir d une formule donnée, il indique si celle-ci est satisfaisable ou non. Si elle 3

est satisfaisable, il fournit une valuation qui satisfait la formule. Les solveurs SAT prennent en entrée des formules propositionnelles en forme normale conjonctive (CNF). Une formule est en forme normale conjonctive si elle est une conjonction de clauses C 1 C 2 C n. Chaque clause C i étant elle-même une disjonction l 1 l 2 l k de littéraux : soit une proposition atomique l j = p, soit la négation d une proposition atomique l j = p. Par exemple : (p q) r p ( p q r) (p q) ( q r) sont en forme normale conjonctive. Par contre, les formules suivantes ne le sont pas : (p q) p (q (r s)) Toute formule propositionnelle peut être mise sous forme normale conjonctive par application des lois de de Morgan et des lois de distributivité : (p q) p q (p q) p q p = q p q p (q r) (p q) (p r) p (q r) (p q) (p r) La formule résultante peut être exponentiellement plus grande que la formule de départ. La page wikipedia http://fr.wikipedia.org/wiki/forme_normale_conjonctive présente une mise en forme normale conjonctive de complexité linéaire. La plupart des solveurs SAT admettent comme format d entrée le format DIMACS. Les variables propositionnelles sont nommée p 1, p 2,..., p n. Dans ce format la formule ( p 1 p 2 p 3 ) (p 1 p 2 ) ( p 2 p 3 ) p 2 s écrit : c Une ligne qui commence par c est un commentaire p cnf 3 4-1 2 3 0 1-2 0-2 3 0 2 0 La ligne p cnf 3 4 signifie que la formule est donnée en forme normale conjonctive avec 3 variables propositionnelles et 4 clauses. Chaque clause est écrite sur une ligne : -1 signifie p 1 et 2 signifie p 2. Chaque ligne se termine par 0 précédé d un espace. 3 Travail à réaliser L objectif de ce projet est de programmer un solveur de sudoku, et de certaines de ses variantes. Étant donné une grille de jeu, votre solveur devra générer une formule de la logique propositionnelle telle que la formule est satisfaisable si et seulement si la grille admet une solution. Votre programme utilisera alors un solveur SAT pour résoudre le problème se satisfaisabilité. Lorsque la formule est satisfaisable, votre programme affichera la grille solution construite à partir du résultat donné par le solveur SAT. 4

1. Vous formaliserez en logique propositionnelle le jeu de sudoku (tout d abord en version 9 9 puis en version N N). Vous formaliserez au moins les variantes suivantes : killer sudoku, comparison sudoku et jigsaw sudoku. Vous veillerez à ce que vos formules soient satisfaisables si et seulement si la grille a une solution. 2. Vous écrirez un programme qui lit une grille de jeu depuis un fichier et qui génère la formule propositionnelle correspondante. Votre programme lira les fichiers au format suivant : nsymbols nrows ncolumns g sudoku u (1,1) (1,2) (1,3) * o (2,1) > (4,5) * s 12 (1,1) (1,2) (2,1) * La première ligne contient trois nombres : nsymbols : le nombre de symboles, puis nrows : le nombre de lignes, et ncolumns : le nombre de colonnes. La deuxième ligne commence par g et indique le jeu décrit ensuite. Quatre jeux devront être supportés : sudoku, killer sudoku, comparison sudoku et jigsaw sudoku. En fonction du type de jeu, certaines contraintes (occurrence unique de chaque symbole par ligne, par colonne,...) seront générées automatiquement par votre programme. Ensuite, suivront des lignes de type u, o et s dans un ordre quelconque. Toutes ces lignes se terminent par le symbole *. Les lignes u indiquent que chaque symbole a au plus une occurrence dans le groupe de cellules dont les coordonnées suivent. Les lignes o indiquent une relation d ordre entre les cellules : <, <=, =, >= ou >. Enfin, les lignes s sont composées d un nombre suivi d une liste de cellules. Elles indiquent la somme des valeurs se trouvant dans cet ensemble de cellules. On pourra spécifier la valeur d une cellule particulière par une ligne : s 8 (1,1) *. 3. Votre programme générera la formule qui correspond au jeu au format DIMACS, la fournira au solveur SAT, lira la sortie produite par celui-ci et affichera la grille résultat (s il y en a une). Votre programme devra vérifier que la solution est bien consistante avec la grille de départ. 4. Vous étudierez les limites des solveurs SAT pour résoudre ces problèmes : quelle est la taille N N maximale des grilles de sudoko que votre programme peut résoudre? Vous proposerez des méthodes de résolution partielle de votre choix permettant de simplifier les formules fournies au solveur SAT. 5