• Aucun résultat trouvé

R´esolution

Dans le document Logique propositionnelle, P, NP (Page 42-45)

Le premier article de Davis et Putnam (1960) n’utilisait pas la r`egle de splitting, mais celle de r´esolution. L’id´ee de la r´esolution est d’ajouter, petit `a petit, `a S des clauses qui sont cons´equence logique de clauses de S, jusqu’`a ce que l’on d´erive la clause vide2 (contra-diction : l’ensemble initial de clauses ´etait donc insatisfiable), ou bien que l’on ne puisse plus d´eriver de nouvelle clause.

Ce n’est pas un algorithme tr`es efficace pour d´ecider SAT, loin s’en faut. Cependant, quelques instances bien choisies de la r`egle de r´esolution permettent d’acc´el´erer d’autres algorithmes comme DPLL ; c’est notamment le cas sur les 2-clauses, c’est-`a-dire les clauses contenant au plus deux litt´eraux. (Voir par exemple l’exercice 3.4.) La r´esolution est aussi l’un des m´ecanismes utilis´es pour r´esoudre d’autres probl`emes propositionnels, comme le calcul d’impliquants premiers. Mais surtout, la r´esolution dans le cas propositionnel est le prototype d’une r`egle de d´emonstration automatique en logique du premier ordre, aussi appel´ee r´esolution, et qui est, dans ce cadre, tr`es efficace.

Voici la r`egle de r´esolution :

C∨+A −A∨C C∨C

On la lit comme suit : ´etant donn´e un ensemble courant de clauses S, si l’on peut trouver deux clauses dans S de la forme donn´ee au-dessus de la barre (les pr´emisses de la r`egle), alors ajouter la conclusion de la r`egle (le r´esolvant) `a S. On it`ere jusqu’`a d´eriver la clause vide2, ou bien jusqu’`a ce qu’on ne puisse plus d´eriver de r´esolvant qui ne soit pas d´ej`a dans l’ensemble de clauses.

Notons −→ la relation entre ensembles de clauses repr´esentant ce processus : S −→ S si et seulement si S = S ∪ {C∨C}, o`u S contient deux clauses de la forme C∨+A et

−A∨C. La r´esolution est d’abord correcte :

Lemme 3.6 (Correction) Soit S −→ S. Alors S est cons´equence logique de S : pour tout environnement ρ, si ρ|=S alors ρ|=S.

En particulier, si S −→ S et S contient la clause vide 2, alors S est insatisfiable.

D´emonstration. Il suffit de montrer que si ρ satisfait `a la fois C∨+A et −A∨C, alors il satisfait C∨ C. En effet, si ρ(A) = 0, le fait que ρ |= C ∨+A implique ρ |= C, donc ρ|=C∨C. Le cas sym´etrique ρ(A) = 1 implique ρ|=C, donc aussiρ|=C∨C.

On en d´eduit par r´ecurrence sur le nombre d’´etapes −→ pour passer de S `a S tel que S −→ S que S est encore cons´equence logique de S. Comme aucun environnement ne satisfait 2, si 2∈S, alors S est insatisfiable, donc S aussi. ⊓⊔ La r`egle de r´esolution est en fait aussi compl`ete : siS est insatisfiable, on peut en d´eriver la clause vide par un nombre fini d’instances de la r`egle de r´esolution. La d´emonstration fait appel `a la notion d’arbre s´emantique, d´ej`a vue `a la section 1.2 et `a la section 1.3.

Th´eor`eme 3.7 (Compl´etude) Soit S un ensemble insatisfiable de clauses proposition-nelles. Alors il existe un ensemble de clauses S tel que S −→ S et S contient la clause vide 2.

D´emonstration. Si S est insatisfiable, fixons une ´enum´eration A0, A1, . . . , An−1 de ses va-riables libres, et construisons son arbre s´emantique T. En d´etail, soit T0 l’arbre de tous les environnements, T l’arbre T0 ´elagu´e aux nœuds d’´echec. Montrons que l’on peut d´eriver la clause vide de S, par r´ecurrence sur le nombre de nœuds de l’arbre s´emantiqueT.

Si T n’a qu’un nœud, c’est-`a-dire si sa racine est d´ej`a un nœud d’´echec, alors l’in-terpr´etation partielle vide rend fausse une clause C de S, donc tous les litt´eraux de C.

On a donc C =2, et le th´eor`eme est d´emontr´e, avecS =S.

Sinon, T contient un nœud ̺ qui n’est pas d’´echec mais dont les deux successeurs imm´ediats sont des nœuds d’´echec. On appelle un tel nœud un nœud d’inf´erence. Par exemple, sur la figure 2, les nœuds 4, 6 et 7 sont des nœuds d’inf´erence. Il existe au moins un nœud d’inf´erence, car tout nœud de T qui n’est pas un nœud d’´echec et qui est minimal (le plus bas possible dans T) est un nœud d’inf´erence.

Notons ̺[Ai := 1] est ̺[Ai := 0] les deux successeurs imm´ediats de ̺. Ils sont obtenus

