Vous êtes sur la page 1sur 64

TD Optimisation Combinatoire

Louis Dublois

louis.dublois@gmail.com

Université Paris-Dauphine

2020/2021

1 / 64
TD 8 (Correction DM)

2 / 64
E3SAT

3SAT : Un ensemble X de n variables binaires x1 , . . . , xn , et une formule


φ qui est la conjonction de m clauses C1 , . . . , Cm , chacune composée
d’au plus 3 litéraux.

E3SAT : Restriction du problème 3SAT où chaque clauses Cj contient


exaxctement 3 litéraux.

Existe-t-il une affectation des valeurs true et false aux variables de


X telle que φ est satisfaite ?

3 / 64
E3SAT ∈ NP

1) Montrer que E3SAT est dans NP.

4 / 64
E3SAT ∈ NP
Input : Une formule φ de n variables x1 , . . . , xn et m clauses C1 , . . . , Cm
(chacune composée d’exactement 3 litéraux), et une affectation ρ des
variables de φ.
Output : Oui si ρ satisfait φ, sinon Non.

Pour toute clause Cj dans φ faire :


b ← false
Pour toute variable x dans Cj faire :
Si ρ(x ) satisfait Cj faire :
b ← true
Si b == false faire :
Retourner Non
Retourner Oui

Vérifie si ρ satisfait φ en temps O(m).

Theorem
E3SAT est dans NP
5 / 64
3SAT ≤T E3SAT

2) Créer une réduction polynomiale de Turing 3SAT ≤T E3SAT et


présenter cette réduction sous forme d’algorithme.

6 / 64
3SAT ≤T E3SAT
Soit φ une instance de 3SAT avec n variables x1 , . . . , xn et m clauses
C1 , . . . , Cm .

On veut construire une instance φ0 de E3SAT, i.e. où chaque clause de


φ0 a exactement 3 litéraux.

Pour toute clause Cj de φ :

Si |Cj | = 3, OK.

Si |Cj | = 2, i.e. Cj = (x1 ∨ x2 ), alors on supprime Cj et on ajoute les


deux clauses :
(x1 ∨ x2 ∨ y ) ∧ (x1 ∨ x2 ∨ y ).

Si |Cj | = 1, i.e. Cj = (x ), alors on supprime Cj et on ajoute les


quatre clauses :
(x ∨ y1 ∨ y2 ) ∧ (x ∨ y1 ∨ y2 ) ∧ (x ∨ y1 ∨ y2 ) ∧ (x ∨ y1 ∨ y2 ).
7 / 64
3SAT ≤T E3SAT

Input : Une formule φ de 3SAT composé de n variables x1 , . . . , xn et m


clauses C1 , . . . , Cm .
Output : Une instance φ0 de E3SAT

φ0 ← φ
Pour toute clause Cj dans φ faire :
Si |Cj | = 2 (Cj = (x1 ∨ x2 )) faire :
Créer Cj1 = (x1 ∨ x2 ∨ y ) et Cj2 = (x1 ∨ x2 ∨ y )
φ0 ← (φ0 \ Cj ) ∪ {Cj1 ∪ Cj2 }
Si |Cj | = 1 (Cj = (x )) faire :
Créer Cj1 = (x ∨ y1 ∨ y2 ), Cj2 = (x ∨ y1 ∨ y2 ), Cj3 = (x ∨ y1 ∨ y2 ) et
Cj4 = (x ∨ y1 ∨ y2 )
φ0 ← (φ0 \ Cj ) ∪ {Cj1 , Cj2 , Cj3 , Cj4 }
Retourner φ0

Algorithme en O(m).

8 / 64
Exactitude 3SAT ≤T E3SAT

3) Prouver que cette réduction est correcte.

9 / 64
Exactitude 3SAT ≤T E3SAT

Démonstration.
Supposons que φ est satisfiable.

Considérons n’importe quelle clause Cj de φ.

Si |Cj | = 3, alors Cj est aussi satisfiable dans φ0 .

Si |Cj | = 2, alors x1 ou x2 satisfait Cj , et les deux clauses Cj1 et Cj2 sont


satisfaites dans φ0 .

