Satisfiabilité Propositionnelle - Les

publicité
Satisfiabilité Propositionnelle
Frederic Koriche
Licence Informatique L3
Algorithmique Logique: partie I
Université Montpellier II, France
[email protected]
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Outline
1
Logique Propositionnelle (Rappels)
Syntaxe
Sémantique
Satisfiabilité
2
Problème de Satisfiabilité
Forme Clausale
Complexité
3
Algorithmes de Satisfiabilité
Algorithme Davis-Putnam
Algorithme GSAT
4
Conclusion
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Vocabulaire
Un ensemble fini {x1 , · · · , xn } de variables propositionnelles
Langage
Le langage propositionnel Ln est le plus petit ensemble vérifiant :
1
1 ∈ Ln
2
xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn }
3
si F ∈ Ln alors ¬F ∈ Ln
4
si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln
Abréviations
Les autres connecteurs sont dérivés à partir des connecteurs de base
abréviation
0
F∨G
F→G
Algorithmique Logique I
formule
¬1
¬(¬F ∧ ¬G)
¬F ∨ G
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Vocabulaire
Un ensemble fini {x1 , · · · , xn } de variables propositionnelles
Langage
Le langage propositionnel Ln est le plus petit ensemble vérifiant :
1
1 ∈ Ln
2
xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn }
3
si F ∈ Ln alors ¬F ∈ Ln
4
si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln
Abréviations
Les autres connecteurs sont dérivés à partir des connecteurs de base
abréviation
0
F∨G
F→G
Algorithmique Logique I
formule
¬1
¬(¬F ∧ ¬G)
¬F ∨ G
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Vocabulaire
Un ensemble fini {x1 , · · · , xn } de variables propositionnelles
Langage
Le langage propositionnel Ln est le plus petit ensemble vérifiant :
1
1 ∈ Ln
2
xi ∈ Ln pour toute variable xi dans {x1 , · · · , xn }
3
si F ∈ Ln alors ¬F ∈ Ln
4
si F ∈ Ln et G ∈ Ln alors (F ∧ G) ∈ Ln
Abréviations
Les autres connecteurs sont dérivés à partir des connecteurs de base
abréviation
0
F∨G
F→G
Algorithmique Logique I
formule
¬1
¬(¬F ∧ ¬G)
¬F ∨ G
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Interprétation
Une interprétation ou état est un tuple x ∈ {0, 1}n
Satisfaction
Relation |= entre états et formules vérifiant :
1
x |= 1
2
x |= xi ssi xi = 1
3
x |= ¬F ssi x 6|= F
4
x |= (F ∧ G) ssi x |= F et x |= G
Modèle
Un état x est un modèle de F ssi x |= F
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Interprétation
Une interprétation ou état est un tuple x ∈ {0, 1}n
Satisfaction
Relation |= entre états et formules vérifiant :
1
x |= 1
2
x |= xi ssi xi = 1
3
x |= ¬F ssi x 6|= F
4
x |= (F ∧ G) ssi x |= F et x |= G
Modèle
Un état x est un modèle de F ssi x |= F
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Interprétation
Une interprétation ou état est un tuple x ∈ {0, 1}n
Satisfaction
Relation |= entre états et formules vérifiant :
1
x |= 1
2
x |= xi ssi xi = 1
3
x |= ¬F ssi x 6|= F
4
x |= (F ∧ G) ssi x |= F et x |= G
Modèle
Un état x est un modèle de F ssi x |= F
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Satisfiabilité
Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est
dite insatisfiable
Validité
Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est
dite invalide
Conséquence : F |= G ssi F → G est valide
Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide
Lemme de connexion
Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable
Conséquence : F |= G ssi F ∧ ¬G est insatisfiable
Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Satisfiabilité
Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est
dite insatisfiable
Validité
Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est
dite invalide
Conséquence : F |= G ssi F → G est valide
Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide
Lemme de connexion
Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable
Conséquence : F |= G ssi F ∧ ¬G est insatisfiable
Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Syntaxe
Sémantique
Satisfiabilité
Satisfiabilité
Une formule F de Ln est satisfiable s’il existe un modèle de F dans {0, 1}n . Sinon F est
dite insatisfiable
Validité
Une formule F de Ln est valide si tout état de {0, 1}n est un modèle de F. Sinon F est
dite invalide
Conséquence : F |= G ssi F → G est valide
Equivalence : F ≡ G ssi (F → G) ∧ (G → F) est valide
Lemme de connexion
Pour toute formule formule F de Ln , F est valide ssi ¬F est insatisfiable
Conséquence : F |= G ssi F ∧ ¬G est insatisfiable
Equivalence : F ≡ G ssi (F ∧ ¬G) ∨ (G ∧ ¬F) est insatisfiable
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Outline
1
Logique Propositionnelle (Rappels)
Syntaxe
Sémantique
Satisfiabilité
2
Problème de Satisfiabilité
Forme Clausale
Complexité
3
Algorithmes de Satisfiabilité
Algorithme Davis-Putnam
Algorithme GSAT
4
Conclusion
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Clauses
Un littéral est une variable xi ou sa négation xi .
Une clause est une disjonction de littéraux
Une clause de Horn est une disjonction contenant au plus un littéral positif
Example
type
fait
contrainte
règle
règle disjonctive
exemple
x1
x1 ∧ x2 → 0
x1 ∧ x2 → x3
x1 ∧ x2 → x3 ∨ x4
clause
x1
(x1 ∨ x2 )
(x1 ∨ x2 ∨ x3 )
(x1 ∨ x2 ∨ x3 ∨ x4 )
catégorie
Horn
Horn
Horn
Clause
Théories
Une théorie clausale ou formule en forme normale conjonctive (CNF) est une
conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Clauses
Un littéral est une variable xi ou sa négation xi .
Une clause est une disjonction de littéraux
Une clause de Horn est une disjonction contenant au plus un littéral positif
Example
type
fait
contrainte
règle
règle disjonctive
exemple
x1
x1 ∧ x2 → 0
x1 ∧ x2 → x3
x1 ∧ x2 → x3 ∨ x4
clause
x1
(x1 ∨ x2 )
(x1 ∨ x2 ∨ x3 )
(x1 ∨ x2 ∨ x3 ∨ x4 )
catégorie
Horn
Horn
Horn
Clause
Théories
Une théorie clausale ou formule en forme normale conjonctive (CNF) est une
conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Clauses
Un littéral est une variable xi ou sa négation xi .
Une clause est une disjonction de littéraux
Une clause de Horn est une disjonction contenant au plus un littéral positif
Example
type
fait
contrainte
règle
règle disjonctive
exemple
x1
x1 ∧ x2 → 0
x1 ∧ x2 → x3
x1 ∧ x2 → x3 ∨ x4
clause
x1
(x1 ∨ x2 )
(x1 ∨ x2 ∨ x3 )
(x1 ∨ x2 ∨ x3 ∨ x4 )
catégorie
Horn
Horn
Horn
Clause
Théories
Une théorie clausale ou formule en forme normale conjonctive (CNF) est une
conjonction de clauses. Une théorie de Horn est une conjonction de clauses de Horn
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Problème S AT
Le problème de satisfiabilité des théories clausales est NP-complet
Donnée : une théorie clausale F du langage Ln
Question : F est-elle satisfiable ?
Problème U N S AT
Le problème d’insatisfiabilité des théories clausales est coNP-complet
Donnée : une théorie clausale F du langage Ln
Question : F est-elle insatisfiable ?
Problème H ORN -S AT
Le problème de satisfiabilité d’une théorie de Horn F du langage Ln est linéaire en la
taille (nombre d’occurrences de littéraux) de F
Problème H ORN -U N S AT
Le problème d’insatisfiabilité d’une théorie de Horn F du langage Ln de variables est
linéaire en la taille de F
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Forme Clausale
Complexité
Problème S AT
Le problème de satisfiabilité des théories clausales est NP-complet
Donnée : une théorie clausale F du langage Ln
Question : F est-elle satisfiable ?
Problème U N S AT
Le problème d’insatisfiabilité des théories clausales est coNP-complet
Donnée : une théorie clausale F du langage Ln
Question : F est-elle insatisfiable ?
Problème H ORN -S AT
Le problème de satisfiabilité d’une théorie de Horn F du langage Ln est linéaire en la
taille (nombre d’occurrences de littéraux) de F
Problème H ORN -U N S AT
Le problème d’insatisfiabilité d’une théorie de Horn F du langage Ln de variables est
linéaire en la taille de F
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
Outline
1
Logique Propositionnelle (Rappels)
Syntaxe
Sémantique
Satisfiabilité
2
Problème de Satisfiabilité
Forme Clausale
Complexité
3
Algorithmes de Satisfiabilité
Algorithme Davis-Putnam
Algorithme GSAT
4
Conclusion
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
F
x1 = 1
x1 = 0
x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 )
x2 = 1
x2 = 0
x4 ∧ x3 ∧ x3
x4 = 0
x3 ∧ x3
x4 ∧ x3 ∧ x4
x2
x2 = 1
1
x3 = 0
Principe
Recherche en profondeur d’abord dans l’espace
{0, 1}n
Chaque noeud interne de l’arbre de recherche
est une théorie clausale
Chaque branche est étiquetée par une affectation
de valeur à une variable.
0
Chaque feuille est étiquetée par 0 ou 1
x3 = 1
0
Méthode
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x 1 ∨ x 2 ∨ x3
x1 ∨ x2 ∨ x4
Chaque itération de l’algorithme contient trois phases :
Projeter la formule sur l’affectation courante
Propager la contrainte booléenne
Choisir une variable de branchement
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
F
x1 = 1
x1 = 0
x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 )
x2 = 1
x2 = 0
x4 ∧ x3 ∧ x3
x4 = 0
x3 ∧ x3
x4 ∧ x3 ∧ x4
x2
x2 = 1
1
x3 = 0
Principe
Recherche en profondeur d’abord dans l’espace
{0, 1}n
Chaque noeud interne de l’arbre de recherche
est une théorie clausale
Chaque branche est étiquetée par une affectation
de valeur à une variable.
0
Chaque feuille est étiquetée par 0 ou 1
x3 = 1
0
Méthode
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x 1 ∨ x 2 ∨ x3
x1 ∨ x2 ∨ x4
Chaque itération de l’algorithme contient trois phases :
Projeter la formule sur l’affectation courante
Propager la contrainte booléenne
Choisir une variable de branchement
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
Projection
entrée : une théorie clausale F et une affectation xi = v
sortie : la projection Fxi =v
si xi = 1 alors
remplacer chaque occurrence de xi (resp. xi ) dans F par 1 (resp. 0)
sinon
remplacer chaque occurrence de xi (resp. xi ) dans F par 0 (resp. 1)
pour chaque clause C dans F
si 0 ∈ C alors éliminer 0 de C
si 1 ∈ C alors éliminer C de F
Propagation de Contrainte Booléenne (BCP)
entrée : une théorie clausale F
sortie : une simplification de F par filtrage booléen
si F contient une clause unaire {li } alors
si li = xi alors
retourner BCP(Fxi =1 )
sinon
retourner BCP(Fxi =0 )
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
Projection
entrée : une théorie clausale F et une affectation xi = v
sortie : la projection Fxi =v
si xi = 1 alors
remplacer chaque occurrence de xi (resp. xi ) dans F par 1 (resp. 0)
sinon
remplacer chaque occurrence de xi (resp. xi ) dans F par 0 (resp. 1)
pour chaque clause C dans F
si 0 ∈ C alors éliminer 0 de C
si 1 ∈ C alors éliminer C de F
Propagation de Contrainte Booléenne (BCP)
entrée : une théorie clausale F
sortie : une simplification de F par filtrage booléen
si F contient une clause unaire {li } alors
si li = xi alors
retourner BCP(Fxi =1 )
sinon
retourner BCP(Fxi =0 )
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
F
x1 = 1
x1 = 0
x4 ∧ x3 ∧ (x2 ∨ x3 ) ∧ (x2 ∨ x4 )
x2 = 1
x2 = 0
x4 ∧ x3 ∧ x3
x4 = 0
x3 ∧ x3
x4 ∧ x3 ∧ x4
x2
x2 = 1
1
x3 = 0
Davis-Putnam
entrée : une théorie clausale F
sortie : 1 (sat) ou 0 (unsat)
BCP(F)
si F est vide retourner 1
si F contient la clause vide retourner 0
choisir une variable xi dans F
retourner DP(Fxi =0 ) ∨ DP(Fxi =1 )
0
x3 = 1
0
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x 1 ∨ x 2 ∨ x3
x1 ∨ x2 ∨ x4
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
{0, 1}n
F
Principe
Recherche non systématique (locale) par méthode de
voisinage dans {0, 1}n
Méthode
Chaque itération de l’algorithme contient deux phases
Tirage aléatoire d’un état (T RIES)
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x 1 ∨ x 2 ∨ x3
x1 ∨ x2 ∨ x4
Recherche de voisins par permutation (F LIPS)
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
{0, 1}n
F
Principe
Recherche non systématique (locale) par méthode de
voisinage dans {0, 1}n
Méthode
Chaque itération de l’algorithme contient deux phases
Tirage aléatoire d’un état (T RIES)
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x 1 ∨ x 2 ∨ x3
x1 ∨ x2 ∨ x4
Recherche de voisins par permutation (F LIPS)
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
GSAT
entrée : une théorie clausale F, les bornes M AX T RIES et M AX F ILPS
sortie : 1 (sat) ou failout (inconnu)
pour i = 1 à M AX T RIES
choisir un état X aléatoirement dans {0, 1}n
pour j = 1 à M AX F LIPS
si w |= F retourner 1
choisir une variable xi et permuter sa valeur dans s
Dans GSAT, l’heuristique de choix est la variable qui maximise le nombre de clauses satisfaites
i
1
1
1
j
1
2
3
état
x1 = 1, x2 = 0, x3 = 0, x4 = 1
x1 = 0, x2 = 0, x3 = 0, x4 = 1
x1 = 0, x2 = 0, x3 = 0, x4 = 1
Algorithmique Logique I
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x1 ∨ x2 ∨ x3
x1 ∨ x2 ∨ x4
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Algorithme DP
Algorithme GSAT
GSAT
entrée : une théorie clausale F, les bornes M AX T RIES et M AX F ILPS
sortie : 1 (sat) ou failout (inconnu)
pour i = 1 à M AX T RIES
choisir un état X aléatoirement dans {0, 1}n
pour j = 1 à M AX F LIPS
si w |= F retourner 1
choisir une variable xi et permuter sa valeur dans s
Dans GSAT, l’heuristique de choix est la variable qui maximise le nombre de clauses satisfaites
i
1
1
1
j
1
2
3
état
x1 = 1, x2 = 0, x3 = 0, x4 = 1
x1 = 0, x2 = 0, x3 = 0, x4 = 1
x1 = 0, x2 = 0, x3 = 0, x4 = 1
Algorithmique Logique I
théorie clausale F
x1 ∨ x2
x1 ∨ x4
x1 ∨ x3
x1 ∨ x2 ∨ x3
x1 ∨ x2 ∨ x4
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Outline
1
Logique Propositionnelle (Rappels)
Syntaxe
Sémantique
Satisfiabilité
2
Problème de Satisfiabilité
Forme Clausale
Complexité
3
Algorithmes de Satisfiabilité
Algorithme Davis-Putnam
Algorithme GSAT
4
Conclusion
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Efficacité
Années 1990 : 100 variables et 200 clauses
Années 2005 : 1,000,000 variables et 5,000,000 clauses
Certaines instances dures de SAT restent non-solvables avec quelques centaines de variables
Applications
De nombreux problèmes NP-difficiles sont traduits en SAT
Software Engineering : vérification de logiciels
Hardware Engineering : vérification de circuits
Réseaux : routage, ordonnancement, spécification de protocoles
IA : diagnostic, planification, raisonnement, apprentissage, etc.
Web : e-commerce, e-auctions, electronic trading
Algorithmique Logique I
Satisfiabilité Propositionnelle
Logique Propositionnelle
Problème de Satisfiabilité
Algorithmes de Satisfiabilité
Conclusion
Efficacité
Années 1990 : 100 variables et 200 clauses
Années 2005 : 1,000,000 variables et 5,000,000 clauses
Certaines instances dures de SAT restent non-solvables avec quelques centaines de variables
Applications
De nombreux problèmes NP-difficiles sont traduits en SAT
Software Engineering : vérification de logiciels
Hardware Engineering : vérification de circuits
Réseaux : routage, ordonnancement, spécification de protocoles
IA : diagnostic, planification, raisonnement, apprentissage, etc.
Web : e-commerce, e-auctions, electronic trading
Algorithmique Logique I
Satisfiabilité Propositionnelle
Téléchargement