Problème 2-SAT

De testwiki
Aller à la navigation Aller à la recherche

En informatique théorique, le problème 2-SAT est un problème de décision. C'est une restriction du problème SAT qui peut être résolu en temps polynomial, alors que le problème général est NP complet. Le problème 2-SAT consiste à décider si une formule booléenne en forme normale conjonctive, dont toutes les clauses sont de taille 2, est satisfaisable. De telles formules sont appelées 2-CNF ou formules de Krom[1]Modèle:,[2].

Définitions et exemples

Restriction syntaxique

On considère des formules en forme normale conjonctive, c'est-à-dire que ce sont des ET de OU de littéraux (un littéral est une variable ou la négation d'une variable)[3]. Par exemple :

(x1¬x2¬x3)(¬x1x3x4x6)

Pour le problème 2SAT, on se restreint le nombre de littéraux par clause est égal 2. Un exemple d'une telle formule est alors :

(x1¬x2)(¬x1x3)

Une formule en forme normale conjonctive avec 2 littéraux par clause s'appelle aussi une 2-CNF ou formule de Krom.

Problème algorithmique

Le problème de décision 2SAT est le suivant[4] :

Entrée : Une formule en forme normale conjonctive avec 2 littéraux par clause ;

Question : Existe-t-il une assignation des variables, qui rende la formule vraie ? Autrement dit, la formule peut-elle être satisfaite ?

Dans les applications il est souvent nécessaire de pouvoir donner une solution explicite, et non pas seulement de décider si elle existe.

Graphe d'implication

Graphe d'implication de la formule (x0x2)(x0¬x3)(x1¬x3)(x1¬x4)(x2¬x4)(x0¬x5)(x1¬x5)(x2¬x5)(x3x6)(x4x6)(x5x6).

On peut représenter une formule en forme normale conjonctive avec au plus 2 littéraux par clause par un graphe orienté appelé Modèle:Lien. La figure ci-contre montre un graphe d'implication pour la formule (x0x2)(x0¬x3)(x1¬x3)(x1¬x4)(x2¬x4)(x0¬x5)(x1¬x5)(x2¬x5)(x3x6)(x4x6)(x5x6).

L'idée est de remarquer qu'une clause de taille 2 peut toujours s'écrire comme une implication logique. Par exemple la clause (x0x2)dans la formule ci-dessus peut s'écrire (¬x0x2), ou encore (¬x2x0). On peut alors construire un graphe dont les sommets sont les littéraux, et dont les arêtes représentent les implications. C'est pourquoi il y a un arc du sommet ¬x0au sommet x2et un arc du sommet ¬x2au sommet x0.

C'est un Modèle:Lien et on peut montrer qu'une formule est satisfaisable si et seulement si dans son graphe d'adjacence aucun sommet xin'est dans la même composante fortement connexe que son nœud complémentaire ¬xi. On peut déduire de cette propriété un algorithme de complexité linéaire pour le problème[5].

Théorie de la complexité

Modèle:Section à sourcer Modèle:Section à vérifier 2-SAT est complet pour la classe de complexité NL, tout comme le problème de l'accessibilité dans un graphe. On donne ici des démonstrations pour l'appartenance à NL[6] et la NL-dureté[7].

Appartenance à NL

D'après le théorème d'Immerman-Szelepcsényi, co-NL = NL, donc pour montrer que 2-SAT est dans NL, il suffit de montrer que le problème dual 2-SAT, le problème qui consiste à savoir si une formule en forme normale conjonctive avec 2 n'est pas satisfiable, est dans NL. L'algorithme non-déterministe suivant décide 2-SAT en espace logarithmique :

  choisir une variable x parmi les variables de ϕ
  y=x
  tant que y¬x:
     si aucune clause de ϕ ne contient le littéral ¬y
        rejeter
     choisir une clause de la forme ¬yz ou z¬y
     y=z
  y=¬x
  tant que yx:
     si aucune clause de ϕ ne contient le littéral ¬y
        rejeter
     choisir une clause de la forme ¬yz ou z¬y
     y=z
  accepter

2-SATest donc dans NL.

NL-dureté

Comme ST-CON est (co)NL-complet, il suffit de construire une réduction en espace logarithmique de ST-CON vers 2-SAT pour montrer que 2-SAT est NL-dur.

Soient G=(V,E) un graphe orienté et s,t deux sommets de G.

En associant à chaque sommet de G une variable propositionnelle, chaque arête entre deux sommets p et q correspond à la clause ¬pq (ou pq).

Soient ϕ=(p,q)E(¬pq) et ψ=s¬tϕ.

Supposons ψ satisfiable. Soit σ une interprétation qui satisfait ψ.

Supposons qu'il existe un chemin s=u0u1un=t de s à t dans G. Pour tout i, on a σ(ui)=1 (par induction sur i):

  • ψ=s, donc σ(s)=1.
  • Soit i < n. Supposons avoir montré σ(ui)=1.

(ui,ui+1) est une arête de G, donc ψ=(¬uiui+1) et σ¬uiui+1. Comme σ(ui)=1, on a nécessairement σ(ui+1)=1.

Donc σ(t)=σ(un)=1. Or ψ=¬t, donc σ(t)=0, d'où une contradiction. G,s,t est donc une instance positive de ST-CON.

Supposons que G,s,t est une instance positive de ST-CON. Soit σ l'interprétation telle que pour tout sommet u, σ(u)=1 si u est accessible depuis s et σ(u)=0 sinon. Supposons que σ ne satisfait pas ψ. On a σ(s)=1 et σ(t)=0; il existe donc i tel que σ⊭¬uiui+1, ce qui correspond à une arête (ui,ui+1) telle que σ(ui)=1 et σ(ui+1)=0. ui est donc accessible depuis s, mais pas ui+1, ce qui contredit (ui,ui+1)E.

ψ est donc satisfiable.

ψ peut être construite en espace logarithmique (en la taille de G) pour toute instance de ST-CON.

2-SAT est donc NL-complet.

Notes et références

Modèle:Références

Modèle:Portail

  1. Modèle:Ouvrage
  2. A ne pas confondre avec les clauses de Horn qui sont aussi utilisées dans le problème SAT
  3. Voir par exemple Modèle:Complexité algorithmique (Perifel).
  4. Modèle:Lien web
  5. Modèle:Article.
  6. Modèle:Ouvrage
  7. Modèle:Ouvrage