Si |Cj | = 1, alors x satisfait Cj , et les quatre clauses Cj1 , . . . , Cj4 sont


satisfaites dans φ0 .

Donc φ0 est satisfaite.

10 / 64
Exactitude 3SAT ≤T E3SAT

Démonstration.
Supposons que φ0 est satisfaite.

Considérons n’importe quelle clause Cj de φ0 .

Si Cj ∈ φ, alors Cj est satisfaite dans φ.

Si Cj est telle qu’il existe Cj0 où Cj et Cj0 ont été créées par l’algorithme à
partir de Cj∗ . Alors Cj = (x1 ∨ x2 ∨ y ) et Cj0 = (x1 ∨ x2 ∨ y ). La variable y
ne peut pas satisfaire Cj et Cj0 donc x1 ou x2 satisfait Cj et Cj0 . Donc la
clause originale Cj∗ est satisfaite dans φ.

Si Cj est telle qu’il existe Cj2 , Cj3 , Cj4 où Cj , Cj2 , Cj3 , Cj4 ont été créées par
l’algorithme à partir de Cj∗ . Les deux variables ajoutées y1 et y2 ne
peuvent pas satisfaire les quatre clauses Cj , Cj2 , Cj3 , Cj4 , donc la variable x
les satisfait. Donc Cj∗ est satisfaite dans φ.

Donc φ est satisfaite.


11 / 64
E3SAT est NP-complet

4) Déduire que le problème E3SAT est NP-complet.

12 / 64
E3SAT est NP-complet

Du fait que le problème 3SAT est NP-complet, et par les deux directions
de la preuve de la question 3), on a que :

E3SAT est NP-difficile.

Par la question 1), on a que E3SAT est dans NP.

Par ces deux résultats, on a :

Theorem
E3SAT est NP-complet.

13 / 64
Minimum Set Cover

Ensemble U = {u1 , . . . , un } d’éléments.

Famille S = {S1 , . . . , Sm } de sous-ensembles de U : pour tout


ensemble Sj ∈ S, Sj ⊆ U.

Trouver une sous-famille S ∗ de S de taille minimum qui couvre tous les


éléments de U ?

14 / 64
k-Set Cover

1) Donner la version décision k-Set Cover du problème Minimum


Set Cover.

15 / 64
k-Set Cover

Ensemble U = {u1 , . . . , un } d’éléments.

Famille S = {S1 , . . . , Sm } de sous-ensembles de U : pour tout


ensemble Sj ∈ S, Sj ⊆ U.

Entier k ≤ m.

Existe-t-il une sous-famille S ∗ ⊆ S de taille au plus k qui couvre tous les


éléments de U ?

16 / 64
k-Set Cover ∈ NP

2) Montrer que k-Set Cover est dans NP (on peut supposer ici que n
et m sont des polynômes l’un de l’autre).

17 / 64
k-Set Cover ∈ NP
Input : Une instance ((U, S), k) de k-Set Cover avec |U| = n,
|S| = m, et k ≤ m, et une sous-famille S ∗ de S.
Output : Oui si S ∗ est un set cover de taille au plus k, sinon Non.

Pour tout u ∈ U faire :


b ← false
Pour tout S ∈ S ∗ faire :
Si u ∈ S faire :
b ← true
Si b == false faire :
Retourner Non
Si |S ∗ | ≤ k faire :
Retourner Oui
Retourner Non
Vérifie si S ∗ est un set cover de taille au plus k en temps O(nm).

Theorem
k-Set Cover est dans NP
18 / 64
k-Dominating Set ≤T k-Set Cover

3) Créer une réduction polynomiale de Turing Π ≤T k-Set Cover, où


Π est un problème de graphe NP-complet que l’on a vu en TD et Π 6=
k-Vertex Cover.

19 / 64
k-Dominating Set ≤T k-Set Cover

Soit (G = (V , E ), k) une instance de k-Dominating Set avec |V | = n,


|E | = m et k ≤ n.

On veut construire une instance ((U, S), k 0 ) de k 0 -Set Cover :

Pour tout sommet u ∈ V :


On rajoute u dans U.

Pour tout sommet u ∈ V :


On rajoute l’ensemble Su = N[u] dans S.

On pose k 0 = k.

20 / 64
Exactitude k-Dominating Set ≤T k-Set Cover

4) Prouver que cette réduction est correcte.

21 / 64
Exactitude k-Dominating Set ≤T k-Set Cover

Démonstration.
Supposons qu’il existe un dominating set D ⊆ V dans G de taille au plus
k.

On pose S ∗ = {N[u] ∈ S : u ∈ D}.

Pour tout u ∈ V , on a : soit u ∈ D ; soit il existe v ∈ N(u) ∩ D.


S
Donc u∈D N[u] = V = U.
S
Donc S∈S ∗ S = U.

Donc S ∗ est un set cover de (U, S) de taille au plus k.

22 / 64
Exactitude k-Dominating Set ≤T k-Set Cover

Démonstration.
Supposons qu’il existe un set cover S ∗ ⊆ S dans (U, S) de taille au plus
k.

On pose D = {u ∈ V : N[u] ∈ S ∗ }.

Pour tout u ∈ U, on a : il existe S ∈ S ∗ tel que u ∈ S.


S
Donc S∈S ∗ S = U = V.
S
Donc u∈D N[u] = V .

Donc D est un dominating set de G de taille au plus k.

23 / 64
k-Set Cover est NP-complet

5) Déduire que le problème k-Set Cover est NP-complet.

24 / 64
k-Set Cover est NP-complet

Du fait que le problème k-Dominating Set est NP-complet, et par les


deux directions de la preuve de la question 4), on a que :

k-Set Cover est NP-difficile.

Par la question 2), on a que k-Set Cover est dans NP.

Par ces deux résultats, on a :

Theorem
k-Set Cover est NP-complet.

25 / 64
|U| = O(|S|)

6) Expliquer pourquoi k-Set Cover reste NP-complet même lorsque


|U| = O(|S|2 ) (voir même |U| = O(|S|) si vous pouvez).

26 / 64
|U| = O(|S|)

Dans notre réduction, on a :


|U| = |V | ;
|S| = |V |.

Et on a prouvé la NP-complétude de k-Set Cover avec cette réduction.

Donc le problème k-Set Cover reste bien NP-complet lorsque


|U| = O(|S|).

27 / 64
H-SAT

SAT : Un ensemble X de n variables binaires x1 , . . . , xn et une formule φ


qui est la conjonction de m clauses C1 , . . . , Cm .

H-SAT : Restriction du problème SAT où chaque clause Cj est


composée d’au plus 1 litéral positif.

Existe-t-il une affectation des valeurs true et false aux variables de


X telle que φ est satisfaite ?

28 / 64
Trois Types de Clauses

1) Montrer qu’une instance φ de H-SAT ne peut contenir que les trois


types de clauses suivantes :
C = ((∨qi=1 xi ) ∨ y ) pour q ≥ 1 (une telle clause est appelée stricte)
C = (y ) (une telle clause est appelée positive)
C = (∨pi=1 xi ) pour p ≥ 1 (une telle clause est appelée négative).

29 / 64
Trois Types de Clauses

Soit C une clause de φ.

Si C ne contient aucun litéral positif :


Alors C = (∨pi=1 xi ) pour p ≥ 1 (C est négative).

Sinon, C contient un litéral positif (elle ne peut en contenir qu’un seul).

Dans ce cas, et si C ne contient qu’un seul litéral :


Alors C = (y ) (elle est positive).

Sinon, (si elle contient au moins deux litéraux) :


Alors C = ((∨qi=1 xi ) ∨ y ) pour q ≥ 1 (elle est stricte).

30 / 64
Aucune Clause Positive

2) Montrer qu’une instance φ de H-SAT qui ne contient aucune clause


positive est toujours satisfiable.

31 / 64
Aucune Clause Positive

Soit φ qui ne contient aucune clause positive.

Alors φ ne contient que des clauses strictes ou négatives.

En donnant la valeur false à toutes les variables, on satisfait φ :

Toute clause négative est satisfaite car p ≥ 1 et que toutes les


variables sont à false.

