UFR IEEA
ACT 2015–2016
Master d’Informatique-S1
Fiche TD: Complexité de problèmes-
Les classes P et NP
1 Quelques techniques classiques
Exercice 1.1 :
Soit Tun tableau trié de nentiers qui peuvent être négatifs. Le problème est de déterminer, si il existe, au
moins un entier itel que T(i) = i.
Q 1. Par un argument de type "arbre de décison", montrer que tout algorithme par comparaisons qui résoud
le problème doit faire dans le pire des cas au moins de l’ordre de log ncomparaisons.
Q 2. On suppose ici que les entiers peuvent être égaux. Montrer par une technique type "de l’adversaire"
que tout algorithme par comparaisons - avec des tests du type T[i]==i? T[i]< i? T[i] > i? qui résoud le
problème doit faire dans le pire des cas au moins ncomparaisons.
Exercice 1.2 : Les pièces
On veut déterminer une mauvaise pièce parmi npièces -on sait qu’il y a une et une seule piève de poids différent-
et déterminer si elle est plus légère ou plus lourde uniquement en utilsant une balance de Roberval.
Q 1.Montrer qu’on ne peut y arriver en 3 pesées pour 14 pièces.
Q 2. Montrer qu’on peut y arriver pour n=12 en 3 pesées.
Q 3.Peut-on y arriver en 3 pesées pour 13 pièces?
2 La classe P
Exercice 2.1 : Propriétés de clôture
Q 1. Montrer que la classe Pest close par union, intersection et complémentaire.
Q 2. Montrer que la classe Pest close par concaténation.
Q 3. (un peu plus dur...) Montrer que la classe Pest close par étoile.
Exercice 2.2 : Temps versus espace
Q 1. Justifier que P time est inclus dans P Space, la classe des propriétés pour lesquels il existe un algorithme
de décision polynomial en espace.
Q 2. Exptime est la classe des propriétés pour lesquels il existe un algorithme de décision exponentiel (en
temps). Justifier que P Space est inclus dans ExpT ime.
3 La classe N P
exercice Sac à dos 0-1 (Encore!) Soit le problème de décision défini par:
Donnée: p1,· · · , pn– n entiers positifs, les poids des objets
v1,· · · , vn– n entiers positifs, les valeurs des objets
c-la capacité du sac - et v– deux entiers
Sortie: Oui, si il existe un remplissage du sac tel que la valeur du chargement soit au moins v, les objets ne
pouvant pas être fractionnés.
Q 3. Montrer qu’il est NP .
Q 4. On a vu dans une feuille précédente de TD qu’il existe un algorithme en 0(nc)qui résout le problème.
Pourquoi ne peut-on pas en déduire que le problème est P?
Exercice 3.1 : La plus courte super-suite commune.
Donnée: u1, ..., unnmots –l’alphabet est fixé
kun entier, k < |u1|+... +|un|
Sortie: oui, si il existe une supersuite de longueur kdes nmots ui( i.e. un mot ude longueur ktel que les ui
soient sous-mots de u)
Q 1. Montrer que le problème est NP .
Q 2. Dans le cas où n= 2, proposer un algorithme polynomial Supersuite(u,v) qui retourne une Supersuite
commune à uet vde longueur minimale.
Q 3. Soit l’algorithme suivant:
Super=u_1;
pour i de 2 à n Super=SuperSuite(Super,u_i);
Cet algorithme produit-il bien une supersuite des ui? Produit-il toujours la supersuite la plus courte?
Exercice 3.2 : 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
m, le 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 NP .
Exercice 3.3 : Le problème de recouvrement (SET_COVERING)
Donnée: un ensemble E de cardinal n
psous-ensembles de E,(Ei)i=p
i=1, qui forment un recouvrement de E(i.e. E=Sp
1Ei).
un entier k
Sortie: oui, si il existe un recouvrement de cardinal k(J[1..p]de cardinal k tq SiJEi=E), non, sinon.
Q 1. Soit E= [1..8], E1={1,3,5,7}, E2={3,5,8}, E3={1,2,3}, E4={6,7}, E5={4,5}. Y-a-t-il une
solution pour k=4? Pour k=3?
Q 2. Montrer que la propriété est NP. Quelle serait la complexité d’une méthode par recherche exhaustive?
Exercice 3.4 : Le Sudoku
Soit le Sudoku généralisé: une grille est un carré de côté k2pour un certain k, qu’on peut diviser en k2carrés
de k2cases, le but étant de remplir avec les entiers de 1àk2avec les règles suivantes: un entier doit apparaître
une et une seule fois dans chaque ligne, dans chaque colonne, dans chaque carré.
Q 1.Soit le problème de décision:
Donnée: un entier ket une grille k2k2partiellement remplie par des entiers de 1àk2.
Sortie: Oui, Ssi la grille peut être complétée en respectant les règles.
Montrer qu’il est NP.1
Q 2. Que pensez-vous de la complexité de ce problème de décision:
Donnée: un entier ket une grille k2k2partiellement remplie par des entiers de 1àk2.
Sortie: Oui, Ssi il existe au plus une complétion correcte de la grille.
1Le problème est N P dur, mais dans le cas k= 3, il existe bien sûr des algorithmes dont l’exécution est très rapide.
2
Exercice 3.5 : Propriétés de clôture
Q 1. Montrer que la classe NP est close par union, intersection.
Q 2. Montrer que si NP n’est pas close par complémentaire, N P 6=P.
Q 3. Montrer que la classe NP est close par concaténation et étoile.
Exercice 3.6 : Noir et Blanc
On a vu en cours que le 3-coloriage de graphes est NP. Que pensez-vous du 2-coloriage de graphes?
4 Divers
Exercice 4.1 : Test de Primalité
Soit l’algorithme:
//n est un entier naturel >=2
Booléen Composé(Entier n)
Pour i de 2 à racine-carree(n)
si i divise n alors retourne Vrai
fin Pour;
retourne Faux
Q 1. Cet algorithme est-il correct, i.e. retourne-t-il Vrai Ssi nest composé? Est-il polynomial?
Q 2. Montrer que la propriété " être composé" est NP ?
Q 3. Le test de primalité d’un entier a été montré Pen 2002 après de longues années de recherche. Qu’en
déduire pour la propriété "être composé"?
Pour les curieux: Jusque 2002, certains tests utilisés étaient supposés être polynomiaux mais cela n’avait
pas été prouvé. Le test proposé en 2002 est le test de primalité d’Agarwal-Kayal-Saxena -"AKS primality
test"-, la complexité étant en O((log n)12+)(nest l’entier dont on teste la primalité). Des améliorations ont
été proposées pour diminuer l’exposant. (http://www.utm.edu/research/primes). Avant 2002, on savait déjà
que "être premier" était NP , donc était dans co NP NP . La notion de certificat est un peu plus difficile à
trouver que pour "être composé"; elle est basée sur le fait que nest premier Ssi il existe atel an11(mod n)
mais am6≡ 1(mod n)pour tout m,1m<n.
Exercice 4.2 : Génération d’objets combinatoires
On est souvent amené à générer soit aléatoirement, soit exhaustivement tous les objets d’une certaine taille.
En particulier, on peut être amené à générer tous les certificats ou un certificat aléatoire pour une instance de
problème. On va ici simplement prendre le cas de mots.
Q 1. Combien existe-t-il de mots de longueur nsur un alphabet Σde cardinal k? de longueur au plus n?
Q 2. Proposer une méthode pour générer tous les mots sur {a, b}de longueur au plus une valeur donnée.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !