´
Ecole polytechnique Majeure informatique
Promotion 2012
Cours Conception et analyse d’algorithmes
TD 6 – Solveurs SAT
22 octobre 2014
1. Lazy data structures.
L’algorithme DPLL et ses variantes utilisent une m´ethode propagation, qui effectue la propagation de
clauses unitaires, et qui permet de maintenir les deux invariants suivants :
(*) si l’affectation courante des variables rend une clause ´egale `a faux, cette clause est d´etect´ee (ce qui
conduit soit `a un backtrack soit `a renvoyer unsat si plus de backtrack n’est possible).
(**) si l’affectation courante des variables rend une clause ´egale `a vrai, cette clause est d´etect´ee et
supprim´ee de la liste des clauses actives.
1. On suppose que l’on dispose d’une routine propagation-lazy qui maintient l’invariant (A) mais pas
le (B). Montrer que l’algorithme DPLL reste valide en utilisant cette routine `a la place de propagation, `a
condition de rajouter une condition de terminaison ad´equate.
2. On suppose que l’on maintient, pour chaque clause Cde la formule, deux pointeurs x1(C)6=x2(C),
appel´es litt´eraux surveill´es, qui v´erifient la propri´et´e suivante :
pour i∈ {1,2},xi(C)pointe vers un litt´eral contenu dans Cqui n’est pas faux dans l’affectation (***)
courante des variables (ce litt´eral peut ˆetre soit vrai soit non affect´e).
On suppose de plus que l’on maintient, pour chaque variable x, une liste de pointeurs vers les clauses dont
xou ¯xest un litt´eral surveill´e.
Donner une variante de l’algorithme DPLL, utilisant la strat´egie de la question 1., et qui utilise ces
structures de donn´ees. On prendra soin de v´erifier que l’algorithme pr´eserve les invariants (*) et (***).
3. Quel est l’int´erˆet de cette strat´egie ?
2. Algorithme DPLL et Unique Implication Points
On se propose dans cette exercice d’´etudier sur un exemple la notion de graphe d’implication, et la
mani`ere dont elle peut ˆetre utilis´ee pour l’apprentissage de clauses.
On consid`ere la formule Fd´efinie par F=VCiou les Cisont les clauses suivantes :
C1= ¯x1∨¯x2;C2=x2∨x3∨x8;C3= ¯x3∨¯x4;C4=x6∨x5∨x4;C5= ¯x1∨¯x5∨x7;
C6= ¯x4∨¯x8;C7= ¯x6∨x7∨x9;C8=x1∨x7∨x10 ;C9= ¯x7∨x9∨¯x10 ;C10 = ¯x9∨x10
Pour une formule donn´ee sous forme de CNF et un ensemble d’affectations de variables de d´ecisions
successives, on d´efinit, pour chaque propagation de contraintes unitaires, ce qu’on appelle le graphe d’im-
plication. Chaque sommet du graphe d’implication correspond `a l’affectation d’une variable. Un sommet
porte l’´etiquette xi:k(ou ¯xi:k) si la variable xia ´et´e affect´ee `a vraie (ou `a faux) apr`es kaffectations de
variables de d´ecisions. Il existe une arˆete (´etiquet´ee par Cm) entre xi:ket xj:l(avec k≤l) si `a l’´etape l,
la propagation des clauses unitaires conduit `a d´eduire l’affectation de xjen utilisant Cm. Enfin il existe un
sommet sp´ecial ´etiquet´e κqui correspond `a un conflit dˆu `a une clause Cm. Dans ce cas il existe une arˆete
´etiquet´ee Cmde xiou ¯xi`a κsi la variable xiapparaˆıt dans Cm.
1. On consid`ere la formule Fd´efinie ci-dessus et les choix successifs suivants : x1:= 1, x7:= 0, x9:= 0.
Dessiner un graphe d’implication correspondant `a ces choix. Montrer que l’on aboutit `a un conflit et en
d´eduire qu’une nouvelle clause peut ˆetre ajout´ee `a la formule initiale. Cela suffit-il `a conclure s’il existe ou
non des solutions telles que x1:= 1 et x7:= 0, uniquement par propagation des contraintes unitaires et sans
utiliser d’autres variables de d´ecision ?
1