Toute clause stricte est satisfaite car q ≥ 1 et que toutes les


variables sont à false.

32 / 64
C1 = (y ) et C2 = (y )

3) Montrer que dans une instance φ de H-SAT, s’il existe deux clauses
C1 , C2 telles ques C1 est positive avec C1 = (y ) et C2 est négative avec
C2 = (y ), alors φ n’est pas satisfiable.

33 / 64
C1 = (y ) et C2 = (y )

Soit φ une instance de H-SAT qui contient deux clauses C1 et C2 telles


que :

C1 = (y )
C2 = (y )

Alors, donner n’importe quelle valeur à y ne peut jamais satisfaire à la


fois C1 et C2 .

Donc φ n’est pas satisfiable.

34 / 64
Réduire une Instance

On appelle réduire une instnace φ de H-SAT par une variable y


l’algorithme suivant (les trois étapes suivantes dans cet ordre) :
(a) Affecter la valeur true à la variable y .
(b) Supprimer les clauses qui contenaient la variable y en litéral positif.
(c) Supprimer tous les litéraux y de φ.

35 / 64
Réduire une Instance et Satisfiabilité

4) Montrer qu’une instance φ de H-SAT qui contient une clause positive


C = (y ) est satisfiable si et seulement si l’instance φ0 obtenue après avoir
réduit φ par y est satisfiable.

36 / 64
Réduire une Instance et Satisfiabilité
Démonstration.
Supposons que φ est satisfiable, et soit ρ une bonne affectation.
Notons que φ0 contient seulement les clauses suivantes :
(i) Clause C qui ne contient aucun litéral de y .
(ii) Clause C qui contenait y en litéral négatif.

Considérons une clause C dans le premier cas (i) et notons que C


appartient à φ. La variable y n’apparait pas dans C donc il existe une
autre variable x dans C qui satisfait C par la valeur ρ(x ). Dans φ0 ,
donner la valeur ρ(x ) à la variable x : la clause C est satisfaite.
Considérons une clause C dans le deuxième cas (ii), et notons que
(C ∨ y ) était une clause de φ. Puisque φ contient la clause (y ) et que φ
est satisfiable, nécessairement ρ(y ) = true. Donc (C ∨ y ) est satisfaite
par une autre variable x apparaissant dans C . Dans φ0 , donner la valeur
ρ(x ) à la variable x : la clause C est satisfaite.
Donc φ0 est satisfaite.
37 / 64
Réduire une Instance et Satisfiabilité
Démonstration.
Supposons que φ0 est satisfiable, et soit ρ0 une bonne affectation.
Notons que φ contient seulement les clauses suivantes :
(i) Clause C qui contient y (en positif).
(ii) Clause C qui contient y (en négatif).
(iii) Clause C qui ne contient pas y .
Considérons une clause C dans le troisième cas (iii) et notons que C
appartient à φ0 . Il existe une variable x dans C qui satisfait C par la
valeur ρ0 (x ). Dans φ, donner la valeur ρ0 (x ) à x : la clause C est
satisfaite.
Considérons une clause C dans le deuxième cas (ii), et notons que
(C \ y ) est une clause de φ0 . Donc il existe une variable x dans (C \ y )
qui la satisfait par la valeur ρ0 (x ). Dans φ, donner la valeur ρ0 (x ) à x : la
clause C est satisfaite.
Si on applique les deux cas (iii) et (ii) en premier, il ne reste que des
clauses dans le cas (i). Aussi, φ contient la clause (y ), donc donner la
valeur true à y satisfait toutes les clauses restantes (celles qui contiennes
y en positif). Donc φ est satisfaite. 38 / 64
Réduire une instance et Trois Cas

5) Montrer que pour une instance φ de H-SAT qui contient une clause
positive C = (y ), l’instance φ0 obtenue après avoir réduit φ par y est
dans un des trois cas suivants :
φ0 est satisfiable.
φ0 n’est pas satisfiable.
Pour toute clause C 0 = (y 0 ), il n’existe pas de clause négative
C 00 = (y 0 ).

39 / 64
Réduire une Instance et Trois Cas

