ALGORITHME DE RÉSOLUTION DE PROBLÈMES DE
SATISFACTION DE CONTRAINTES
Algorithme DPLL
Réalisée par : Sassi Elhem
1
PLAN
 C’est quoi un algorithme ?
 Problèmes SAT
 Algorithmes complets
 Définition de DPLL
 Principe de DPLL
 Fonctionnement de DPLL
 Exemples
2
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
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
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
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
 Les méthodes complètes : dites énumératives.
7
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
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
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
PRINCIPE
DPLL: Recherche arborescente + Propagation unitaire
11
 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
 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
1. Eliminer des clauses les littéraux faux vis-à-vis de
l’affectation courante des valeurs aux variables
14
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
FONCTIONNEMENT
Entrés : des clauses
16
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
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
 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
 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
 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
 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
 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
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
EXEMPLE
 S = (P ∨ Q ) ∧ (P ∨ ¬Q ) ∧ (¬P ∨ Q ) ∧ (¬P ∨ ¬R )
25
RÉFÉRENCES
 https://fr.wikipedia.org/wiki/Algorithme_DPLL
 http://www.dis.uniroma1.it/~liberato/ar/dpll/dpll.html
 https://www.youtube.com/watch?v=ENHKXZg-a4c
26

Algorithme DPLL

  • 1.
    ALGORITHME DE RÉSOLUTIONDE PROBLÈMES DE SATISFACTION DE CONTRAINTES Algorithme DPLL Réalisée par : Sassi Elhem 1
  • 2.
    PLAN  C’est quoiun algorithme ?  Problèmes SAT  Algorithmes complets  Définition de DPLL  Principe de DPLL  Fonctionnement de DPLL  Exemples 2
  • 3.
    C’EST QUOI UNALGORITHME  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éessur 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
  • 7.
     Les méthodescomplètes : dites énumératives. 7
  • 8.
    DÉFINITION D’UN ALGORITHMECOMPLET 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 affectationpartielle 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
  • 11.
    PRINCIPE DPLL: Recherche arborescente+ Propagation unitaire 11
  • 12.
     L’algorithme DPLLva 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 propagationunitaire : 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 desclauses les littéraux faux vis-à-vis de l’affectation courante des valeurs aux variables 14
  • 15.
    2. pour lesclauses 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
  • 16.
  • 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 desrègles : Nous avons 4 règles à appliquer 1 ) Elimination des Tautologies 2) un littérale 3) littérale pure 4 ) Scission 19
  • 20.
     ELIMINATION DESTAUTOLOGIES  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
  • 25.
    EXEMPLE  S =(P ∨ Q ) ∧ (P ∨ ¬Q ) ∧ (¬P ∨ Q ) ∧ (¬P ∨ ¬R ) 25
  • 26.

Notes de l'éditeur

  • #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 are unsatisable. When we apply this rule we split the tree and we x 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 P S0 = {¬Q ∨ R , Q ∨ ¬R , ¬Q ∨ ¬R}, P = ⊥ S00 = {Q , Q ∨ ¬R , ¬Q ∨ ¬R}, P = >