AAC UFR IEEA TD Complexité de Problèmes 1 - P et NP Quelques exemples de propriétés Exercice 1 : 20052006 Master1 d'Informatique NP Sac à dos Soit le problème de décision déni par: Donnée du problème: p1 , · · · , p n n entiers v1 , · · · , vn un entier c un entier v n entiers positifs. positifs. Sortie: Oui, si il existe un remplissage du sac telle que la valeur du chargement soit au moins v, les objets ne pouvant pas être fractionnés. NP. Q 1.Montrer qu'il est Q 2. En utilisant la programmation dynamique, Proposer un algorithme en Pouvez-vous en déduire que le problème est 0(n ∗ c) qui résoud le problème. P? Exercice 2 : La plus courte super-suite commune. Donnée: n un entier u1 , ..., un n mots l'alphabet est k un entier, k < |u1 | + ... + |un | xé Sortie: oui, si il existe une supersuite de longueur ui soient sous-mots de Q 1.Montrer que le problème est Q 2. Dans le cas où commune à u et v k des n mots ui ( i.e. un mot u de longueur k tel que les u) n = 2, NP. proposer un algorithme polynômial Supersuite(u,v) qui retourne une Supersuite 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 : Le problème de recouvrement (SET_COVERING) Un problème très classique est le problème de recouvrement (qui intervient pour le placement d'antennes, par exemple): Donnée: un ensemble E de cardinal p sous-ensembles de un entier E , (Ei )i=p i=1 , n qui forment un recouvrement de E (i.e. E= Sp 1 Ei ). k Sortie: oui, si il existe un recouvrement de cardinal k ( i.e. J ⊂ [1..p], J de cardinal k tel que S 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? Quelques Propriétés des classes P et NP Exercice 4 : Hiérarchie Q 1. Montrer que P ⊂ NP. Q 2. Montrer que toute proriété certain NP peut être décidée par un algorithme exponentiel (i.e. en k O(2n ) pour un k ). Exercice 5 : Clôture Booléenne P est close par union, intersection et complémentaire. N P est close par union, intersection. N P n'est pas close par complémentaire, N P = 6 P. Q 1. Montrer que la classe Q 2. Montrer que la classe Q 3.Montrer que si Exercice 6 : La concaténation et l'Etoile N P est close par concaténation et étoile. P est close par concaténation. (un peu plus dur...) Montrer que la classe P est close par étoile. Q 1. Montrer que la classe Q 2. Montrer que la classe Q 3. Divers Exercice 7 : 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 polynômial? Q 2. Pouvez-vous montrer que la proprieté " être composé" est Q 3. En fait, le test de primalité d'un entier a été montré P NP? en 2002 après de longues années de recherche. Qu'en déduire pour la propriété "être composé"? Remarque pour les curieux: Jusque 2002, certains tests utilisés étaient supposés être polynômiaux mais ce n'avait pas été prouvé. Le nouveau test est appelé le test de primalité d'Agarwal-Kayal-Saxena -"AKS primality test"-, sa complexité étant en O((log n)12+ ). Des améliorations ont été proposées pour faire passer l'exposant de 12 à 6 voire 4. (http://www.utm.edu/research/primes). Avant 2002, on savait déjà que "être premier" était NP, donc était dans co − N P ∩ N P . certicat est un peu plus dicle à trouver que pour "être composé"; elle est basée sur le fait que Ssi il existe a tel an−1 ≡ 1(mod n) mais am 6≡ 1(mod n) pour tout La notion de n est premier m, 1 ≤ m < n. Exercice 8 : Erreur de raisonnement Quelle est l'erreur dans le raisonnement suivant: Toute formule booléenne peut être mise sous forme disjonctive; or tester la satisabilité d'une formule booléenne sous forme disjonctive est polynômial. Donc tester la satisabilité d'une formule booléenne est polynômial. Exercice 9 : On a vu en cours que le 3-coloriage de graphes est NP. Que pensez-vous du 2-coloriage de graphes? 2 La théorie de l'information...version ludique Exercice 10 : Les piles On dispose de simultanément n piles, neuves ou hors d'usage. Le seul moyen pour les tester est un ... testeur qui teste k piles: si le test est positif, elles sont toutes bonnes, sinon au moins l'une d'entre elles est hors d'usage. On cherche à identier les bonnes. Q 1. Que faut-il supposer sur le nombre de bonnes piles pour pouvoir les identier? Q 2.Proposer un "algorithme pour résoudre le pb et montrer qu'il est optimal (dans le pire des cas). Aide: Se restreindre au cas où il y a exactement k bonnes piles. Exercice 11 : Les pièces Soit le problème classique suivant: une mauvaise pièce se trouve parmi n pièces: on sait juste qu'elle n'a pas le même poids mais aucun autre critère ne permet de la distinguer. On cherche à l'identier et à détemriner si elle est plus légere ou plus lourde uniquement en utilsant une balance de Roberval. Montrer qu'on ne peut y arriver en 3 pesées pour 13 pièces. Que se passe-til pour 12 pièces? 3