1 Quelques techniques classiques 2 La classe P 3 La classe NP

publicité
ACT
2015–2016
Master d’Informatique-S1
UFR IEEA
Fiche TD: Complexité de problèmesLes classes P et NP
1
Quelques techniques classiques
Exercice 1.1 :
Soit T un tableau trié de n entiers qui peuvent être négatifs. Le problème est de déterminer, si il existe, au
moins un entier i tel 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 n comparaisons.
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 n comparaisons.
Exercice 1.2 : Les pièces
On veut déterminer une mauvaise pièce parmi n pièces -on sait qu’il y a une et une seule piève de poids différentet 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 P est close par union, intersection et complémentaire.
Q 2. Montrer que la classe P est close par concaténation.
Q 3. (un peu plus dur...) Montrer que la classe P est 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 N P .
Q 4. On a vu dans une feuille précédente de TD qu’il existe un algorithme en 0(n ∗ c) 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 , ..., un n mots –l’alphabet est fixé
k un entier, k < |u1 | + ... + |un |
Sortie: oui, si il existe une supersuite de longueur k des n mots ui ( i.e. un mot u de longueur k tel que les ui
soient sous-mots de u)
Q 1. Montrer que le problème est N P .
Q 2. Dans le cas où n = 2, proposer un algorithme polynomial Supersuite(u,v) qui retourne une Supersuite
commune à u et v de 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 n processus asynchrones et m ressources. 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 k processus. 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 Pi des ressources qu’il bloque.
k le nombre de processus que l’on souhaite activer
Sortie: Oui, si on peut activer k processus 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 2 et 3 et 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 .
Exercice 3.3 : Le problème de recouvrement (SET_COVERING)
Donnée: un ensemble E de cardinal n
Sp
p sous-ensembles de E, (Ei )i=p
1 Ei ).
i=1 , qui forment un recouvrement de E (i.e. E =
un entier k
S
Sortie: oui, si il existe un recouvrement de cardinal k (J ⊂ [1..p] de cardinal k tq i∈J Ei = 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é k 2 pour un certain k, qu’on peut diviser en k 2 carrés
de k 2 cases, le but étant de remplir avec les entiers de 1 à k 2 avec 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 k et une grille k 2 ∗ k 2 partiellement remplie par des entiers de 1 à k 2 .
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 k et une grille k 2 ∗ k 2 partiellement remplie par des entiers de 1 à k 2 .
Sortie: Oui, Ssi il existe au plus une complétion correcte de la grille.
1
Le 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 N P est close par union, intersection.
Q 2. Montrer que si N P n’est pas close par complémentaire, N P 6= P .
Q 3. Montrer que la classe N P 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 n est composé? Est-il polynomial?
Q 2. Montrer que la propriété " être composé" est N P ?
Q 3. Le test de primalité d’un entier a été montré P en 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+ ) (n est 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 N P , donc était dans co − N P ∩ N P . La notion de certificat est un peu plus difficile à
trouver que pour "être composé"; elle est basée sur le fait que n est premier Ssi il existe a tel an−1 ≡ 1(mod n)
mais am 6≡ 1(mod n) pour tout m, 1 ≤ m < 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 n sur 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
Téléchargement