`a partir de ̺ en posant Ai ´egal `a 1, resp. 0, o`u i est l’entier tel que le domaine de ̺ soit {A0, A1, . . . , Ai−1}. Il existe une clause de S telle que ̺[Ai := 0] soit un nœud d’´echec pour cette clause. En particulier, ̺[Ai := 0] rend faux tous les litt´eraux de cette clause. Par la d´efinition des nœuds d’´echec, son pr´ed´ecesseur imm´ediat ̺ n’est pas un nœud d’´echec pour cette clause, donc elle est de la forme C∨+Ai (et̺ rend faux tous les litt´eraux de C). De mˆeme, ̺[Ai := 1] est un nœud d’´echec pour une clause qui est n´ecessairement de la forme C∨ −Ai. On peut alors appliquer la r`egle de r´esolution surC∨+Ai et C∨ −Ai (et̺ rend faux tous les litt´eraux de C).

Soit S1 l’ensembleS union le r´esolvant C∨C. On note que̺rend faux tous les litt´eraux de C, ainsi que de C, donc de C ∨ C. L’arbre s´emantique T1 obtenu `a partir de T0 en

´elaguant aux nœuds d’´echec de S1 contient donc strictement moins de nœuds que T (les nœuds ̺[Ai := 0] et̺[Ai := 1], notamment, n’y sont plus). Par hypoth`ese de r´ecurrence, on

a S1 −→ S avec 2∈S, d’o`u le r´esultat. ⊓⊔

On applique la r`egle de r´esolution en saturant l’ensemble de clauses S, c’est-`a-dire en ajoutant les r´esolvants de couples de clauses de S, ainsi que de clauses pr´ec´edemment pro-duites par la r`egle de r´esolution. Une r´ealisation classique de la r´esolution fonctionne en accumulant dans un ensemble Sat (“saturation”) des clauses dont on a d´ej`a calcul´e tous les r´esolvants, et l’on g`ereS comme une file, contenant toutes les clauses dont on n’a pas encore calcul´e les r´esolvants avec les clauses de Sat (ou deS) :

Sat:=∅;

tant que S 6=∅

choisir C ∈S,S :=S\ {C};

siC =2 alors retourner faux ; (* insatisfiable *)

siC est une tautologie alors; (* passer `a la clause suivante. *) sinon, si C ∈Sat alors; (* idem *)

sinon pour tout r´esolvantC1 entre C et une clause deSat∪ {C} S :=S∪ {C1};

Sat:=Sat∪ {C};

Notons que l’on ´elimine les tautologies, qui ne sont pas rajout´ees `a Sat : ceci pr´eserve la compl´etude, car aucun nœud d’´echec ne peut ˆetre un nœud d’´echec pour une tautologie, laquelle est par d´efinition vraie dans tout environnement. On ´elimine aussi les clausesC sont d´ej`a dans Sat.

⊲ Exercice 3.4

Montrer que le probl`eme 2-SAT :

ENTR´EE : une liste finie,S, de 2-clauses ; QUESTION :Sest-elle satisfiable ?

est dansP. On rappelle qu’une2-clause est une clause contenant au plus deux litt´eraux.

⊲ Exercice 3.5

Soit S un ensemble de clauses, avec FV(S) = {A0, A1, . . . , An−1}. Un renommage R de S est un sous-ensemble de FV(S). L’application R[S] du renommage R `a un litt´eral, une clause, ou un ensemble de clauses S est d´efini comme l’objet obtenu en changeant le signe de toutes les occurrences des atomes de R, et en laissant inchang´e le signe des autres. Par exemple, si R = {A1} et S = {+A1+A2,A1∨ −A0}, on a R[S] ={−A1+A2,+A1∨ −A0}. Disons qu’un ensemble de clausesS estHorn-renommable si et seulement s’il existe un renommageR tel queR[S]soit un ensemble de clauses de Horn. Montrer que le langage HORN-REN : ENTR´EE : un ensemble de clausesS;

QUESTION :Sest-il Horn-renommable ?

est r´eductible en temps polynomial `a 2-SAT. En d´eduire que HORN-RENP.

⊲ Exercice 3.6

On consid`ere le langage HORN-REN-SAT :

ENTR´EE : un ensemble de clauses Horn-renommableS; QUESTION :Sest-elle satisfiable ?

Montrons, en utilisant une variante ad´equate de DPLL, que HORN-REN-SATP. Attention : on rappelle que l’on doit d´ecider non seulement siS est satisfiable, mais aussi siS est de la forme requise en ENTR´EE.

⊲ Exercice 3.7

On consid`ere la r`egle de esolution ordonn´ee. ´Etant donn´ee une ´enum´eration A0, A1, . . . , An−1 des variables libres deS, disons queAi estmaximal dans une clauseC∨ ±Aisi et seulement si les atomesAj deC sont tous tels quej < i. La r´esolution ordonn´ee est la r`egle de r´esolution ordinaire :

C+A AC

CC

mais contrainte par le fait que A soit maximal dans les deux pr´emisses. Montrer que la r´esolution ordonn´ee est encore correcte et compl`ete.

⊲ Exercice 3.8

On a vu `a l’exercice 2.3 que 3-SAT-3-OCC ´etaitNP-complet. Montrer que le probl`eme analogue SAT-2-OCC est, lui, dansP:

ENTR´EE : une liste finie,S, de clauses, o`u chaque variable propositionnelle apparaˆıt au plus2fois ; QUESTION :Sest-elle satisfiable ?

Dans le document Logique propositionnelle, P, NP (Page 42-45)