Eléments de correction de l'exercice page 35 du polycopié de calculabilité de S. Cerrito

Rappel :

Trouver une interprétation qui rende vraie un ensemble de clauses c'est trouver
une interprétation qui rende vraie toute clause de l'ensemble.

Une clause est une disjonction de littéraux : pour rendre vraie la clause toute
entière il suffit de rendre vraie un de ses littéraux. Ici, on ne travaille que sur
des clauses qui ont au plus deux littéraux (de la forme p ou q).

Dans la suite, on posera P : " B, un ensemble de clauses, k' un entier : existe-t-il
une interprétation I dans laquelle au plus k' lettres propositionnelles prennent
la valeur vrai ? "

Preuve que le problème P considéré est dans la classe NP :

Etant donnée une interprétation quelconque des variables présentes dans les
clauses de l'ensemble B consideré, on vérifie en un temps linéaire par rapport
au nombre des variables
si cette interprétation convient ou pas.

Preuve que le problème P est NP-Complet :

On réduit le problème du stable à P.

Soit (G,k) une instance du stable où G = (U,A), U : ensemble de sommets,
A : ensemble d'arêtes.
On le transforme en une instance de P (B,k') où :


"G a un stable d'au moins k sommets" <=> "Il existe une interprétation I qui rende B
satisfaisable avec au plus k' variables propositionnelles "positionnées" à vrai".

Preuve de " => "

Preuve de " <= "

Preuve que la transformation de l'instance du problème du stable à l'instance de P est polynomial :

L'ensemble B de clauses se construit en temps polynomial par rapport
au nombre d'arêtes de G :0).

La rédaction de cette correction a été faite par Sarah Cohen Boulakia.