Adloun

informatique (MP2I/MPI) · Chapitre 20 · Application directe du cours

Problème — -sat : pourquoi le saut se fait entre et

Logique propositionnelle · niveau 3 (difficile)

Énoncé

Le cours annonce que -sat est linéaire. On construit ici l'algorithme.

À une fnc dont toutes les clauses ont exactement deux littéraux, on associe le graphe d'implication : ses sommets sont les littéraux, et chaque clause produit deux arcs.

  • Quels arcs ? Pourquoi deux et non un ?
  • Énoncer et démontrer le critère de satisfiabilité.
  • Quelle complexité ? Pourquoi le procédé échoue-t-il dès trois littéraux par clause ?

Corrigé

1. Les deux arcs. La clause est équivalente à , et aussi à — c'est la même formule lue dans les deux sens. On pose donc les arcs

Il en faut deux, et c'est le point de départ. Un seul arc encoderait une implication, pas une disjonction : on perdrait la moitié de l'information, et le graphe cesserait d'être symétrique — propriété dont la preuve a besoin. Le graphe obtenu vérifie : est un arc si et seulement si en est un. C'est la contraposée, devenue une symétrie du graphe.

◆Théorème 20.1Critère de -satisfiabilité

Une fnc à deux littéraux par clause est satisfiable si et seulement si aucune variable n'a et dans la même composante fortement connexe du graphe d'implication.

Démonstration

(, par contraposée) Supposons et dans la même composante fortement connexe : il existe un chemin et un chemin . Or un arc signifie « tout modèle qui rend vrai rend vrai », et cette propriété se transmet le long d'un chemin. Si un modèle rendait vraie, le premier chemin le forcerait à rendre vraie ; s'il rendait fausse, donc vraie, le second le forcerait à rendre vraie. Aucun modèle n'existe.

() On construit un modèle. Contractons les composantes fortement connexes : le graphe quotient est sans circuit (chapitre chap:graphes-avances), donc admet un tri topologique. Posons lorsque la composante de vient après celle de dans ce tri, et sinon — ce qui a un sens puisque les deux composantes sont distinctes par hypothèse. La symétrie du graphe garantit que cette affectation est cohérente, et qu'aucun arc ne mène d'un littéral vrai à un littéral faux ; toutes les clauses sont donc satisfaites.

3. La complexité. Le graphe a sommets et arcs ; les composantes fortement connexes se calculent en par l'algorithme de Kosaraju ou celui de Tarjan (chapitre chap:graphes-avances), et le tri topologique aussi. Total : — linéaire, comme annoncé.

Mesures. Le critère a été confronté à une recherche exhaustive sur instances tirées au hasard ( à variables, à clauses) : accord dans tous les cas. Trois exemples :

FormuleComposantesVerdict
satisfiable
la même insatisfiable
satisfiable

La deuxième ligne est instructive : les quatre clauses sur deux variables forment l'antilogie de l'exercice 20.3, et le graphe le voit — les quatre littéraux s'effondrent en une seule composante, où et se retrouvent donc ensemble.

Pourquoi cela s'arrête à deux littéraux. Toute la construction repose sur ceci : une clause de deux littéraux équivaut à une implication entre un littéral et un littéral. Avec trois littéraux, se lit : la conclusion n'est plus un littéral mais une disjonction, et il n'y a plus d'arc à poser. On n'obtient pas un graphe mais un hypergraphe, où la fermeture transitive n'est plus calculable en temps polynomial — et de fait, -sat est np-complet (chapitre chap:decidabilite). Le saut de à est un saut de structure, pas de taille.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre