MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
L’algorithme DPLL
1 Introduction
On rappelle que le probl`eme SAT est le suivant : ´etant donn´ee une formule CNF (conjonc-
tive normal form) du calcul propositionnel `a nvariables, existe-t-il une valuation des n
variables qui satisfait la formule ? Ce probl`eme est NP-Complet (Th´eor`eme de Cook). Un
algorithme na¨ıf consiste `a construire la table de v´erit´e de la formule.
L’algorithme DPLL (Davis-Putnam-Logemann-Loveland) est une proc´edure de d´ecision
de SAT. Un objectif de ce projet est d’impl´ementer (par versions successives) cet algo-
rithme en OCaml. Une autre part du projet consiste `a prouver certaines propri´et´es de
l’algorithme et des r´esultats en rapport avec la probl´ematique. Le sujet est organis´e en sec-
tions th´ematiques, qui suivent une progression algorithmique et technique. Chaque section
est compos´ee d’explications, de questions (qui ne n´ecessitent pas d’impl´ementation) et/ou
de consignes d’impl´ementation. La Section 6 indique les fonctions oertes par les librairies
fournies. La Section 7 donne des consignes g´en´erales.
2 Mise en forme CNF
En pratique, les formules dont on veut d´ecider la satisfiabilit´e ne sont pas en forme CNF
et doivent donc ˆetre converties en instances de SAT. Une solution consiste `a la convertir
en une formule CNF logiquement ´equivalente.
Question 1 Donner un algorithme de mise en forme CNF qui pr´eserve l’´equivalence lo-
gique. D´emontrer que dans le pire cas, la taille de la formule croˆıt de fa¸con exponentielle
(par convention, la taille d’une formule est son nombre de litt´eraux).
2.1 Transformation de Tseitin
L’´equivalence logique sur la formule obtenue est inutilement contraignante. On peut en
eet se contenter d’une formule ´equisatisfiable (satisfiable si et seulement si la formule
d’origine l’ est). Il existe de telles transformations et qui n’augmentent que lin´eairement la
taille de l’entr´ee. L’une d’entre elle est la transformation de Tseitin (1968).
Le principe est d’associer `a chaque sous-formule de Fde la forme ¬Aou (AαB),α
{,,,}une variable propositionnelle fraˆıche x(i.e. n’apparaissant pas dans F), qui
!d´efinit "cette sous-formule (on parle de definitional conjonctive normal form). Dans F,
la sous-formule est ainsi remplac´ee par cette variable, et la contrainte (x(AαB)) (mise
en CNF) est ajout´ee par conjonction.
1
MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
a b
c d
¬e
Illustrons cette transformation dans le cas o`u Fest
(ab)((cd)¬e), ce que l’on peut repr´esenter
par l’arbre ci-contre.
On associe respectivement x1,x2,x3et x4aux sous-
formules ab,cd,x2¬eet x1x3. Puis, on met
en forme CNF, avec les m´ethodes traditionnelles la
conjonction de x1ab,x2cd,x3x2¬e
et x4x1x3. La transformation de Tseitin Test
d´efinie par T(F)=xFT’(F) avec :
T’(F)=
true si Fest une variable
T’(G)Cnf(xF¬xG) si F=¬G
T’(G)T’(H)Cnf(xFxGxH) si F=GH
T’(G)T’(H)Cnf(xFxGxH) si F=GH
T’(G)T’(H)Cnf(xF(xGxH)) si F=GH
T’(G)T’(H)Cnf(xF(xGxH)) si F=GH
et xF=%Fsi F est une variable
variable fraˆıche sinon
Pour simplifier le raisonnement, on suppose que toutes les n´egations de la formule ne
s’appliquent qu’`a ses variables.
Question 2 Montrez que Tne fait croˆıtre la taille de la formule que lin´eairement.
Question 3 Montrez que Fet T(F) ne sont pas ´equivalentes mais ´equisatisfiables. In-
dication. On pourra chercher une condition n´ecessaire et susante pour la propri´et´e : la
valuation ϕsatisfait T!(F).
Remarque : Dans la suite, on repr´esente la formule CNF F=&iICide la fa¸con suivante :
chaque clause Ciest repr´esenee par l’ensemble de ses litt´eraux, et Fpar l’ensemble de ses
clauses. Dans l’impl´ementation, des listes seront propos´ees (voir Section 6).
2.2 Benchmarks
Pour comparer l’ecacit´e des di´erents algorithmes que vous programmerez, il est n´ecessaire
de disposer de formules complexes. Un moyen est de g´en´erer al´eatoirement des formules
d’une taille donn´ee, mais il est dicile de pr´evoir leur satisfiabilit´e et la dicult´e d’une telle
d´ecision. Enfin, les probl`emes qu’encodent de telles formules pr´esentent moins d’inerˆet que
des vrais probl`emes (historiques, ou industriels).
Dans les librairies fournies, deux fonctions vous sont donn´ees, qui g´en`erent des formules
complexes, structur´ees, et dont on connaˆıt (pour certaines) la satisfiabilit´e. Elles sont
d´ecrites dans les paragraphes suivants. D’autres benchmarks existent et sont disponibles
sur internet. Ils utilisent un format de CNF standard dans la communaut´e des SAT-
comp´etiteurs (DIMACS). Attention, la taille des instances peut ˆetre impraticable pour
une impl´ementation ealis´ee dans le temps imparti.
2
MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
Test de primalit´e Les formules de la logique propositionnelle peuvent ˆetre mises en cor-
respondance avec les circuits digitaux, et peuvent donc encoder des fonctions arithm´etiques
complexes. L’algorithme de test de primalit´e d’un naturel donn´e peut ˆetre encod´e par un
tel circuit. La fonction prime de la librairie g´en`ere la formule associ´ee. La formule prime n
est une tautologie si et seulement si nest premier.
Nombres de Ramsey Le nombre de Ramsey Rs,t est d´efini comme le nombre d’invit´es
minimum qu’il faut inviter `a une fˆete pour qu’au moins spersonnes se connaissent ou qu’au
moins tne se connaissent pas. Le probl`eme peut se traduire en terme de graphes : c’est le
nombre minimum de sommets qu’un graphe simple non orient´e doit comporter pour qu’il
contienne une s-clique (sous-graphe complet `a ssommets) ou un t-stable (sous-graphe `a t
sommets sans arˆete). Les nombres de Ramsey ne sont pas tous connus. Dans la librairie,
la fonction ramsey vous permet de construire des tautologies : (ramsey s t n) est une
tautologie si et seulement si Rs,t n. La formule construit tous les graphes `a nsommets
et v´erifie qu’ils satisfont les contraintes sur les arˆetes. Google est votre ami pour trouver
les valeurs de set tpour lesquels on connaˆıt la valeur ou un encadrement de Rs,t.
3 L’algorithme DP
La version initiale de l’algorithme est propos´ee en 1960 par Davis et Putnam (algorithme
DP), et une am´elioration est apport´ee en 1962 par Davis, Logemann et Loveland (algo-
rithme DLL ou DPLL, voir Section 4). L’id´ee de base de DP est d’appliquer des r`egles
de transformations sur la formule d’entr´ee Fen CNF, qui pr´eservent sa satisfiabilit´e et sa
forme clausale. Les trois r`egles sont les suivantes :
UP (Unit propagation) Si Fcontient une clause unitaire (Ci={l}), toutes les clauses
contenant le litt´eral lpeuvent ˆetre supprim´ees et le litt´eral compl´ement de lpeut ˆetre
supprim´e de chaque clause le contenant.
PL (Pure literal) Si un litt´eral ln’apparaˆıt que positivement (ou n´egativement) dans F,
toutes les clauses le contenant peuvent ˆetre supprim´ees.
R(Resolution) R´esolution entre deux clauses, par coupure sur un litt´eral l(cf. cours).
Question 4 Montrez que les r`egles UP et PL pr´eservent la satisfiabilit´e de la formule (la
preuve pour R a d´ej`a ´et´e faite en cours).
L’algorithme consiste `a appliquer les r`egles UP et PL tant que possible, avant d’appliquer
la r`egle R, sur un litt´eral l, en produisant toutes les r´esolvantes possibles (approche par
saturation). On d´ecide ensuite r´ecursivement de la satisfiabilit´e de ce nouvel ensemble de
clauses. Appliquer R n´ecessite de choisir un litt´eral sur lequel r´esoudre. Un crit`ere de choix
possible est de minimiser l’augmentation du nombre de clauses r´esultantes. L’algorithme
s’arrˆete d`es que la formule est vide ou qu’elle contient la clause vide.
Impl´ementation 1 (Algorithme DP)
Impl´ementez l’algorithme DP. Vous veillerez `a la d´efinition de fonctions auxiliaires bien
choisies pour ne pas alourdir la fonction principale. Par exemple, vous ´ecrirez une fonction
par r`egle de transformation de formule.
Vous ´ecrirez une fonction dp rendant un r´esultat bool´een qui d´etermine la satisfiabilit´e
d’une formule sous forme CNF.
3
MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
– De mˆeme, vous ´ecrirez une fonction satdp : prop formula -> bool qui prend en
entr´ee une formule quelconque (non CNF).
Comparez en ecacit´e votre algorithme avec l’algorithme na¨ıf (fonction satisfiable
donn´ee dans la librairie).
4 L’algorithme DPLL
L’am´elioration de DP en DPLL consiste `a remplacer l’utilisation de la r`egle R par une
strat´egie d’exploration avec backtracking. Dans l’algorithme DPLL, le backtracking est
assez simple (chronologique). Une strat´egie plus ecace fera l’objet de la Section 5.
4.1 Variables de d´ecision
Une notion d’aectation de variable est utilis´ee dans (les versions ecaces de) DPLL.
Plusieurs notions utilis´ees dans DP sont ajust´ees pour int´egrer la notion d’aectation.
Nous y reviendrons en Sous-Section 4.2.
Lorsque les deux r`egles UP et PL ne s’appliquent plus, une variable xde la formule est
choisie, que l’on appellera variable de d´ecision, `a laquelle sera aect´ee une valeur de v´erit´e.
La formule Fest d’abord SAT-d´ecid´ee (par DPLL) dans un contexte o`u la variable x`a
´et´e aect´ee `a faux. Si Fn’est pas satisfiable dans ce contexte, il faut encore d´ecider si ce
n’est pas le cas lorsque xvaut vrai. Les aectations ne modifient pas la composition de la
formule, mais sont une information annexe, repr´esentant la construction progressive de la
valuation satisfaisant la formule.
4.2 R´evision de UP
La notion de variable de d´ecision vient modifier l´eg`erement quelques notions introduites
en Section 3. Une aectation ne modifie pas la structure de la formule, mais elle vient
modifier la notion de clause unitaire. Les clauses unitaires comprennent maintenant en
plus les clauses dont un seul litt´eral n’est pas aect´e et tous les autres sont aect´es `a faux.
Ainsi, les clauses {x}et {x, ¬y, z}sont toutes deux unitaires si ya ´et´e aect´ee `a vrai,z`a
faux, et xn’est pas encore aect´ee.
Les clauses unitaires devant ˆetre satisfaites, elles induisent des aectations. Par exemple,
avec les mˆemes aectations que plus haut, pour satisfaire {x, ¬y, z}, on doit aecter vrai
`a x. Ainsi, on ajoute `a la notion de unit propagation pr´ec´edemment efinie les aectations
induites. Pour autant, les variables concern´ees ne sont pas des variables de d´ecision.
4.3 Backtracking
L’historique des aectations est trac´e dans une structure de donn´ees auxiliaire (plusieurs
choix sont possibles : pile, arbre. . .). Pour illustrer le propos, on choisit ici un arbre. L’arbre
contient pour chaque aectation la variable concern´ee et sa valeur de v´erit´e courante. Plus
formellement, une aectation est la donn´ee d’une variable xet d’une valeur de v´erit´e
v{0,1}(repr´esentant faux et vrai). On note une aectation x=v.
4
MIT 1re ann´ee - 2011/12 Module Logique et Calculabilit´e
x
y
conflit1 z
conflit2 conflit3
y
solution
Ci-contre, un exemple d’exploration des valuations
possibles pour une formule contenant (au moins) les
variables x, y et z. Une branche gauche (resp. droite)
de l’arbre repr´esente une aectation `a 0(resp. 1) de
la variable port´ee par le noeud. Seules les variables
de d´ecision ont ´et´e repr´esenees.
On appelle conflit une clause de la formule dont tous
les litt´eraux sont falsifi´es. Lors d’une d´etection de
conflit, le backtracking a lieu : on remonte dans l’his-
torique `a la variable de d´ecision la plus r´ecemment
aect´ee. Dans l’exemple, lors du premier conflit, la
derni`ere variable de d´ecision aect´ee est y. Lors du
conflit 3, il s’agit de z, mais les deux branches ont d´ej`a ´et´e explor´ees pour zet y, il faut
donc remonter jusqu’`a la variable de d´ecision x. Notons qu’entre deux aectations peuvent
avoir lieu des utilisations des r`egles UP et PL.
Impl´ementation 2 (DPLL)
Proposez un type permettant de g´erer l’aectation de variable. Pr´esentez la stucture de
donn´ee choisie pour g´erer l’historique, ainsi que son utilisation. Comme pr´ec´edemment,
vous veillerez `a ´ecrire des fonctions auxiliaires (par exemple une pour le backtrack).
Vous ´ecrirez une fonction dpll `a r´esultat bool´een impl´ementant DPLL. La formule pass´ee
en param`etre est en CNF.
Vous ´ecrirez une fonction satdpll : prop formula -> bool d´ecidant le probl`eme pour
une formule quelconque.
Vous comparerez (en ecacit´e) votre algorithme avec satdp.
5 Optimisation NCB
Pour des instances de SAT g´en´er´ees al´eatoirement, le backtracking chronologique est rela-
tivement ecace. En revanche, pour des probl`emes r´eels (c’est `a dire des formules struc-
tur´ees), il ne sut plus. Ainsi, les SAT-solvers actuels bas´es sur DPLL int`egrent un
m´ecanisme de backtracking plus sophistiqu´e : le backtracking non-chronologique (NCB).
Analyse des conflits Cette strat´egie d’exploration permet d’identifier les aectations
qui sont `a l’origine des conflits, et de remonter dans l’historique jusqu’`a une des causes du
conflit (la variable en cause la plus r´ecemment aect´ee). Ainsi, les sous-arbres menant au
mˆeme conflit ne seront pas explor´es inutilement.
Lors d’un conflit, il est possible de trouver une clause qui en est `a l’origine (appell´ee clause
conflictuelle). Une propri´et´e d’une clause conflictuelle est que si elle n’est pas satisfaite,
alors le conflit aura lieu. Cette clause peut ˆetre en plus ajout´ee `a la formule `a SAT-d´ecider
(la clause correspondante est apprise pour faire naˆıtre les conflits plus ot). Une clause
conflictuelle ne doit inclure que des variables de d´ecision (les applications de UP et PL ne
sont que cons´equence des aectations).
5
1 / 8 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 !