(' A Rendre Sous Forme D'un Rapport Le Jeudi 13 Octobre 23h59.) Minisat Dimacs
(' A Rendre Sous Forme D'un Rapport Le Jeudi 13 Octobre 23h59.) Minisat Dimacs
(' A Rendre Sous Forme D'un Rapport Le Jeudi 13 Octobre 23h59.) Minisat Dimacs
TP no 2
Le solveur Minisat
(À rendre sous forme d’un rapport le jeudi 13 octobre 23h59.)
L’objectif du TP est de se familiariser avec le solveur Minisat, qui permet de décider la satisfai-
sabilité de formules en forme normale conjonctive. De tels solveurs partagent le même format de
représentation des formules en CNF, le format Dimacs.
Travail demandé
(a) Écrire un fichier texte qui contient la formule (a ∨ b ∨ ¬c ∨ d) ∧ (¬b ∨ c) ∧ (¬a ∨ ¬d) au format
Dimacs (http://people.sc.fsu.edu/˜jburkardt/data/cnf/cnf.html).
(b) Tester la satisfaisabilité de cette formule en utilisant le solveur Minisat (http://minisat.
se/) en vous aidant du guide d’utilisation ci-dessous. La commande est minisat.
(http://www.dwheeler.com/essays/minisat-user-guide.html).
(c) On considère les la formule :
ϕ = (¬t → ¬s) → (b ∨ t) → s ∧ (r ∧ m) → (b ∨ a) ∧¬r
1
3-C OLOR
Instance : Un graphe non-orienté G = (V, E)
Question : G admet-il une 3-coloration valide ?
1. Proposer une réduction en temps polynomial de 3-C OLOR au problème S AT.
Un graphe est représenté par une suite de nombres de la façon suivante. Le premier entier indique le
nombre de sommets n, le second le nombre d’arêtes p. Viennent ensuite 2 p entiers compris entre 1 et
n, chacun des p couple décrivant les extrémités d’une arête. Ainsi,
4 5 1 2 2 3 3 4 1 3 2 4
1 3
10 15 1 2 2 3 3 4 4 5 5 1 1 6 2 7 3 8 4 9 5 10 6 8 7 9 8 10 9 6 10 7.
3. Implémenter une procédure qui, étant donné un graphe passé en argument selon le format décrit
ci-dessus, produit la formule (au format Dimacs) obtenue en appliquant votre réduction de la
première question.
4. Utiliser cette procédure pour décider si un graphe donné est 3-coloriable, en utilisant le solveur
Minisat.
5. Améliorer le programme précédent de telle sorte que si le graphe est 3-coloriable alors un 3-
coloriage est obtenu. Ce programme doit indiquer la couleur de chaque sommet.
6. Tester votre algorithme sur des exemples simples et sur des graphes aléatoires. Que se passe-t-il
quand on fait grossir la taille des graphes ?