Soit φ qui contient C = (y ), et φ0 obtenue après avoir réduit φ par y .

Si φ0 ne contient aucune clause positive, alors φ0 est satisfiable (d’après


la question 2)).

Sinon, φ0 contient au moins une clause positive.

Dans ce cas, et si φ0 contient deux clauses C1 et C2 telles que C1 = (y )


et C2 = (y ), alors φ0 n’est pas satisfiable (d’apèrs la question 3)).

Sinon, pour toute clause positive C 0 = (y 0 ), il n’existe pas de clause


négative C 00 = (y 0 ).

40 / 64
Algorithme Polynomial

6) Développer à partir des résultats précédents un algorithme polynomial


qui résout le problème H-SAT (on peut supposer ici que n et m sont des
polynômes l’un de l’autre).

41 / 64
Algorithme Polynomial

Input : Une instance φ de H-SAT.


Output : Oui si φ est satisfiable, sinon Non.

Tant que true faire :


Si il n’existe pas de clause positive faire :
Retourner Oui
Sinon faire :
Pour toute clause positive C = (y ) faire :
Si il existe C 0 = (y ) faire :
Retourner Non
Soit C = (y ) une clause positive
y ← true
Supprimer les clauses C 0 qui contiennent y (en positif)
Supprimer les occurences de y

Algorithme en O(m(m + mm + m + mn + mn) = O(m2 · max{n, m})

42 / 64
Algorithme Polynomial

Notre algorithme fonctionne tant que l’on ne sait pas directement si


l’instance qu’on étudie φ est satisfiable ou pas.

Si φ n’a pas de clause positive, alors φ est satisfiable et notre algorithme


renvoit Oui.

Si il existe deux clauses C1 et C2 dans φ telles que C1 = (y ) et C2 = (y ),


alors φ n’est pas satisfiable et notre algorithme renvoit Non.

Sinon, d’après la question 5), on est dans le troisème cas : toutes les
clauses positives C 0 = (y 0 ) sont telles qu’il n’existe pas C 00 = (y 0 ). Dans
ce cas-là, on choisit une telle clause C 0 = (y 0 ), et on réduit φ par y 0 . On
obtient alors une nouvelle instance φ0 pour laquelle on fait les mêmes
opérations (vérifier si φ0 est satisfiable ou non, et en fonction réduire φ0 ).

A la fin, puisqu’il y a m clauses, notre algorithme a bien renvoyé Oui si


l’instance initiale est satisfiable, et Non si elle ne l’est pas.
43 / 64
H-SAT est dans P

7) Déduire que le problème H-SAT est dans P.

44 / 64
H-SAT est dans P

On a développé un algorithme polynomial qui résout le problème


H-SAT, et on a montré que cet algorithme est correct.

Donc :

Theorem
H-SAT est dans P.

45 / 64
3-Coloration

Un graphe G = (V , E ) avec |V | = N et |E | = M.

Existe-t-il une partition I1 ∪ I2 ∪ I3 = V (une partition implique


Ii ∩ Ij = ∅ pour tout i 6= j) telle que chaque Ii (1 ≤ i ≤ 3) est un
stable ?

46 / 64
3-Coloration est dans NP

1) Montrer que 3-Coloration est dans NP (vous pouvez utiliser des


résultats déjà vus en TD mais dans ce cas il faut bien préciser lesquels).

47 / 64
3-Coloration est dans NP

Soit Stable(S, k) l’algorithme qu’on a vu en TD qui vérifie si Oui ou


Non l’ensemble S est un stable de taille au moins k.

Il s’exécute en O(n2 ).

48 / 64
3-Coloration est dans NP
Input : Un graphe G = (V , E ) avec |V | = N et |E | = M, et I1 , I2 , I3 trois
sous-ensembles de V .
Output : Oui si I1 ∪ I2 ∪ I3 est une 3-coloration de G, sinon Non.

Pour tout 1 ≤ i ≤ 3 faire :


Si Stable(Ii , 0) == Non faire :
Retourner Non
W ← I1 ∪ I2 ∪ I3
Si W 6= V faire :
Retourner Non
Pour tout u ∈ V faire :
Pour tout 1 ≤ i ≤ 3 faire :
Pour tout 1 ≤ j ≤ 3 et j 6= i faire :
Si u ∈ Ii ∩ Ij faire :
Retourner Non
Retourner Oui

Vérifie si I1 ∪ I2 ∪ I3 est une 3-coloration de G en temps O(n2 ).


49 / 64
3-Coloration est dans NP

Theorem
3-Coloration est dans NP.

50 / 64
NAE-3SAT ≤T 3-Coloration

2) Créer une réduction polynomial de Turing NAE-3SAT ≤T


3-Coloration avec les contraintes suivantes : N ≤ 2n + 3m + 1 et
M ≤ n + 6m + 2n, où n est le nombre de variables de l’instance de
NAE-3SAT et m est le nombre de clauses.

51 / 64
NAE-3SAT ≤T 3-Coloration

NAE-3SAT : Restriction du problème 3SAT où la question est la


suivante :

Existe-t-il une affectation des valeurs true et false aux variables de


X telle que pour chaque clause Cj au moins un litéral est vrai et au
moins un est faux ?

Soit φ une instance de NAE-3SAT avec n variables x1 , . . . , xn et m


clauses C1 , . . . , Cm .

52 / 64
NAE-3SAT ≤T 3-Coloration
On construit une instance G = (V , E ) de 3-Coloration de la manière
suivante :

Pour toute variable xi (1 ≤ i ≤ n) : on ajoute deux sommets ui et vi


qu’on connecte entre eux.

Pour chaque clause Cj (1 ≤ j ≤ m) : on crée une clique de taille 3


composé des sommets wi1 ,j , wi2 ,j , wi3 ,j pour les trois variables
xi1 , xi2 , xi3 qui apparaissent dans Cj (si |Cj | ≤ 2, un ou deux sommets
de la clique ne sont pas associées à des variables de X ).

Pour toute clause Cj et toute variable xi : si xi apparait dans Cj en


positif, ajouter l’arête (wi,j , vj ) ; si xi apparait dans Cj en négatif,
ajouter l’arête (wi,j , ui ).

Ajouter un sommet s connecté à tous les sommets ui et vi , pour


tout 1 ≤ i ≤ n.

On a bien |V | = N = 2n + 3m + 1 et |E | = M ≤ n + 6m + 2n.
53 / 64
exemple NAE-3SAT ≤T 3-Coloration

φ = (x1 ∨ x2 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x1 ∨ x4 )

s
x1 x1 x2 x2 x3 x3 x4 x4
u1 v1 u2 v2 u3 v3 u4 v4

x3 x3 x4

x1 x2 x1 x2 x1 x2 x1 x2 x1 x4

54 / 64
exemple NAE-3SAT ≤T 3-Coloration
φ = (x1 ∨ x2 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x3 ) ∧ (x1 ∨ x2 ∨ x4 ) ∧ (x1 ∨ x4 )

x1 = true, x2 = false, x3 = true, x4 = true

s
x1 x1 x2 x2 x3 x3 x4 x4
u1 v1 u2 v2 u3 v3 u4 v4

x3 x3 x4

x1 x2 x1 x2 x1 x2 x1 x2 x1 x4

55 / 64
Exactitude NAE-3SAT ≤T 3-Coloration

3) Prouver que cette réduction est correcte.


Indice : Avoir N = 2n + 3m + 1 et M = n + 6m + 2n peut peut-être
permettre d’obtenir certaines propriétés utiles sur comment sont
partagées les trois couleurs I1 , I2 , I3 dans le graphe obtenu.

56 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇒)

Démonstration.
Supposons que φ est satisfiables, et soit ρ une bonne affectation.

On construit la 3-coloration de G comme suit :


Pour toute variable xi (1 ≤ i ≤ n) : si ρ(xi ) = true, alors ui ∈ I1 et
vi ∈ I2 ; si ρ(xi ) = false, alors ui ∈ I2 et vi ∈ I1 .
Pour toute clause Cj (1 ≤ j ≤ m), soit xi qui satisfait Cj et xi 0
négatif en Cj : wi,j ∈ I1 , wi 0 ,j ∈ I2 .
Tous les autres sommets dans I3 .

