TD 2 : Modélisation en Logique Propositionelle Master 1 INFO
TD 2
Quelques Informations
page du cours sur Eprel : http://eprel.u-pec.fr/eprel/
1 Mise en forme normale
Pour mettre une formule de la logique propositionnelle en forme normale conjonctive (FNC),
on applique les transformations suivantes :
1. éliminer les et :
(φψ)(¬φψ)
(φψ)(¬φψ)(¬ψφ)
2. faire entrer les négations le plus à l’intérieur possible :
¬(φψ)(¬φ∧ ¬ψ)
¬(φψ)(¬φ∨ ¬ψ)
3. utiliser la distributivité de et :
(φ(ψχ)) (φψ)(φχ)
(φ(ψχ)) (φψ)(φχ)
Exercice 1 Mettre les formules suivantes en forme normale conjonctive :
1. (pqr)(qs)
2. q(pr)
3. (p(qr)) ((pq)(pr))
2 Modélisation
Exercice 2 On veut attribuer des fréquences d’émission à cinq émetteurs radio. Certains
émetteurs étant proches, on ne peut pas leur assigner la même fréquence d’émission à cause
des problèmes d’interférences. On dispose exactement de trois fréquences : 95,100, et 105
méga-hertz, et les émetteurs sont numérotés de 1 à 5. Entre les paires d’émetteurs suivantes,
on ne peut pas attribuer les mêmes fréquences :
{(1,2),(2,3),(3,4),(4,5),(5,1),(1,4)}
1
Master 1 INFO TD 2 : Modélisation en Logique Propositionelle
De plus, entre certains émetteurs, on veut que les fréquences soient très différentes (au moins
7Mhz de différence) :
{(1,4),(4,3)}
Peut-on trouver une assignation de fréquences qui respecte toutes ces contraintes ? Mo-
déliser ce problème en logique propositionnelle. Plus précisément, écrire une formule φde
logique propositionnelle (en forme normale conjonctive), telle que φest satisfaisable si et
seulement si il existe une assignation de fréquences qui respecte les contraintes.
Exercice 3 Sudoku 3D On veut placer dans un cube de taille 9x9x9 les nombres de 1 à 9
avec la contrainte que toute tranche d’épaisseur 1 (c’est-à-dire tout tableau 9x9 qu’on peut
obtenir en fixant une des coordonnées) satisfait les contraintes suivantes :
1. toute ligne de cette tranche contient les nombres de 1 à 9 et ils n’apparaissent qu’une
seule fois ;
2. toute colonne de cette tranche contient les nombres de 1 à 9 et ils n’apparaissent qu’une
seul fois.
Modélisez ce problème en logique propositionnelle et donnez une formule en forme normale
conjonctive telle que toute interprétation satisfait la formule si et seulement si elle représente
une solution du problème. En utilisant la bibliothèque C++ MiniSAT, écrire un programme
qui génère la formule précédente et teste si elle est satisfaisable.
Rappel : la bibliothèque MiniSAT définit une classe Solver qui contient les méthodes sui-
vantes :newVar(), addUnit(Lit), addBinary(Lit,Lit), addClause(<vec>Lit), solve(),okay()
La classe Lit permet de définir des littéraux : Lit(int) définit le littéral positif représen
par l’entier pris en argument, alors que Lit(int) définit un littéral négatif. Un vecteur de
littéraux vest de type <vec>Lit et se manipule avec les méthodes clear(), push(Lit).
Supposons maintenant que certains nombres sont déjà placés dans la grille. Modifiez votre
formule pour qu’elle prenne en compte ces nouvelles contraintes. On pourra supposer que le
placement des nombres est donné par une fonction F:{1,...,9}3→ {1,...,9} ∪ {?}telle
que pour tout (i, j, k)∈ {1,...,9}3,F(i, j, k) =? si la case de position (i, j, k)est vide, et
F(i, j, k) = l∈ {1,...,9}si la case de position (i, j, k)contient la valeur l.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !