Notions de logique

publicité
Notions de logique
Judicaël Courant
17 septembre 2014
1 Manipulation de termes et formules
1.1 Exemple
exemple
NB : on manipulera des formules sans quantificateurs.
1.2 Syntaxe : concrète ou abstraite ?
Quand on étudie une formule, on peut parler de
sa syntaxe concrète : la chaîne de caractères qui permet de l’écrire ;
htermei : := hvariablei
| htermei ‘+’ htermei
| htermei ‘−’ htermei
| htermei ‘×’ htermei
| htermei ‘/’ htermei
| hconstante entièrei
NB : Cette grammaire ne précise rien
– ni sur le sens d’une formule ou d’un terme ;
– ni même sur la façon de lever les ambiguïtés lorsqu’on lit une formule ou un
terme écrit de façon concrète (par exemple : a + b × c est-il un arbre de racine ×
ou + ?).
Elle sert à représenter uniquement ce qui se passe sur les arbres.
Ces arbres se modélisent naturellement par un type Caml :
type terme =
| Variable of string
| Constante of int
| Plus of terme ∗ terme
| Moins of terme ∗ terme
| Mult of terme ∗ terme
| Div of terme ∗ terme
;;
1.3 Syntaxe abstraite
type formule_atomique =
| InfStr of terme ∗ terme
| Inf of terme ∗ terme
| SupStr of terme ∗ terme
| Sup of terme ∗ terme
;;
La syntaxe concrète peut (ici) être décrite par une grammaire abstraite :
hformulei : := hformule atomiquei
| hformulei ‘∧’ hformulei
| hformulei ‘∨’ hformulei
| hformulei ‘⇒’ hformulei
| hformulei ‘ ⇐⇒ ’ hformulei
| ‘¬’ hformulei
type formule =
| Atome of formule_atomique
| Conj of formule ∗ formule
| Disj of formule ∗ formule
| Impl of formule ∗ formule
| Equiv of formule ∗ formule
| Neg of formule
;;
sa syntaxe abstraite : une description arborescente de cette formule.
C’est le second point qui nous intéresse.
hformule atomiquei : := htermei ‘=’ htermei
| htermei ‘<’ htermei
| htermei ‘≤’ htermei
| htermei ‘>’ htermei
| htermei ‘≥’ htermei
1
1.4 Sémantique
1.5 Sémantique des termes
Sémantique : sens, valeur.
2
On va interpréter les termes comme des représentations de nombres flottants pour
leur donner une valeur. Ici l’ensemble des valeurs pour les termes sera l’ensemble des
réels.
Étant donné un terme t, on veut définir précisément sa sémantique.
Problème : quelle valeur donner aux variables ?
L’interprétation d’un terme doit dépendre d’un environnement.
Définition 1 (Environnement). On appelle environnement toute fonction ρ définie sur
une partie V de l’ensemble des variables et associant à tout x ∈ V une valeur ρ(x).
Étant donné un environnement ρ et un terme t on notera [[t]]ρ la valeur de t dans
l’environnement ρ.
On définit alors la sémantique des termes par induction sur leur syntaxe abstraite de
la façon suivante :
[[x]]ρ
[[t1 + t2 ]]ρ
[[t1 − t2 ]]ρ
[[t1 × t2 ]]ρ
= ρ(x)
= [[t1 ]]ρ + [[t2 ]]ρ
= [[t1 ]]ρ − [[t2 ]]ρ
= [[t1 ]]ρ × [[t2 ]]ρ
[[t1 ]]ρ
[[t1 /t2 ]]ρ =
[[t2 ]]ρ
pour toute variable x
Attention : le terme t1 + t2 représente bien un arbre avec pour racine l’opérateur
+ et pour sous-arbre t1 et t2 . Le symbole + n’y a donc pas la même signification que
dans le membre de droite : [[t1 ]]ρ + [[t2 ]]ρ représente en effet un réel qui est le résultat de
l’addition de deux réels.
L’implantation est assez directe. On s’intéressera ici uniquement à des environnements définis sur un ensemble fini de variables, et on représentera par la liste
[(x0 , v0 ); . . . ; (xn−1 ; vn−1 )] la fonction qui pour tout i ∈ [[0, n[[ associe vi à xi .
type var == string ; ;
type ’ a env == ( var ∗ ’ a ) list ; ;
rec eval_t e t = match t with
Variable x −> assoc x e
Constante n −> float_of_int n
Plus ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 +. v2
| Moins ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 −. v2
| Mult ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 ∗ . v2
let
|
|
|
3
;;
| Div ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 / . v2
1.6 Sémantique des formules
On veut étendre cette interprétation aux formules.
La valeur d’une formule est alors une valeur de vérité : vrai (V ) ou faux (F ).
[[Egal(t1 , t2)]]ρ = V
=F
[[Inf(t1 , t2)]]ρ = V
=F
..
.
si [[t1 ]]ρ = [[t2 ]]ρ
sinon
si [[t1 ]]ρ ≤ [[t2 ]]ρ
sinon
[[Conj(A1 , A2 )]]ρ = V
=F
[[Disj(A1 , A2 )]]ρ = F
=V
[[Impl(A1 , A2 )]]ρ = F
=V
si [[A1 ]]ρ = [[A2 ]]ρ = V
sinon
si [[A1 ]]ρ = [[A2 ]]ρ = F
sinon
si [[A1 ]]ρ = V et [[A2 ]]ρ = F
sinon
[[Equiv(A1 , A2 )]]ρ = V
=F
[[Neg(A)]]ρ = V
=F
si [[A1 ]]ρ = [[A2 ]]ρ
sinon
si [[A]]ρ = F
si [[A]]ρ = V
1.7 Implantation
l e t rec eval_fa e fa = match fa with
| Egal ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 = v2
4
| InfStr ( t1 , t2 ) −>
l e t v1 = eval_t e t1 and v2 = eval_t e t2 in
v1 < v2
...
;;
let
|
|
|
|
|
|
;;
rec eval_f e f = match f with
Atome fa −> eval_fa e fa
Conj ( f1 , f2 ) −> eval_f e f1 && eval_f e f2
Disj ( f1 , f2 ) −> eval_f e f1 || eval_f e f2
Impl ( f1 , f2 ) −> not ( eval_f e f1 ) || eval_f e f2
Equiv ( f1 , f2 ) −> eval_f e f1 = eval_f e f2
Neg ( f1 ) −> not ( eval_f e f1 )
engendré par la grammaire abstraite suivante :
hformulei : := hvariable propositionnellei
| hformulei ‘∧’ hformulei
| hformulei ‘∨’ hformulei
| hformulei ‘⇒’ hformulei
| hformulei ‘ ⇐⇒ ’ hformulei
| ‘¬’ hformulei
| ‘⊥’
| ‘>’
Définition 3. Les atomes de la logique propositionnelle sont les variables. On appelle
littéral, toute formule qui est soit un atome a, soit la négation ¬a d’un atome.
Étant donné un littéral l, on notera l le littéral
– ¬l si l est un atome ;
1.8 Remarques
– a si l est la négation ¬a d’un atome a.
D’autres sémantiques sont possibles. Pour les termes on peut par exemple donner des
sémantiques à valeur :
– dans les entiers ;
– dans Z/nZ.
Pour les formules, on peut définir une sémantique à valeurs :
– dans un ensemble à trois valeurs (vrai/faux/indéfini) 1
– dans l’ensemble des ouverts d’un espace topologique (modèles de la logique
intuitionniste)
Définition 4 (Logique booléenne). On se donne deux valeurs de vérités notées 0 et 1 (ou
⊥ et >, ou F et V ). L’ensemble { 0, 1 } est appelé ensemble des booléens et est noté B.
On définit deux lois de composition interne sur + et . sur B par :
1.9 Problèmes
ainsi qu’une application . : B → B par :
Définition 2. On dit qu’un environnement ρ satisfait une formule A si [[A]]ρ = V .
On dit qu’une formule A est satisfiable (ou satisfaisable) s’il existe un environnement ρ
qui satisfait A.
On dit qu’une formule est une tautologie si dans tout environnement donnant une
définition à chaque variable de A, son interprétation vaut V .
Comment tester qu’une formule est satisfiable ? est une tautologie ?
Pour répondre à cette question, on va se placer dans un cadre plus simple. . .
0+0=0
0+1=1
1+0=1
1+1=1
0.0 = 0
0.1 = 0
1.0 = 0
1.1 = 1
0=1
1=0
+ et . sont deux lois :
1. associatives et commutatives ;
2. possédant chacune un élément neutre (respectivement 0 et 1) et un élément
absorbant (respectivement 1 et 0) ;
3. distributives l’une par rapport à l’autre (dans les deux sens !).
2 Logique propositionnelle
De plus, pour tout booléens a et b, on a
2.1 Définition
Étant donné un ensemble (au plus dénombrable) V de variables propositionnelles,
l’ensemble F des formules de la logique propositionnelle est l’ensemble de formules
b+b=1
b.b = 0
a + b = a.b
a.b = a + b
1. Séduisant pour faire de «l’intelligence artificielle» mais ne tient pas ses promesses.
5
6
Définition 5 (Interprétation d’une formule propositionnelle). Une valuation (atomique)
ou interprétation des variables est une fonction ρ : V → B. L’interprétation [[.]]ρ : V → B
associée à une valuation ρ est définie par induction structurelle sur les formules par :
[[a]]ρ = ρ(a) pour a ∈ V
[[φ ∧ ψ]]ρ = [[φ]]ρ .[[ψ]]ρ
[[⊥]]ρ = 0
[[φ ⇒ ψ]]ρ = [[φ]]ρ + [[ψ]]ρ
[[¬φ]]ρ = [[φ]]ρ
[[φ ∨ ψ]]ρ = [[φ]]ρ + [[ψ]]ρ
[[>]]ρ = 1
[[φ ⇐⇒ ψ]]ρ = ([[φ]]ρ + [[ψ]]ρ ).([[φ]]ρ + [[ψ]]ρ )
Étant donné une formule φ, [[φ]]ρ est la valeur de vérité de la formule φ pour la valuation
ρ.
NB : Pour toute valuation ρ et toute formule φ, la restriction ρ0 de ρ à l’ensemble des
variables apparaissant dans φ vérifie : [[φ]]ρ0 = [[φ]]ρ .
On appelle table de vérité un tableau dans lequel la dernière colonne est étiquetée par une formule propositionnelle et les colonnes précédentes par les n variables
apparaissant dans la formule.
La table comporte alors, pour chacune des 2n valuations atomiques possibles sur ces
n variables, exactement une ligne donnant les valeurs de vérité associées aux variables
et la valeur de vérité de la formule.
exemples
Définition 6. On dit qu’une formule φ est satisfaite par une valuation ρ, si [[φ]]ρ = 1, et
on note cela ρ |= φ.
On dit qu’une formule est satisfiable (ou satisfaisable) s’il existe au moins une valuation
qui la satisfait.
On dit que ρ falsifie la formule φ si [[φ]]ρ = 0.
On dit qu’une formule φ est une tautologie si elle est satisfaite par toute valuation, et on
note cela |= φ :
|= φ ⇐⇒ ∀ρ ∈ B V ρ |= φ
On dit que deux formules φ et ψ sont équivalentes et on note φ ≡ ψ, si pour toute
valuation ρ, [[φ]]ρ = [[ψ]]ρ .
Proposition 1. Soit φ et ψ deux formules.
L’équivalence de formule est une congruence, c’est-à-dire une relation d’équivalence qui
de plus passe au contexte : notons C[φ] une formule contenant ψ comme sous-formule
φ et C[ψ] la formule obtenue en remplaçant cette sous-formule par ψ. Si φ ≡ ψ alors
C[φ] ≡ C[ψ].
Les tautologies sont les formules équivalentes à >, les formules non-satisfiables sont
celles équivalentes à ⊥.
φ est satisfiable si et seulement si ¬φ n’est pas une tautologie.
φ est une tautologie si et seulement si ¬φ n’est pas satisfiable.
φ et ψ sont équivalentes si et seulement si φ ⇐⇒ ψ est une tautologie.
7
On déduit des propriétés de l’algèbre de Boole B les résultats suivants :
Proposition 2. Soit φ, ψ et χ trois formules. Alors
φ ∨ (ψ ∨ χ) ≡ (φ ∨ ψ) ∨ χ
φ∨ψ ≡ψ∨φ
φ ∧ (ψ ∨ χ) ≡ (φ ∧ ψ) ∨ (φ ∧ χ)
φ∨φ≡φ
φ∨⊥≡φ
φ∧⊥≡⊥
¬¬φ ≡ φ
φ ∧ (ψ ∧ χ) ≡ (φ ∧ ψ) ∧ χ
φ∧ψ ≡ψ∧φ
φ ∨ (ψ ∧ χ) ≡ (φ ∨ ψ) ∧ (φ ∨ χ)
φ∧φ≡φ
φ∧>≡φ
φ∨>≡>
2.2 Le problème SAT
On s’intéresse à une formule de taille n contenant k variables distinctes.
NB :
1. k = O(n) ;
2. borne serrée, car il est facile de construire une formule de taille n dont le nombre
de variables est proportionnel à la taille de la formule ;
3. c’est même le cas pour toute formule ne comportant que des variables distinctes
et ne comportant pas de double négation (exercice : une formule de taille n sans
double négation comporte au moins (n + 2)/4 variables).
– Comment tester qu’une formule est satisfiable ? (problème SAT )
– Comment tester qu’une formule est une tautologie ?
2.2.1 Méthode naïve
Essayer toutes les interprétations des variables.
Complexité en temps : O(2n ).
2.2.2 Test polynomial par certificat
Si on dispose d’une valuation ρ on peut tester si ρ |= φ en temps polynomial en la
taille de φ (et même linéaire si les variables de φ sont numérotées par des entiers de 0
à k− et ρ représenté par un tableau de booléens).
Donc si φ est satisfiable, il existe une valuation ρ, qu’on pourra appeler certificat (ou
témoin, ou preuve) de satisfiabilité, vérifiable en temps polynomial.
On dit que la satisfiabilité est vérifiable par certificat en temps polynomial.
NB : le caractère tautologique d’une proposition n’est pas (a priori) vérifiable par
certificat en temps polynomial 2 . En revanche le caractère non-tautologique d’une
proposition l’est.
2. Avis aux amateurs : Le premier qui arrivera à le démontrer deviendra célèbre.
8
2.2.3 Non-déterminisme
On s’est cantonné jusqu’ici à un modèle de calcul où les algorithmes sont déterministes.
On veut étudier des algorithmes qui donnent une réponse du type acceptation/refus.
On pourrait imaginer (et définir rigoureusement) un modèle de calcul où, à certains
moment, la machine dispose d’une instruction pour tirer un booléen de façon nondéterministe 3 . Pour un même programme et une même donnée, il y a donc plusieurs
exécutions possibles.
On dira que le programme accepte la donnée s’il y a au moins une exécution qui
conduit à une acceptation (on peut imaginer que toutes les exécutions possibles se
déroulent en parallèle).
Ici, on peut trouver un algorithme permettant de tester la satisfiabilité d’une formule
φ de taille n en temps polynomial en n :
1. Faire la liste des variables v0 , . . ., vk−1 de φ ;
2. Initialiser un tableau de k booléens t ;
3. Pour k ∈ [[0, k[[, choisir un booléen b et affecter b à t[k].
4. Calculer la valeur vérité de φ pour l’interprétation vi 7→ t[i]. Si elle vaut vrai,
accepter.
La satisfiabilité est donc vérifiable en temps polynomial par une machine nondéterministe. On note N P l’ensemble des problèmes solubles en temps polynomial
non-déterministe.
SAT ∈ N P
On peut montrer que N P est exactement l’ensemble des problèmes vérifiables par
certificat en temps polynomial.
2.3 Formes normales conjonctives/disjonctives
Définition 7 (Disjonction/conjonction n-aire). Étant donné n formules φ0 , . . . , φn−1 ,
avec n ∈ N∗ , on appelle disjonction n-aire de ces formules la formule φ0 ∨(φ1 ∨ (. . . ∨ φn−1 ))
notée aussi
^
φi
i∈[[0,p[[
Par convention, la disjonction de 0 formules est ⊥.
De cette façon, si p et q sont deux entiers naturels et φ0 , . . . , φp+q−1 sont p + q formules,
on a
 


^
i∈[[0,p+q[[
φi = 
^
i∈[[0,p[[
φi  ∨ 
^
i∈[[p,p+q[[
φi 
3. Dire «au hasard» laisserait entendre qu’on va parler de probabilités.
9
De même, on définit la conjonction
conjonction est > si p = 0.
W
i∈[[0,n[[
φi de n formules, avec la convention que cette
Définition 8 (Forme normale conjonctive/disjonctive). On appelle clause toute disjoncV
tion i∈[[0,p[[ li de littéraux. La formule ⊥, disjonction de 0 littéraux est appelée clause
vide.
W
On appelle monôme toute conjonction i∈[[0,p[[ li de littéraux. La formule >, disjonction
de 0 littéraux est appelée monôme vide.
On dit qu’une formule φ est en forme normale conjonctive s’il s’agit d’une conjonction
V
de disjonction de littéraux, c’est-à-dire d’une conjonction i∈[[0,q[[ de clauses. On dit qu’elle
est en forme normale conjonctive distinguée si, dans chaque clause Ci , on trouve une et
une seule fois chaque variable de la formule φ.
On dit qu’une formule est en forme normale disjonctive s’il s’agit d’une conjonction
de disjonction de littéraux. On peut définir de même le fait qu’une formule est en forme
normale disjonctive distinguée.
Remarque : soit C une clause. Alors ¬C est équivalente à une conjonction de littéraux.
On en déduit que la négation de toute formule en FNC est équivalente à une formule
en FND. De même, la négation de toute FND est équivalente à une formule en FNC.
Proposition 3. Un monôme (resp. une clause) est insatisfiable (resp. une tautologie) si
et seulement s’il contient deux littéraux li et lj tels que li soit une variable et lj soit sa
négation.
Une FNC est satisfiable si et seulement si elle contient au moins un monôme satisfiable.
Une FND est une tautologie si et seulement si chacune de ses clauses en est une.
On peut donc tester en temps polynomial (et même facilement en temps quadratique) :
1. si une formule en FNC est satisfiable ;
2. si une formule en FND est une tautologie.
Théorème 1. Pour toute formule φ, il existe une formule ψ en forme normale conjonctive
(resp. disjonctive) vérifiant φ ≡ ψ.
Démonstration : par induction sur φ.
2.4 Résoudre SAT de façon efficace ?
On déduit de ce qui précède un algorithme pour tester la satisfiabilité d’une formule
φ.
1. Transformer φ en une formule ψ équivalente en FND (voir démonstration du
théorème d’existence de cette FND).
2. Tester si ψ est satisfiable (en temps quadratique).
3. On en déduit immédiatement si φ est satisfiable.
10
On dit qu’on a réduit le problème SAT au problème DN F SAT .
On a un algorithme relativement efficace pour DN F SAT . L’algorithme obtenu pour
SAT est-il efficace ?
Réponse : non !
Pour n ∈ N∗ , notons φn = (X1 ∨ Y1 ) ∧ . . . ∧ (Xbn/4c ∨ Ybn/4c ) où les Xi et les Yi sont
des variables. φn est de taille n.
La FND ψn de φn obtenue par l’algorithme précédent est de taille Ω(2n/4 ), donc le test
de satisfiabilité de cette FND demandera un temps exponentiel en n et non un temps
polynomial.
Si on veut réduire un problème à un autre et garder une complexité acceptable, il
faut que la réduction :
1. fonctionne en temps polynomial ;
2. donne un nouveau problème de taille polynomiale en la taille du problème initial.
2.5 Unicité des FNC/FND ?
Il n’y a pas unicité, pour deux types de raisons :
1. Des raisons non-essentielles de syntaxe : si a et b sont deux atomes, on a a∨b ≡ b∨a
et ces deux clauses sont en FNC mais sont distinctes. Même problème avec a∨(b∨c)
et a ∨ (b ∨ c)
2. Des variables en doublon dans certaines clauses/conjonction de littéraux : a ≡
a ∧ (b ∨ ¬b).
3. Des problèmes liés à l’ajout/l’omission de certaines variables :
(a ∨ c) ∧ (a ∨ ¬c) ≡ a.
Pour parler de l’unicité, nous allons devoir restreindre les clauses et monômes que
nous considérons :
Définition 9. Soit un ensemble fini V = { a0 , . . . , an−1 } de n variables, numérotées de
0 à n − 1. Une clause distinguée (resp. un monôme distingué) sur les variables a0 , . . . ,
W
V
an−1 est une clause (resp. un monôme) de la forme i∈[[0,n[[ li (resp. i∈[[0,n[[ li ) où pour tout
i ∈ [[0, n[[, li est soit ai , soit ¬ai . Autrement dit : chaque variable y apparaît une et une
seule fois et les variables apparaissent dans l’ordre de leurs numéros.
Une FNC (resp. FND) est dite distinguée si et seulement si toutes ses clauses (resp. ses
monômes) le sont.
Pour toute clause distinguée C sur les variables a0 , . . . , an−1 , il existe une unique
valuation ρ vérifiant ρ 6|= C, c’est la valuation ρ : { a0 , . . . , an−1 } définie par ρ(ai ) = 1 si
¬ai apparaît dans M , et ρ(ai ) = 0 sinon. Réciproquement, pour toute valuation, il existe
une unique clause C vérifiant ρ 6|= C.
Démonstration
Théorème 2. Pour toute φ dont les variables sont parmi a0 , . . . , an−1 , il existe une formule
ψ en forme normale disjonctive (resp. conjonctive) distinguée sur a0 , . . . , an−1 équivalente
à φ.
Cette formule est unique, au sens où l’ensemble de ses monômes (resp. clauses) est exactement l’ensemble des monômes (resp. clauses) associés aux valuations ρ : { a0 , . . . , an } → B
tels que ρ |= phi (resp. ρ 6|= φ).
Démonstration (cas des FND).
Proposition 5. L’unique FND distinguée équivalente à une formule insatisfiable est la
disjonction vide de 0 monômes.
L’unique FNC distinguée équivalente à une tautologie est la conjonction vide.
Démonstration : application directe du théorème.
Rem : cela n’a pas énormément d’utilité pratique, les FND distinguées n’étant pas très
faciles à calculer.
2.6 SAT : classifions
On peut s’intéresser à quelques sous-problèmes de SAT :
1. Tester si une FND est dans SAT (DN F SAT ).
2. Tester si une FND distinguée est satisfiable.
3. Tester si formule en FNC est dans satisfiable (CN F SAT ).
4. Tester si une formule en FNC, dans laquelle chaque clause contient au plus 3
littéraux, est satisfiable (3CN F SAT ou 3SAT ).
Proposition 4. Pour tout monôme distingué M sur les variables a0 , . . . , an−1 , il existe
une unique valuation ρ vérifiant ρ |= M , c’est la valuation ρ : { a0 , . . . , an−1 } définie
par ρ(ai ) = 0 si ¬ai apparaît dans M , et ρ(ai ) = 1 sinon. Réciproquement, pour toute
valuation, il existe un unique monôme M vérifiant ρ |= M .
On peut évidemment réduire chacun de ces problèmes à SAT : c’est trivial puisque
ce sont des sous-problèmes.
Ce qui nous intéresse, c’est de réduire SAT à ces sous-problèmes. On a vu qu’on
pouvait réduire SAT à DN F SAT mais que cette réduction n’était pas polynomiale.
On peut essayer de réduire SAT à la satisfiabilité des F N D distinguées : malheureusement, le théorème d’existence et d’unicité donné consiste à étudier toutes les
valuations possibles — soit 2n si φ a n variables — ce qui est exponentiel.
On peut clairement réduire 3SAT à CN F SAT , puisque c’est un cas particulier, et
CN F SAT à SAT .
Peut-on réduire polynomialement SAT à CN F SAT ?
Oui ! On peut même le réduire polynomialement à 3SAT !
dessin
11
12
NB : attention, l’ordre des variables est important.
Cela peut se faire de la façon suivante. On considère une formule φ contenant les
variables a0 , . . . , an−1 . On se donne une infinité de variables supplémentaires vk , pour
k ∈ N. On note φ0 , . . . , φN −1 les N sous-formules de φ, avec φN −1 = φ. On construit
alors, pour tout i ∈ [[0, k[[, la formule Fi en fonction de la forme de φi comme suit :
φi
¬φj
φj ∧ φk
φj ∨ φk
aj
φj ⇒ φk
φj ⇐⇒ φk
⊥
>
Fi
vi ⇐⇒ ¬vj
vi ⇐⇒ (vj ∧ vk )
vi ⇐⇒ (vj ∨ vk )
vi ⇐⇒ aj
vi ⇐⇒ (vj ⇒ vk )
vi ⇐⇒ (vj ⇐⇒ vk )
vi ⇐⇒ ⊥
vi ⇐⇒ >
Démonstration facile en raison des réductions polynomiales de SAT à 3 − CN F SAT
et à CN F SAT . . . à partir du moment où on a les définitions !
Proposition 7. S’il existe un algorithme polynomial pour résoudre SAT (ou 3 − SAT ),
alors N P = P .
Démonstration : là encore hors programme. L’idée est que P ⊂ N P est évident et
que d’autre part, SAT étant N P -complet, tout problème N P peut polynomialement se
réduire à SAT , donc si SAT était résoluble en temps polynomial, tout problème N P le
serait aussi, donc on aurait N P ⊂ P , donc P = N P .
On conjecture plutôt P 6= N P mais c’est un problème ouvert depuis qu’il a été posé
en 1970.
Alors, si φ est satisfaite par une valuation ρ sur a0 , . . . an−1 , on peut étendre ρ en une
valuation ρ0 sur a0 , . . . , an−1 , v0 , v1 , . . . en posant, pour tout i ∈ [[0, N [[, ρ0 (vi ) = [[φi ]]ρ et
ρ0 satisfait alors simultanément toutes les formules Fi pour i ∈ [[0, N [[ ainsi que vN −1 .
Réciproquement, si on peut trouver une valuation ρ0 sur a0 , . . . , an−1 , v0 , v1 ,. . .
satisfaisant simultanément toutes les formules Fi pour i ∈ [[0, N [[ ainsi que vN −1 alors
en notant ρ la restriction de ρ0 à { a0 , . . . , an−1 }, on a pour tout i ∈ [[0, N [[, [[φi ]]ρ = ρ0 (vi )
et en particulier [[φ]]ρ = ρ0 (vN −1 ) = 1.
De plus, les formules Fi sont de taille bornée et comportent chacune au plus 3
littéraux. Donc chacune des Fi peut, en temps constant, être mise sous forme normale
conjonctive dont toute clause comporte au plus 3 littéraux. On peut donc transformer
chaque Fi en une F N D Fi0 en temps constant (donc au total en O(N ) = O(n)).
2.7 Et alors ?
Les problèmes SAT et 3 − CN F SAT sont équivalents au sens où on sait réduire
chacun des deux en l’autre, en temps polynomial.
Malheureusement, on ne connaît pas d’algorithme polynomial pour résoudre 3 −
CN F SAT .
2.8 P et NP
On dit qu’un problème est NP-dur, si tout problème NP peut se réduire polynomialement à ce problème.
On dit qu’un problème est NP-complet s’il est NP-dur et NP.
Théorème 3 (Cook-Levin). Le problème SAT est NP-complet.
La démonstration (et même les définitions précises de NP et NP-dur) sont hors de
portée du programme.
Proposition 6. Les problèmes CN F SAT et 3 − CN F SAT sont NP-complets.
13
14
Téléchargement