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