Problème 2-SAT

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

En informatique théorique, le problème 2-SAT est un problème de décision. C'est un cas particulier 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 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 formule de Krom.

Définitions et exemples[modifier | modifier le code]

Restriction syntaxique[modifier | modifier le code]

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)[1]. Par exemple :

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 :

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

Problème algorithmique[modifier | modifier le code]

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

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[modifier | modifier le code]

Graphe d'implication de la formule

On peut représenter une formule en forme normale conjonctive avec au plus 2 littéraux par clause par un graphe orienté appelé graphe d'implication (en). L'idée est de remarquer qu'une clause de taille 2 peut toujours s'écrire comme une implication logique. Par exemple la clause peut s'écrire , ou encore . On peut alors construire un graphe dont les sommet sont les littéraux, et dont les arêtes représentent les implications. C'est un graphe antisymétrique (en).

Algorithmes[modifier | modifier le code]

Il existe plusieurs algorithmes de complexité linéaire pour le problème, par exemple en utilisant le graphe d'implication[3].

Théorie de la complexité[modifier | modifier le code]

2-SAT est complet pour la classe de complexité NL, tout comme le problème de la st-connexité (en).

Notes et références[modifier | modifier le code]

  1. Voir par exemple Sylvain Perifel, Complexité algorithmique, Ellipses, , 432 p. (ISBN 9782729886929, lire en ligne), chap. 3.2.3 (« Autres problèmes NP -complets »), p. 76.
  2. Denis Trystram, « Leçon 5. Le problème SAT et ses variantes »,
  3. Bengt Aspvall, Michael F. Plass et Robert E. Tarjan, « A linear-time algorithm for testing the truth of certain quantified boolean formulas », Information Processing Letters, vol. 8, no 3,‎ , p. 121-123 (DOI 10.1016/0020-0190(79)90002-4, lire en ligne).