UFR IEEA
AAC 2010–2011
Master1 d’Informatique
Fiche TD-Les propriétés NP-dures, les réductions polynômiales
Exercice 1 : Vrai ou Faux
Q 1. Pour chaque affirmation suivante, dire si elle est vraie, fausse, vraie si et seulement si P=NP ou vraie
si et seulement si P6=N P . Justifier brièvement.
(Af1) Toute propriété N P est aussi P.
(Af2) Toute propriété Pest aussi N P .
(Af3) Une propriété N P est une propriété non polynomiale.
(Af4) Il existe une propriété N P polynomiale.
(Af5) Il existe une propriété N P non polynomiale.
(Af6) Une propriété N P -dure n’est pas P.
Q 2. Soient P1, P2, P3, Q des problèmes de décision.
Supposons qu’on sache que P1est P, P2est NP-dur, P3NP.
Pour chacune des affirmations suivantes, dire si elle vous semble "Vraie", "Fausse" ou "fausse si NP 6=P":
(Af1) Si P1se réduit polynomialement en Q,Qest P.
(Af2) Si Qse réduit polynomialement en P1,Qest P.
(Af3) Si Qse réduit polynomialement en P2,Qest NP-dur.
(Af4) Si P2se réduit polynomialement en Q,Qest NP-dur.
(Af5) Si Qse réduit polynomialement en P3,Qest NP.
(Af6) Si P3se réduit polynomialement en Q,Qest NP.
Exercice 2 : Coloriage
Rappel: 3−COL est le problème du 3-coloriage de graphes défini par:
Entrée : G= (S, A)un graphe non-orienté
Sortie :
Oui, si il existe un coloriage correct de Gen 3couleurs, i.e. une application coul :S→[1..3] telle que
∀x, y ∈S, (x, y)∈A=⇒coul(x)6=coul(y).
Non, sinon.
3−Col est NP-complet
Q 1.Soit COL le problème du coloriage de graphes défini par:
Entrée :
G= (S, A)un graphe non-orienté
kun entier Sortie :
Oui, si il existe un coloriage correct de Gen kcouleurs, i.e. une application coul :S→[1..k]telle que
∀x, y ∈S, (x, y)∈A=⇒coul(x)6=coul(y).
Non, sinon.
Montrer que COL est NP-complet.
Q 2.Soit 4−COL le problème du 4-coloriage de graphes défini par:
Entrée : G= (S, A)un graphe non-orienté
Sortie :
Oui, si il existe un coloriage correct de Gen 4couleurs, i.e. une application coul :S→[1..4] telle que
∀x, y ∈S, (x, y)∈A=⇒coul(x)6=coul(y).
Non, sinon.
Q 2.1.Montrer que le problème 4−COL est NP.
Q 3. Proposer une réduction polynomiale de 3−Col dans 4−Col. Justifier.
Q 4. Qu’en déduire pour 4−Col?
Q 5. Montrer, sans exhiber la réduction, que 4−Col se réduit polynomialement dans 3−Col.
Exercice 3 :
Soit le problème de décision SommeIdentique défini par:
Donnée:
n, p, deux entiers positifs
x1, ....xn,nentiers
y1, ..., yp,pentiers
Sortie:
Oui, Ssi on peut extraire deux sous-listes non vides des xi,yiqui ont même somme, i.e.
∃J⊂[1..n], J 6=∅, K ⊂[1..p], K 6=∅tq Pj∈Jxj=Pk∈Kyk
Exemples:
pour X= (10,4,1,22), Y = (3,6,9), il y a une solution: 10+4+1=6+9;
pour X= (1,2,9), Y = (7,6,7), il n’y a pas de solution.
Q 1. Pour chacun des exemples suivants, dire si il y a une solution:
1. X= (2,4,2,6), Y = (12,7,1)
2. X= (1,1,2,4), Y = (10,12,11)
3. X= (2,4,2,6), Y = (9,7,11)
Q 2. Montrer que le problème SommeIdentique est NP
Q 3. Montrer que le problème P artition se réduit polynômialement dans SommeIdentique où le problème
P artition est défini par:
Donnée:
n –un nb d’entiers
x1,···, xn–nentiers
Sortie:
Oui Ssi il existe J⊂[1..n]tel que Pi∈Jxi=Pi /∈Jxi
Q 4. P artition est NP −complet.Qu’en déduire pour SommeIdentique?
Exercice 4 : Processus
Soit un système temps réel avec nprocessus asynchrones et mressources. Quand un processus est actif, il
bloque un certain nombre de ressources et une ressource ne peut être utilisée que par un seul processus. On
cherche à activer simultanément kprocessus.
Le problème de décision DecProc est donc:
Donnée:
n, le nombre de processus
mle nombre de ressources
pour chaque processus i, la liste Pides ressources qu’il bloque.
kle nombre de processus que l’on souhaite activer
Sortie:
Oui, si on peut activer kprocessus simultanément, non sinon.
Par exemple si n= 4,m= 5, et P1={1,2}, P2={1,3}, P3={2,4,5}, P4={1,2,4}on peut activer
simultanément les processus 2et 3et donc la réponse est Oui pour k= 2 mais la réponse est N on pour k= 3.
Q 1. Montrer que le problème DecProc est N P .
Exemple de solution:
Remarque préliminaire: la taille du problème est au moins n+m.
Un certificat est simplement un ensemble de processus, donc un sous-ensemble de {1, ..., n}. Un certificat peut donc
être codé par un vecteur de nbooléens et la taille d’un certificat est donc n, donc inférieure à la taille du problème.
La vérification consiste juste à vérifier que deux processus actifs ne partagent pas une ressource, et que le cardinal est
bien k, soit:
//probleme donne par n, P1, ...Pi
//certificat : ensemble de processus
2