mémoire genie civil presenté lors de la soutenance de mémoire
Algorithme DPLL
1. ALGORITHME DE RÉSOLUTION DE PROBLÈMES DE
SATISFACTION DE CONTRAINTES
Algorithme DPLL
Réalisée par : Sassi Elhem
1
2. PLAN
C’est quoi un algorithme ?
Problèmes SAT
Algorithmes complets
Définition de DPLL
Principe de DPLL
Fonctionnement de DPLL
Exemples
2
3. C’EST QUOI UN ALGORITHME
L'algorithmique est l'étude et la production de
règles et techniques qui sont impliquées dans la
définition et la conception d’algorithme , c'est-à-dire
de processus systématiques de résolution d'un
problème permettant de décrire précisément des
étapes pour résoudre un problème algorithmique .
3
4. En d'autres termes, un algorithme est une suite finie
et non-ambiguë d’instructions permettant de donner
la réponse à un problème.
4
5. PROBLÈME SAT
Actuellement, il existe plusieurs méthodes pour
résoudre les problèmes de type SAT.
Nous les regroupons en deux catégories:
5
6. les méthodes incomplètes:
basées sur le principe de «générer puis tester ».
Ils ont l'avantage de souvent pouvoir trouver
rapidement une solution quand elle existe, mais leur
inconvénient majeur est de ne pas pouvoir démontrer
6
8. DÉFINITION D’UN ALGORITHME COMPLET
Quand nous utilisons les méthodes complètes, cela ne veut
pas dire que nous explorons toutes les affectations
possibles. En effet, le nombre d'affectations pour une
instance comportant n variables est 2n . Pour réduire le
nombre d'affectations à tester, les méthodes exactes
génèrent les affectations en traitant les variables l'une après
l'autre.
8
9. Aussitôt qu'une affectation partielle engendre une clause
fausse pour le problème SAT alors il n'est plus nécessaire
de continuer à compléter cette affectation partielle
l'assignation de la variable représentée par le sommet à V
(resp. F). Une feuille de cette arbre représente donc une
affectation
9
10. DÉFINITION DE DPLL
L’algorithme DPLL, du nom de ses auteurs Davis,
Putnam, Logemann et Loveland constitue la base
des solveurs SAT modernes. Cet algorithme
s’applique sur une formule en forme conjonctive,
c’est-`a-dire sur un ensemble de clauses
10
12. L’algorithme DPLL va appliquer la propagation
unitaire `a chaque nœud de l’arbre de recherche.
De plus, si certaines variables se voient affectées
une valeur lors de ce processus, la propagation
unitaire leur est également appliquée, jusqu’`a ce
que plus aucune variable ne se voit affectée de
valeur par ce biais.
12
13. La propagation unitaire :
La propagation unitaire est un moyen de prendre en
compte l’affectation d’une variable `a une valeur
selon les deux principes suivants :
13
14. 1. Eliminer des clauses les littéraux faux vis-à-vis de
l’affectation courante des valeurs aux variables
14
15. 2. pour les clauses unitaires, c’est-`a-dire les clauses
possédant un seul littéral, forcer l’affectation de la variable
de façon `a rendre la clause vraie
15
17. Sorties :
Fonction DPLL(A) :
Appliquer la propagation unitaire, de manière itérative
jusqu’`a obtention d’un point fixe
Si A ne contient que des clauses satisfaites
renvoyer SAT
Si A contient la clause vide renvoyer UNSAT
Choisir une variable I
Renvoyer DP LL(A ∪ {I}) ∨ DP LL(A ∪ {¬I})
17
18. DPLL(φ, A) =
[Propager]: propager les contraintes unitaires
[Diagnostic]: Si formule vide renvoyer SAT
• si conflit backtrack
• explorer DPLL(φ[A = vrai], A ∪ {x = vrai})
[Choisir]: choisir un litteral x
• explorer DPLL(φ[A = faux], A ∪ {x = faux})
• ou si plus de backtrack possible, renvoyer
UNSAT
18
19. Application des règles :
Nous avons 4 règles à appliquer
1 ) Elimination des Tautologies
2) un littérale
3) littérale pure
4 ) Scission
19
20. ELIMINATION DES TAUTOLOGIES
Effacer les clauses de S qui sont des thaulogies.
Exemple
S = { (¬P ∨ Q ∨ P ∨ ¬R ) ∧ Q ∧ R}
S0 = {Q ∧ R}
On a S0 est insatisfiable si S est insatisfiable
20
21. UN LITTÉRALE
Si on a L∈ S ,l’obtention de S0 à partir de S se fait par
l’effacement les clauses contenant L . Si S0={} donc S
est satisfiable.
Exemple
S = {P ∨ Q ∨ ¬R , P ∨ ¬Q , ¬P , R , U}
On applique un littérale L = ¬P:
S0 = {P ∨ Q ∨ ¬R , P ∨ ¬Q , R , U}
On efface ¬L = P de clauses in S0
S00 = {Q ∨ ¬R , ¬Q , R , U}
21
22. LITTÉRALE PURE
L ∈ S est littérale pure si ¬L n’appartient pas à S
Si on a un littérale pure L ∈ S , on obtient S0 de S par
effacement des clauses contenant L.
S est insatisfiable si S0 est insatisfiable
Exemple
S = {P ∨ Q , P ∨ ¬Q , R ∨ Q , R ∨ ¬Q}
Appliquant littérale pure L = P:
S0 = {R ∨ Q , R ∨ ¬Q}
22
23. SCISSION
S = (C1 ∨ L) ∧ · ·· ∧ (Cm ∨ L)∧(D1 ∨ ¬L) ∧ · · · ∧ (Dm ∨ ¬L)∧Sr
Avec Ci and Di des clauses don’t L and ¬L n’apparait pas ,
et Sr est un ensemble de clauses don’t L and ¬L n’apparaient
pas . Donc on aura
S0 = C1 ∧ · ·· ∧ Cm ∧ Sr
S00 =D1 ∧ · · · ∧ Dm ∧ Sr
S est insatisfiable si S0 et S00 sont insatisfiable
23
24. Exemple
S = {P ∨ ¬Q ∨ R , ¬P ∨ Q , Q ∨ ¬R , ¬Q ∨ ¬R}
Apply Splitting on P
S0 = {¬Q ∨ R , Q ∨ ¬R , ¬Q ∨ ¬R}
S00 = {Q , Q ∨ ¬R , ¬Q ∨ ¬R}
24
If we can write S in the following form:Then we can obtain two sets S0 = C1 ∧ · ·· ∧ Cm ∧ Sr and S00 =D1 ∧ · · · ∧ Dm ∧ Sr. The set S is unsatisable i S0 and S00 areunsatisable. When we apply this rule we split the tree and wex L = > for the branch of S00 and L = ⊥ in the branch of S0
S = {P ∨ ¬Q ∨ R , ¬P ∨ Q , Q ∨ ¬R , ¬Q ∨ ¬R}Apply Splitting on PS0 = {¬Q ∨ R , Q ∨ ¬R , ¬Q ∨ ¬R}, P = ⊥S00 = {Q , Q ∨ ¬R , ¬Q ∨ ¬R}, P = >