PC6 - Départements

publicité
École polytechnique
Promotion 2012
Majeure informatique
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éthode 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 égale à faux, cette clause est détectée (ce qui
conduit soit à un backtrack soit à renvoyer unsat si plus de backtrack n’est possible).
(**) si l’affectation courante des variables rend une clause égale à vrai, cette clause est détectée et
supprimée 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 à la place de propagation, à
condition de rajouter une condition de terminaison adéquate.
2. On suppose que l’on maintient, pour chaque clause C de la formule, deux pointeurs x1 (C) 6= x2 (C),
appelés littéraux surveillés, qui vérifient la propriété suivante :
pour i ∈ {1, 2}, xi (C) pointe vers un littéral contenu dans C qui n’est pas faux dans l’affectation
courante des variables (ce littéral peut être soit vrai soit non affecté).
(***)
On suppose de plus que l’on maintient, pour chaque variable x, une liste de pointeurs vers les clauses dont
x ou x̄ est un littéral surveillé.
Donner une variante de l’algorithme DPLL, utilisant la stratégie de la question 1., et qui utilise ces
structures de données. On prendra soin de vérifier que l’algorithme préserve les invariants (*) et (***).
3. Quel est l’intérêt de cette stratégie ?
2. Algorithme DPLL et Unique Implication Points
On se propose dans cette exercice d’étudier sur un exemple la notion de graphe d’implication, et la
manière dont elle peut être utilisée pour l’apprentissage
de clauses.
V
On considère la formule F définie par F = Ci ou les Ci sont les clauses suivantes :
C1 = x̄1 ∨ x̄2
;
C2 = x2 ∨ x3 ∨ x8
;
C3 = x̄3 ∨ x̄4
C6 = x̄4 ∨ x̄8
;
C7 = x̄6 ∨ x7 ∨ x9
;
C8 = x1 ∨ x7 ∨ x10
;
C4 = x6 ∨ x5 ∨ x4
;
;
C5 = x̄1 ∨ x̄5 ∨ x7
C9 = x̄7 ∨ x9 ∨ x̄10
;
;
C10 = x̄9 ∨ x10
Pour une formule donnée sous forme de CNF et un ensemble d’affectations de variables de décisions
successives, on définit, pour chaque propagation de contraintes unitaires, ce qu’on appelle le graphe d’implication. Chaque sommet du graphe d’implication correspond à l’affectation d’une variable. Un sommet
porte l’étiquette xi : k (ou x̄i : k) si la variable xi a été affectée à vraie (ou à faux) après k affectations de
variables de décisions. Il existe une arête (étiquetée par Cm ) entre xi : k et xj : l (avec k ≤ l) si à l’étape l,
la propagation des clauses unitaires conduit à déduire l’affectation de xj en utilisant Cm . Enfin il existe un
sommet spécial étiqueté κ qui correspond à un conflit dû à une clause Cm . Dans ce cas il existe une arête
étiquetée Cm de xi ou x̄i à κ si la variable xi apparaı̂t dans Cm .
1. On considère la formule F définie ci-dessus et les choix successifs suivants : x1 := 1, x7 := 0, x9 := 0.
Dessiner un graphe d’implication correspondant à ces choix. Montrer que l’on aboutit à un conflit et en
déduire qu’une nouvelle clause peut être ajoutée à la formule initiale. Cela suffit-il à 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écision ?
1
2. Pour améliorer l’algorithme DPLL, on introduit les Unique Implication Points. Supposons que l’on ait
atteint un conflit et soit x : k, la dernière affectation d’une variable de décision effectuée, un UIP est un
sommet du graphe d’implication qui se trouve sur tous les chemins orientés de x : k à κ et qui est à distance
minimale de κ pour cette propriété. Identifier un UIP sur le graphe d’implication de la question précédente.
En vous appuyant sur ce sommet, en déduire une nouvelle clause que la formule doit satisfaire. Cela suffit-il
à conclure s’il existe ou non des solutions telles que x1 := 1 et x7 := 0 uniquement par progagation des
contraintes unitaires et sans utiliser d’autres variables de décision ?
3. Modélisation grâce à SAT
Pour illustrer la problématique
de la modélisation avec SAT, on se propose d’écrire des formules en CNF
Pn
équivalentes à la condition j=1 xj ≤ 1, où xi ∈ {0, 1}, pour tout i.
1. Formuler cette condition sous la forme d’une CNF comportant O(n2 ) clauses.
2. Trouver (et prouver) une formule en CNF portant sur les xi et sur n variables auxiliaires, dont la
satisfiabilité quand les xi sont fixés est équivalente à la formule de départ. On demande que la formule
comporte O(n) clauses, de longueur bornée.
3. Même question qu’en 2., mais avec seulement log(n) variables auxiliaires et une formule de longueur
O(n log(n)).
4. Bounded model checking
On modélise un système qu’on veut vérifier de la façon suivante : l’état du système est représenté par un
vecteur s = (s1 , . . . , sd ) de dimension finie d à coordonnées booléennes. La propriété à vérifier est donnée
par une formule booléenne P (s), vrai si l’état s est bon. De même on se donne une formule I(s) vraie si
l’état s est un état initial possible. Enfin on se donne une formule T (s, s0 ) vraie si le système peut faire une
transition de l’état s à l’état s0 .
1. Écrire une formule (à n + 1 variables) qui est satisfiable s’il existe une exécution qui fait passer le
système d’un état initial valide à un état mauvais en n étapes. En déduire un algorithme qui vérifie s’il existe
une telle exécution fautive constituée d’au plus n étapes.
2. Donner une formule dont la satisifabilité est équivalente au fait qu’une séquence de n étapes visitant
de bons états puisse être suivie d’une étape conduisant à un mauvais état. Que conclure s’il existe un n telle
que ni cette formule ni celle de la question précédente ne sont satisfiables ?
3. Écrire une formule E(s, s0 ) vraie si et seulement si s 6= s0 .
4. Déduire des questions précédentes un algorithme de validation complet du système vis à vis de la
propriété P : il s’agit de vérifier que la propriété P est vraie pour tout état s atteignable à partir d’un état
initial par une suite de transitions du système.
2
Téléchargement