INFO-F-302, Cours d’Informatique Fondamentale
Mod´elisation de Probl`emes en SAT
Algorithme DPLL
176 Algorithme DPLL
Ipropos´e par M. Davis, H. Putman, G. Logemann et D. Loveland en
1962.
Iprincipe de base : engendrer et tester des solutions partielles
IPar exemple, pour tester la satisfiabilit´e de
(x_y_z)^(x_¬y_¬z), au lieu d’essayer toutes les valuations
possibles de x,yet z, on peut d’abord essayer les interpetations
possibles de x.
IIci, on se rend compte tout de suite que la valuation (partielle)
V(x)7! 1satisfait la formule, peu importe l’interpetation des
autres propositions.
Il’algorithme DPLL propose des crit`eres pour choisir quelles variables
tester en premier.
INFO-F-302, Cours d’Informatique Fondamentale
Mod´elisation de Probl`emes en SAT
Algorithme DPLL
177 Interpetation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur 1`a xou la valeur 0.
Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la
formule. Par exemple, la formule (x_y)^(¬x_z_¬y)se simplifie en
z_¬ysous l’interpr´etation partielle x/1.
D´efinissons de mani`ere formelle cette notion.
INFO-F-302, Cours d’Informatique Fondamentale
Mod´elisation de Probl`emes en SAT
Algorithme DPLL
177 Interpetation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur 1`a xou la valeur 0.
Lorsqu’on a choisi la valeur d’une proposition, on peut simplifier la
formule. Par exemple, la formule (x_y)^(¬x_z_¬y)se simplifie en
z_¬ysous l’interpr´etation partielle x/1.
D´efinissons de mani`ere formelle cette notion.
INFO-F-302, Cours d’Informatique Fondamentale
Mod´elisation de Probl`emes en SAT
Algorithme DPLL
178 Simplification sous une interpr´etation partielle
Etant donn´ee une clause Cet une interpr´etation partielle x/bo`u
b2{0,1}, la formule C[x/b]est obtenue selon la r`egle suivante :
ISi Cne contient pas xou ¬x,alorsC[x/b]=C
ISinon si Cne contient que xou que ¬x, alors on consid`ere les cas
suivants :
1. C=xet b=1,alorsC[x/b]=>
2. C=xet b=0,alorsC[x/b]=?
3. C=¬xet b=0,alorsC[x/b]=>
4. C=¬xet b=1,alorsC[x/b]=?
Isinon si Ccontient xet b=1ou Ccontient ¬xet b=0,alors
C[x/b]=>
Isinon on retire de Cles occurences de xou de ¬x
Si =Vn
i=1 Ciest une conjonction de clauses, alors [x/b]=?si il existe
une clause Citelle que Ci[x/b]=?, sinon [x/b]=Vi:Ci[x/b]6=>Ci[x/b]
(on simplifie toutes les clauses et on retire celle qui deviennent ´egales `a
>). Si toutes les clauses se simplifient en >,alors[x/b]=>.
INFO-F-302, Cours d’Informatique Fondamentale
Mod´elisation de Probl`emes en SAT
Algorithme DPLL
179 Remarque et exemples
Remarque
[x/b]est une formule, on peut donc lui r´eappliquer une autre
interpr´etation partielle [y/b0]et obtenir une nouvelle formule
([x/b])[y/b0]qu’on notera simplement [x/b][y/b0].
Exemples
Soit a=x_y_zet b=x_¬y_¬z.Alors:
Ia[x/1] =
>,b[x/1] = >,(a^b)[x/1] = >
Ib[y/1] = x_¬z
Ib[z/1] = x_¬y
Ia[x/0] = y_z
Ib[x/0] = ¬y_¬z
I(a^b)[x/0] = (y_z)^(¬y_¬z)
I(a^b)[x/0][y/0] = z
I(a^b)[x/0][y/0][z/1] = >
1 / 54 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 !