Tout d’abord, I1 ∪ I2 ∪ I3 = V car on fini notre construction des trois


ensembles en mettant tous les autres sommets dans I3 .

57 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇒)

Démonstration.
I1 est un stable.

En effet, soit xi un variable et soit Cj une clause qui contient xi (en xi ou


en xi ).

Si ρ(xi ) = true, alors ui ∈ I1


Si xi satisfait Cj , alors wi,j ∈ I1 et il n’y a pas d’arête entre ui et wi,j .
Si xi est le litéral faux de Cj , alors wi,j ∈ I2 .

Si ρ(xi ) = false, alors vi ∈ I1


Si xi satisfait Cj , alors wi,j ∈ I1 et il n’y a pas d’arête entre vi et wi,j .
Si xi est le litéral faux de Cj , alors wi,j ∈ I2 .

Donc I1 est un stable.

58 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇒)

Démonstration.
De manière similaire, I2 est aussi un stable.

I3 est aussi un stable car :


s est dans I3 et pour chaque 1 ≤ i ≤ n, les deux sommets ui et vi
sont dans I1 ou I2
Pour chaque clause Cj , on ne prends qu’un élément dans I3 (et ces
deux voisins dans Cj sont dans I1 et I2 ), et ces voisins dans les u- et
v -sommets sont dans I1 et I2 .

Et finalement, on ne met jamais le même sommet dans deux ensembles Ii


et Ij distincts.

Donc I1 ∪ I2 ∪ I3 est bien une 3-coloration de G.

59 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇐)

Démonstration.
Supposons que l’on a I1 ∪ I2 ∪ I3 une 3-coloration de G.

Soit I3 la couleur du sommet s.

Pour tout 1 ≤ i ≤ n, les deux sommets ui et vi ne sont donc pas de


couleur I3 . Et en plus ils sont reliés entre eux, donc nécessairement ui et
vi sont de couleurs différentes, et de couleurs I1 ou I2 .

Pour toute clause Cj , on a une clique Kj de taille 3. Donc les trois


sommets de Cj sont de couleurs différentes.

Donc on a : pour tout 1 ≤ i ≤ n, |{ui , vi } ∩ I1 | = 1 et |{ui , vi } ∩ I2 | = 1.


Et pour toute clique Kj (1 ≤ j ≤ m), on a |Kj ∩ I1 | = 1 et
|Kj ∩ I2 | = 1.

60 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇐)
Démonstration.
On construit ρ comme suit :
Pour toute variable xi (1 ≤ i ≤ n) :
Si ui ∈ I1 , alors ρ(xi ) = true.
Si vi ∈ I1 , alors ρ(xi ) = false.

Montrons que ρ satisfait φ.

Pour toute clause Cj , soit wi,j ∈ I1 :


Si xi apparait positivement dans Cj (en xi ), alors ui ∈ I1 (car I1 est
un stable et il y a une arête (wi,j , vi ) donc vi ∈ I2 ) : donc ρ(xi ) =
true satisfait Cj .
Si xi apparait négativement dans Cj (en xi ), alors vi ∈ I1 (car I1 est
un stable et il y a une arête (wi,j , ui ) donc ui ∈ I2 ) : donc ρ(xi ) =
false satisfait Cj

Donc les valeurs données aux variables satisfont toutes les clauses.
61 / 64
Exactitude NAE-3SAT ≤T 3-Coloration (⇐)

Démonstration.
De manière similaire, en regardant I2 , on obtient que chaque clause a au
moins un litéral à false.

Donc φ est satisfaite.

62 / 64
3-Coloration est NP-complet

4) Déduire que le problème 3-Coloration est NP-complet.

63 / 64
3-Coloration est NP-complet

Du fait que le problème NAE-3SAT est NP-complet, et par les deux


directions de la preuve de la question 3), on a que :

3-Coloration est NP-difficile.

Par la question 1), on a que 3-Coloration est dans NP.

Par ces deux résultats, on a :

Theorem
3-Coloration est NP-complet.

64 / 64

Vous aimerez peut-être aussi