Contraintes
Lakhdar SAÏS
CRIL - Université d’Artois, Lens
Bureau : C307
sais@cril.univ-artois.fr
http://www.cril.univ-artois.fr/~sais
Plan
Introduction
SAT(isfiabilité) propositionnel
Problème SAT : définitions de base
Les classes polynomiales
Algorithmes de résolution
Résolution
Énumération, Simplifications, Heuristiques,Traitement des échecs
Recherche locale (GSAT, Taboo,…)
Méthodes hybrides
Instances de SAT
Problèmes structurés
problèmes aléatoires - phénomène de seuil
problèmes réels
Structures & résolution
Extensions
Directions de recherche
Plan (suite)
CSP (Problème de satisfaction de Contraintes)
représentation de problèmes par des contraintes
Les CSP : définitions de base
Consistances partielles, filtrages et propagations de contraintes
Techniques de résolution
Graphes de contraintes, consistance et méthodes de décomposition
Extensions
Directions de recherche
Autres techniques
algorithmes génétiques
ATMS
Applications
Conclusion & perspectives
Références
Web
SAT :
SATLIVE : http://www.satlive.org
SatEx : http://www.satex.org
SATLIB : http://www.satlib.org
CSP :
Constraints archives : http://www.cs.unh.edu/ccc/archive/
CSPLIB : http://www.csplib.org
Conférences
IJCAI, AAAI, CP, SAT, ICLP, JNPC-JFPLC,…
Livres & articles de synthèse
Foundation of constraint satisfaction problems, Edward Tsang
Jun Gu etal. Algorithms for Satisfiability (SAT) Problem: A Survey
Introduction & Motivation
Intelligence artificielle
logique SAT
PL CSP
PLC CP
réseaux de contraintes
Recherche opérationnelle
applications
Problème SAT : définitions de base
Notations & définitions
Une formule booléenne :
, T sont des formules
une variable (atome) propositionnelle A 1, A2, A3, … est une formule
si 1 et 2 sont des formules, alors 1, (1 2), (1 2), (12), (1 2
)
sont des formules
Littéral : une variable propositionnelle A i (littéral positif) ou sa négation
Ai (littéral négatif)
Atomes() : {A1, A2, A3, …An} apparaissant dans
Une formule booléenne peut être représenté par un arbre ou un DAG
(graphe orienté acyclique)
Notations & définitions
Une interprétation complète I de :
I : Atomes() {, T }
Exemple :
1 2 et (1 ¬ A3) (2 A3), avec A3 Atomes (1 2) sont
equi-satisfiable mais pas équivalente
Complexité
Exemple :
clause
Transformation en CNF
Toute formule peut être réduite à CNF() :
1. réduire en NNF;
2. Appliquer récursivement les lois de DeMorgan :
(1 2) 3 (1 3) (2 3)
Atomes(CNF()) = Atomes()
CNF() est équivalente à
Si 1 est équivalente à 2, alors CNF(1) = CNF(2) modulo un ordre
Complexité exponentielle dans le pire des cas
Parité négative
Parité positive
Parité positive
e1 e2 e3 f1 f2 f3 g1 g2 g3
c d
remplacer les et :
- [( ((a b)) (c d) )((e1 e2 e3 ) (f1 f2 f3)(g1 g2 g3))
- [( ( ((a b)) (c d) ) ( (c d) ((a b)) ) )
((e1 e2 e3 ) (f1 f2 f3)(g1 g2 g3)) ]
- [( (((a b)) (c d) ) ((c d) ((a b)) ) )
((e1 e2 e3 ) (f1 f2 f3)(g1 g2 g3)) ]
- [(( (((a b)) (c d) ) ((c d) ((a b)) ) ) )
((e1 e2 e3 ) (f1 f2 f3)(g1 g2 g3)) ]
Transformation en CNF : un exemple
(suite)
descendre les négations au niveau atomique :
’ = [ ((a b c d) ( (c d) (a b) ))
((e1 e2 e3 ) (f1 f2 f3)(g1 g2 g3)) ]
(n ((a b c d) ( i j ) ) )
(n k l m )
Transformation en CNF : un exemple
(suite)
(n k l m ) ((n k l m )
( i (c d) ) ( i c ) ( i d)
(A1 A2 B1)
(B1 A3 B2)
…
(Bk-4 Ak-2 Bk-3)
(Bk-3 … Ak-1 Ak)
D’un exemple à représentation clausale
Exemple : Soit un moteur d’un véhicule un hybride de moto,
vélo, et d ’auto). Le problème est pour le conducteur, de
détecter les pannes grâce à des indices.
Pannes Indices
p1 = il n’y a plus d’eau I1 = le voyant de température est rouge
p2 = il n’y a plus de huile I2 = l ’ ampèremètre de charge est
positif
p3 = la courroie est cassée I3 = le voyant de huile est rouge
p4 = le redresseur est coupé I4 = le compte tour est positif
p5 = la batterie est vide I5 = le moteur tourne
p6 = la batterie est en court circuit I6 = les phares marchent
p7 = le fusible est fondu
Utilitaires
u1 = la bobine est alimenté
u2 = les circuits secondaires sont alimentés
u3 = il y a un court circuit
D’un exemple à représentation clausale
Si le voyant de température est rouge alors, d ’une part il n ’y a plus d ’eau ou il n ’y a plus
d ’huile ou la courroie est cassée, et d ’autre part les circuits secondaires sont alimentés.
i1 ( ( p1 p2 p3) u2)
clauses : ( i1 p1 p2 p3) ( i1 u2)
Le voyant d ’huile est rouge si et seulement si les circuits secondaires sont alimentés, et, il n ’y a
plus d ’huile ou le moteur ne tourne pas.
i3 u2 (p2 i5)
clauses : (i3 u2) (i3 p2 i5) (u2 p2 i3) (u2 i5 i3)
Une batterie en court circuit est vide
p6 p5
clause : p6 p5
si l ’ampèremètre de charge est positif et la batterie est en court circuit alors le fusible est fondu
(i2 p6) p7
clause : (i2 p6 p7)
...
D’un exemple à représentation clausale
Coder en CNF les problèmes suivants:
Puzzles Logiques :
problème crypto-arithmétique :
coder en CNF le problème consistant à trouver une affectation des lettres dans {0..9} de
manière à satisfaire l ’addition : DONALD + GERALD = ROBERT, tout en évitant la
solution triviale où les lettres reçoivent zéro comme valeur.
Problème des pigeons (pigeon-hole problem) :
mettre n pigeons dans n-1 pigeonniers, avec un pigeon par pigeonnier.
Problèmes mathématiques :
Dans toute collection de 6 personnes, on doit trouver, 3 personnes qui se connaissent ou
3 personnes qui ne se connaissent pas. (instance du théorème de Ramsey)
…
Problème SAT : Objectifs & historique
Objectifs
Mots clés
Codage, Résolution, Extension, Application
But :
Élargir la classe des problèmes traitables en pratique
Génération aléatoire
• Phénomène de seuil
Problèmes mathématiques :
e.g. instances du théorème de Ramsey, de Schur, d ’Erdös, problèmes de quasi-
groupes,…
Expérimentations :
fixer k et V
pour des valeurs croissantes de C, générer et tester la satisfiabilité
des (500, 1000, 10000, …) instances avec k, V, C
tracer les courbes :
pourcentages d’instances satisfiables en fonction de C/V
moyenne du temps CPU (sur 500, 1000, …) en fonction de C/V
…
Phénomène de seuil
Transition de phase : %SAT
• En augmentant C/V, on passe de
100% d ’instances satisfiable à
50 var
100% d ’instances unsatisfiable 40 var
Temps exec.
tend vers une loi 0/1
• Phénomène constaté sur d’autres
problèmes NP-complet
Difficulté de résolution
Pourcentage inst. sat
• En augmentant C/V, on distingue 100
trois régions : facile, difficile, facile 80 50% sat
• Le pique de difficulté se trouve au 60
• 20
0
2 3 4 5 6 7 8
Phénomène constaté sur d’autres
C/V
problèmes NP-complet Seuil
Intuition
faible rapport C/V : peu de clauses (contraintes)
beaucoup de solutions
région sous-contrainte
facilement trouvé
Remarque :
pour une formule à n variables -> 2n interprétations
une clause C élimine (est falsifié par) 2n-|c| interprétations
Zoom sur le seuil
Redressement de la transition pour des valeurs élevé du nombre de variables
1.0
100
0.8 50 20
40 12
24 UNSAT
0.6 Région
0.4
SAT
0.2 région
0
3 4 5 6 7
Rapport Clauses / Variables
Statut théorique du seuil
Statut actuel :
Tc et d non affecté
I(a)=I(b)=
Définitions (suite)
Règle de clause unitaire - implications : propagation unitaire
Une clause active est unitaire si elle a exactement un littéral non affecté
Soient = (a c) (b c) (¬a ¬b ¬c),
et I une interprétation tq. I(a) = T, I(b) = T
Une clause unitaire admet une seul option pour être satisfaite.
a b ¬c
i.e. c doit être affecté à .
La propagation unitaire (PU) consiste à affecter par propagation tout les littéraux
unitaires (apparaissant dans une clause unitaire) d’une formule
Définitions (suite)
Règle du littéral pure (monotone)
une variable est dite pure dans si ses littéraux sont soit tous positifs soit
tous négatifs
La satisfiabilité d’une formule ne change pas par l ’affectation des littéraux
pures de manière à satisfaire toutes les clauses où il apparaissent.
= (a c ) (b c ) (b ¬d) (¬a ¬b d)
substituer toutes les occurrences des littéraux construits sur les xi par leurs
opposés.
( ) et sont équi-satisfiable.
Un renommage est appelé Horn-renomage ssi ( ) est une formule de
Horn.
Une formule est dite Horn-renommable ssi elle admet un Horn-renommage.
Classes polynomiales : Horn-renommable
Reconnaissance d’une formule Horn-renommable :
La recherche d ’un Horn-renommage d’une formule se réduit au
(pi pj )
Ck pi, pj Ck
Clauses quelconque
c Cqh atomes(c) atomes(Q) atomes(H-)
Cqh Q H-
|atomes(c)atomes(Q)| 2 et
| atomes(c) atomes(H-)| 1
Ch H Clauses de Horn
c Ch atomes(c) atomes(H)
algorithme de reconnaissance en temps linéaire [J-J Hébrard]
Classes polynomiales
Autres classes polynomiales
Q-Horn renommable
On définit r,s-SAT comme la classe des formules où les clauses ont exactement r littéraux et chaque
SAT Algorithmes
Complets Incomplets
Règle de subsumption/sous-sommation :
si 1 2 alors 1 2 (on dit que 1 subsume 2)
Règle de fusion :
(a ) (a a) (cas particulier de la règle de subsumption)
Méthode de résolution
Fonction résolution ( )
tant que ( S ) faire
choisir 1 , 2 S contenant deux littéraux opposés
r = résolvante (1, 2 )
S = S {r}
fin tant que
retourner faux
1 = (a ¬a ¬b)(b ¬a ¬b )(d ¬a ¬b )
= (d ¬a ¬b ) est satisfiable !
Méthode de résolution : sommaire
exponentielle en temps et en espace
preuve par réfutation rôle en logique du premier ordre
adaptée à certaines classes de problèmes
difficulté de mise en œuvre
de nombreuses variantes (améliorations ont été proposées )
SL-Résolution [Kowalski-Kuehner:71]
Directional résolution [Dechter:00]
...
utilisation limitée en pratique
des formes plus faibles sont souvent utilisées :
générer des résolvantes de taille réduite (< k)
e.g. résolvantes binaires
Méthode des tableaux
Recherche d ’un modèle de
appliquer récursivement les règles d’éliminations des
connecteurs
si une branche contient Ai et Ai (i et i) pour un certain
i, la branche est dite fermée; sinon elle est dite ouverte
si aucune règle ne peut être appliquée à une branche
ouverte, alors est satisfiable
si toute les branches sont fermées, alors est insatisfiable
Méthode des tableaux: règle d’élimination
-élimination
1 2 (1 2) 1 2
1 2 1 2 1 2
-élimination
(1 2)
(1 2) (2 1)
Algorithme Tableau
Fonction Tableau () /*vrai si est satisfiable; faux sinon*/
si Ai et Ai /* branche fermée */
alors retourner Faux
si (1 2) /* -élimination */
alors retourner Tableau ( {1, 2}\{ (1 2) } )
si ( 1) /* -élimination */
alors retourner Tableau ( {1}\{( 1)} )
si (1 2) /* -élimination */
alors retourner Tableau ( {1}\{ (1 2) } ) ou
Tableau ( {2}\{ (1 2) } )
retourner vrai
Méthode des tableaux : exemple
= ( (ab) (a b) )
( (ab) (a b) )
-élimination
( (ab) (a b) ) ( (a b) (ab))
-élimination -élimination
Règles de DPLL :
1 (p) 2
règle littéraux unitaire
(1 2)[ p|T ]
p est pure
[ p|T ]
règle séparation (split)
[ p|T ] [ p| ]
Procédure de DPLL [62]
Fonction DPLL (, ) /*vrai si est satisfiable; faux sinon*/
si = T /* toute les clauses sont satisfaites */
alors retourner vrai
a a
b c
c b
Procédure DPLL : sommaire
Procède par énumération (affectation de valeurs aux atomes)
retarde la séparation autant que possible
nécessite une formule CNF en entrée (il existe des variantes pour des
formules quelconques)
ignorée par les logiciens
la plus efficace des techniques de résolution de SAT
préférée par les informaticiens
avec w(x) = poids associé à x, généralement calculé en utilisant des arguments syntaxique :
longueur des clauses, nombre d’occurrences,...
- choix aléatoire,
- facteur
Heuristique UP :[Freeman:96, Li:97] d’équilibre
- constante empirique
w(x) = || - |’| , avec ’ la formule obtenue à partir [x|] par propagation unitaire,
maximise l’effet de la propagation unitaire,
Exemple d’heuristiques
soient w(x) = #occurrences de x dans , x1, x2 Atomes () tq.
W(x1)= 6, w(x1) = 6 et W(x2)= 8, w(x2) =4 alors
H1(x1) = 6+6 = 12, H1(x2) = 12
x1 ou x2 ?
H3(x1) = 6+6+min(6,6) =18 , H3(x2) = 8+4 + min(8,4) = 16
x1 est choisie
H4(x1) = 6+6+36 = 48, H4(x2) = 8+4+ 32 = 44,
x1 est choisie
pourquoi équilibrer?
n-1 n+1
n n
2n-1
2 n
2 n
2n+1
2n + 2n = 2n+1 < 2n-1 + 2n+1 = 5/4 x 2n+1
Traitement des échecs
Idée : lorsqu’un conflit (contradiction) est détecté :
1. déterminer un sous-ensemble de l’interprétation courante,
responsable du conflit «conflict-set »
2. Retour en arrière non-chronologique - saut au point responsable
de l ’échec.
l’ensemble conflit est construit à partir de la clause falsifiée en ne gardant que
les littéraux affectés lors des points de choix.
À chaque point de choix, un ensemble conflit est obtenu par résolution entre les
ensembles conflits des deux branches.
résolution
(a c d) (a e)
(a c ¬e f)
La clause (a c f)
permet d’éviter le conflit !
(a c f) Clause unitaire : a
Traitement des échecs : ajout de clauses
Le nombre de clauses ajoutées peut être très grand !
Relevance-based learning
supprimer les clauses actives avec M littéraux non affectés
Retour arrière non chronologique
«conflict-directed backtraking » (backjumping)
Au cours de la recherche, et en présence de conflits retour
arrière vers l’une des causes du conflit.
c
Clauses ajoutées: (a c f) and (¬a c f)
Appliquer la résolution : f
nouvelle clause falsifiée (c f)
retour au plus récent h
point de choix: I[f] =
i
clauses ajoutées:
(a c f), a
(¬a c f), et T
(c f)
(c f)
«conflit-directed backtraking » : Exemple
= (A1 A2)
(A1 A3 A9 )
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 )
(A1 A8)
(A7 A8 A13 )
...
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2)
(A1 A3 A9 )
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 )
(A1 A8)
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … } ( Interprétation initiale)
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2)
(A1 A3 A9 )
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … , A1} (brancher sur A1)
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … , A1, A2, A3 } (Unit A2, A3 )
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 ) satisfaite
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … , A1, A2, A3 , A4} (Unit A4 )
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 ) satisfaite
(A4 A5 A10 ) satisfaite
(A4 A6 A11 ) satisfaite
(A5 A6) conflit
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … , A1, A2, A3 , A4, A5, A6, } (Unit A5, A6)
«conflit-directed backtraking » : Exemple (suite)
A9
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite A10
(A2 A3 A4 ) satisfaite
(A4 A5 A10 ) A11
satisfaite
(A4 A6 A11 ) A12 c4 A5
satisfaite
(A5 A6) conflit A13
c2 A3
c6
c5 A6
(A1 A7 A12 ) satisfaite c3 A4
A2
(A1 A8) A1 c1
satisfaite
(A7 A8 A13 )
… Graphe d’implication
{…, A9 , A10 , A11 , A12 , A13 , … , A1, A2, A3 , A4, A5, A6, }
ensemble conflit : {A9 , A10 , A11 , A1}
(A9 A10 A11 A1 ) ,
(A9 A10 A11 A1)
nouvelle clause ajoutée: (A9 A10 A11 A1) retour arrière sur A1
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 )
(A1 A8)
(A7 A8 A13 )
…
{…, A9 , A10 , A11 , A12 , A13 , … ,A1 } ( brancher sur A1 )
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 ) conflit
…
{…, A9 , A10 , A11 , A12 , A13 , … ,A1 , A7 , A8 }( Unit A7 , A8 )
«conflit-directed backtraking » : Exemple (suite)
A9
= (A1 A2) satisfaite
(A1 A3 A9 ) A10
satisfaite
(A2 A3 A4 )
(A4 A5 A10 ) A11
(A4 A6 A11 ) A12 c9
(A5 A6)
A13
c7 A7
(A1 A7 A12 )
(A1 A8) satisfaite A8
(A7 A8 A13 ) satisfaite A1 c8
… conflit Graphe d’implication
{…, A9 , A10 , A11 , A12 , A13 , … ,A1 , A7 , A8 }
ensemble conflit : {A12 , A13 , A1}
(A12 A13 A1 ) ,
(A12 A13 A1)
nouvelle clause ajoutée: (A12 A13 A1)
«conflit-directed backtraking » : Exemple (suite)
= (A1 A2) satisfaite
(A1 A3 A9 ) satisfaite
(A2 A3 A4 )
(A4 A5 A10 )
(A4 A6 A11 )
(A5 A6)
(A1 A7 A12 ) satisfaite
(A1 A8) satisfaite
(A7 A8 A13 ) conflit
…
{…, A9 , A10 , A11 , A12 , A13 , … ,A1 , A7 , A8 }
clauses ajoutées:
(A9 A10 A11 A1)
(A9 A10 A11 A12 A13 ) Retour arrière sur A13
(A12 A13 A1)
Partition du modèle classique [Oxusoff-Rauzy:89]
i
j i
partition
i est SAT
ssi
j est SAT
j
Partition du modèle généralisé [Mazure-etal:99]
i
i * j
partition
i est SAT
ssi
j est SAT
j
(p)
Traitement rétrospectif
(p ) (Look-back)
p p
p |=*
Application du théorème
généralisé
Partition du modèle : application
(p) Traitement prospectif
(p ) p p (Look-ahead)
p |=* p |=* p |=* traitement
locale par PU
p |=* p |=* p |=*
Inconsistance locale Littéral impliqué Non application
p |=* p |=*
généralisation
p |=* p |=*
Élimination de la variable p Le littéral p est pur
Simplifications
effectuées sur la formule originale (pré-traitements)
Résolution restreinte :
- effectuer toutes les résolutions de longueur <=K (en général k <=2)
Exemple : - soient 1 = (¬a b c), 2 = (a b)
ajouter r = (b c )
- soient 1 = (¬a b ), 2 = (a b)
ajouter r = (b )
- effectuer des résolutions entre 1 et 2 si |r| <= max( |1|, |2|)
ajouter r = (b c d)
Simplifications
Eliminer des clauses et des variables
si (x y) , (x y) , alors x et y sont équivalent, (x y)
eliminer y, et en le remplaçant par x
supprimer les clauses satisfaites
utiliser la sous-formule 2-CNF pour identifier des littéraux équivalents,
des littéraux impliqués,
Réparation
locale
sat indéterminé
RO : SAT/ CSP :
Recuit simulé [Kirpatrick-et al.:83] Inversion method [Dunham-Wang:76]
Tabou [Glover:89] SAT1 [Gu:87], QS [Minton:88]
... SAD [Hansen-Juamard:90] (Max-Sat)
SCORE [Chabrier-et al.:91],
GSAT [Selman-et al.:92] , ...
...
Recherche locale : définitions de base
Espace de recherche : l’ensemble des interprétations (complète)
Deux interprétations sont dites voisines si elle différent sur la valeur d’une
variable (distance de Hamming = 1).
#clauses falsifiées
Interprétations
L’algorithme GSAT
Fonction GSAT()
for i:= 1 to maxTries do
:= randAssign()
for j:=1 to maxFlips do
if (score(, ) = 0)
then return true;
else bestFlips :=hillClimb(, );
Ai := randPick(bestFlips);
:=flip(Ai, );
end
end
return « no satisfying assignement found »
GSAT : exemple
Répéter maxTries fois:
générer aléatoirement une interprétation complète
répéter maxFlips fois (tant qu’il existe des clauses falsifiés ):
« Flipper » une variable qui satisfait le maximum de clauses falsifiés
(max>=0)
100 var
40
20
0
0 100 200 300 400 500
Flips
300
500 var
200
100
0
0 4 8 12 16 20
Flips x 1000
RL: Améliorations de l’algorithme de base
falsifiées.
Résultats : 3-SAT aléatoire au seuil
GSAT
base RWS Sim. Ann.
100 .4 .2 .6
200 22 4 21
400 122 7 75
600 1471 35 427
800 * 286 *
1000 * 1095 *
2000 * 3255 *
Random Walk > GSAT de base > DPLL
Autres variantes de GSAT
HSAT : idem que GSAT de base : utilisation d ’une heuristique
pour départager les variables ayant le score max :
donner moins de priorité à la variable la plus récemment « flippé »
WSAT-G (p): tirer aléatoirement une clause falsifiée c :
1. avec une probabilité p flipper aléatoirement une variable de c
2. avec une probabilité 1-p, utiliser la stratégie de GSAT de base
(choix de la variable satisfaisant le max de clauses)
WSAT-B (p): idem que WSAT-G, sauf pour le cas 2 :
choix de la variable satisfaisant le maximum de nouvelles clauses
Autres variantes de GSAT
Novelty (p) : tirer aléatoirement une clause c :
1. flipper une variable xi de c ayant le meilleur score, sauf si xi est la
variable la plus récemment flippé dans c.
2. Dans ce dernier cas :
avec une probabilité p, flipper xi
avec une probabilité 1-p, flipper xk la deuxième variable de c ayant le
meilleur score
1
%runs
Distributions
0,9
0,8
0,7
g40 Distrib
Problème de vérification de circuit 0,6
- heuristiques randomisées
0,5
- 10000 exécutions
0,4
0,3
#noeuds
0 2000 4000 6000 8000 10000 12000
Autres méthodes : « Randomization
& restart »
Stratégie :
Randomizer l’heuristique de choix de variable
Limiter le nombre de nœuds à explorer à chaque essai “backtrack cutoff
value”
reprendre la recherche à chaque fois que le nombre de nœuds>cutoff
utiliser une heuristique randomisé pour explorer différentes parties de l’espace de
recherche
Espace
de recherche cutoff cutoff
Autres méthodes : « Randomization
& restart »
Possibilité de rendre l’algorithme complet
augmenter la valeur “cutoff” après chaque essai
Distributions
0,9
0,8
0,7
g40 Distrib
g100 Distrib
0,6
0,5
0,4
0,3
# noeuds
0 10000 20000 30000 40000 50000
Méthodes mixtes
Méthodes mixtes
[Mazure-Saïs-Grégoire:95-97]
Quelles méthodes ?
Recherche locale / énumération
Comment ?
Avec ou sans coopération
Méthodes hybrides (mixtes)
Schémas de coopération recherche
locale
non résolu
+
informations
sat décider
non résolu
non résolu
déduire
non résolu
échec
unsat backtrack
Autres travaux
[Castell:97, Lobjois-Lemaître:97, ...]
Méthodes hybrides (mixtes)
A chaque appel à l ’algorithme de recherche locale :
comptabiliser pour chaque clause le nombre de fois qu’elle est
apparue fausse au cours de la recherche
Utiliser cette information pour améliorer les heuristique de
choix de variable : e.g. choisir la variable ayant apparue le
plus sauvent fausse au cours de la recherche locale.
Sommaire :
Complétude des deux schémas proposés
Moyen de localiser l’inconsistance
Amélioration des techniques classiques sur de nombreux problèmes
Diagramme Binaire de Décision (BDD)
Soit x y, z un opérateur « if-then-else » (ite) défini :
x y, z = (x y) (x z)
x y, z est vrai si x et y sont vrai ou x est faux et z est vrai
Les opérateurs logique peuvent être exprimés par des «ite» et
les deux constantes 0 et 1.
exemples :
x par x 0, 1
x y par x (y 1, 0 ), 1
x y par x (y 1, 0 ), (y 0, 1 ),
x y par x (y 1, 0 ), 0
x y par x 1, (y 1, 0 )
….
Remarque :
les variables (sans négation) apparaissent uniquement dans la condition d’un ite. toute
formule peut être représenté par les « ite », 0 et 1
Nouvelle forme normale!
Diagramme Binaire de Décision (BDD)
La forme normale INF « If-then-else Normal Form » est une expression
booléenne construite avec uniquement des ite et les constantes 0 et 1,
avec les tests effectuées uniquement sur les variables.
Si est une formule booléenne et x une variable de alors,
= x [x|1], [x|0]
(théorème de Schanon)
En appliquant récursivement le théorème de Schanon on
peut transformer toute formule booléenne sous forme INF
toute formule booléenne est équivalente à une formule sous forme INF
Diagramme Binaire de Décision (BDD)
Exemple 1 :
soit une formule booléenne = (x1 y1) (x2 y2)
en appliquant récursivement le Th de Schanon sur les variables x 1 ,y1, x2 ,y2 dans
l’ordre on obtient l ’expression suivante:
= x1 1, 0
0 = y1 0, 00
x1
1 = y1 11, 0 y1 y1
00 = x2 001, 000
11 = x2 111, 110
x2 x2
000 = y2 0, 1
y2 y2 y2 y2
001 = y2 1, 0
110 = y2 0, 1
1 0 0 1 0 0 1 0 0 1
111 = y2 1, 0
Un arbre de décision (AD)de
Étiqueté par 1
Étiqueté par 0
Diagramme Binaire de Décision (BDD)
Exemple 1 (suite) :
chaque sous-formule peut être vue comme un neoud d ’un graphe.
Chaque nœud est soit terminal (1 et 0) soit non-terminal
un nœud non-terminal admet deux successeurs : la partie alors de
l ’ite et la partie sinon de l ’ite
x1
y1 y1
x2
Nombre de nœuds réduit de
9 (AD) à 6 (BDD)
y2 y2
0 1
Un BDD de avec un ordre x1 < y1<x2 <y2
aussi OBDD « Ordred Binary Decision Diagram »
Diagramme Binaire de Décision (BDD)
Exemple 2 (OBDD avec des tests redondants)
x1
x2
x1 x1
x2 x3
1 1 1 0 1
a) OBDD pour 1 b) OBDD pour 1, c) OBDD pour 1, d) OBDD pour x1 x3,
avec 2 tests redondants avec 1 test redondant avec 1 test redondant
x x<y
x<z x x x
y
Définitions : z
un BDD est un graphe orienté acyclique (DAG) avec :
un ou deux nœuds terminaux (avec degré extérieur nul ) étiquetés 0 ou 1, et
un ensemble de nœuds variables (non-terminaux) (avec un degré extérieur 2). Chaque nœud est
étiqueté par une variable u, et chaque arc est étiqueté par 0 (ligne en pointillé) ou 1 (ligne pleine).
Un BDD est dit ordonné (OBDD) si sur chaque chemin du graphe l’ordre x1<x2 < … <xn est
respecté. Un OBDD est réduit (ROBDD) si
(unicité) il ne contient pas deux neuds différents étiqueté avec la même variable et ayant les
mêmes successeurs.
(non-redondant) les successeurs d’un neoud sont différents
ROBDD
Propriété (canonicité) : toute fonction booléenne est représenté
par exactement un seul ROBDD.
une fois le ROBDD construit, :
on peut tester en temps constant si la formule booléenne est valide
(ROBDD réduit au nœud 1), insatisfiable (ROBDD réduit au nœud 0),
satisfiable sinon;
ordre des variables -> taille du ROBDD
Exemple : = (x1 y1) (x2 y2)
x1
x1
x2 x2
y1 y1
y1 y1 y1 y1
x2
y2 y2
y2 y2
1 0
0 1
ROBDD () : ordre x < y <x <y ROBDD () : ordre x < x <y <y
OBDD (structure implicite)
obdd(T,{…})= 1
obdd( ,{…})=0
obdd(, {A1,A2,…,An})=
if (A1)
then obdd([A1|1],{A1,A2,…,An})
else obdd([A1|0],{A1,A2,…,An})
OBDD (construction incrémentale)
obdd(T,{…})= 1
obdd( ,{…})=0
obdd(1 op 2 , {A1,A2,…,An})=
obdd_merge( op,
obdd_build(1 , {A1,A2,…,An}),
obdd_build(2 , {A1,A2,…,An}),
{A1,A2,…,An}
)
op {, ,,}
(RO)BDD : sommaire
Opère sur des formules booléennes quelconques
trouve tout les modèles
factorisation des partie commune de l ’arbre de recherche (DAG)
nécessite un ordre statique (fixé) à priori (choix critique!!)
très efficace pour certaines classes de problèmes (e.g. circuits)
nécessite un espace exponentiel dans le pire cas
très utilisé par la communauté conception de matériel, ignoré par les
logiciens, récemment introduite en IA
Structures & résolution
Structure : exploitation
Structure?
Intérêt ?
Exploitation
Comment la détecter ?
Comment l’utiliser ?
Exemples de structure
Symétries, équivalences, etc.
Symétries (1)
[Benhamou-Saïs-Siegel:90-94, …]
Utilisation dynamique
statique
Détection isomorphisme de graphes
algorithme incomplet
Résultats
problème des pigeons, formules de Tseitin,
instances du théorème de Ramsey, Shur, Erdös,
puzzles logiques etc.
Autres travaux