Langages de Sp´ecification Partie 1: Sp´ecifications en logique propositionnelle
Solveurs SAT
Algorithme DPLL
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 interpr´etations
possibles de x.
IIci, on se rend compte tout de suite que la valuation (partielle)
V(x)7! vrai satisfait la formule, peu importe l’interpr´etation des
autres propositions.
Il’algorithme DPLL propose des crit`eres pour choisir quelles variables
tester en premier.
Langages de Sp´ecification Partie 1: Sp´ecifications en logique propositionnelle
Solveurs SAT
Algorithme DPLL
Interpr´etation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur vrai `a xou la valeur faux.
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.
Langages de Sp´ecification Partie 1: Sp´ecifications en logique propositionnelle
Solveurs SAT
Algorithme DPLL
Interpr´etation Partielle
D´efinition
Une interpr´etation partielle est un assignement not´e x/1ou x/0,qui
signifie que assigne la valeur vrai `a xou la valeur faux.
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.
Langages de Sp´ecification Partie 1: Sp´ecifications en logique propositionnelle
Solveurs SAT
Algorithme DPLL
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]=>.
Langages de Sp´ecification Partie 1: Sp´ecifications en logique propositionnelle
Solveurs SAT
Algorithme DPLL
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 / 29 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 !