La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures C OMPLEXITÉ DES PROBLÈMES Complexité de Problèmes: les classes P et NP ACT Sophie Tison Université Lille Master1 Informatique La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A COMPLEXITÉ D ’ UN PROBLÈME La classe P I Rappels I Paradigmes d’algorithme I Complexité des problèmes I Algorithmique Avancée La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L ES CLASSES DE P ROBLÈMES L’idée est de classifier les problèmes selon l’ordre de grandeur de leur complexité. Tout d’abord pour simplifier, on va se limiter aux problèmes de décision ou propriétés. La complexité d’un problème Propriétés La complexité d’un problème est la complexité minimale dans le pire des cas d’un algorithme qui le résout. Une propriété est une fonction à valeurs booléennes. A une propriété abstraite définie sur un ensemble quelconque, on peut associer une propriété concrète définie sur des mots -les représentation des instances-. On peut donc ensuite associer à la propriété le langage des (représentations des) données vérifiant cette propriété. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures U N PREMIER EXEMPLE : L A CLASSE P P ROPRIÉTÉ / LANGAGE La classe P La classe P (ou PTIME) est la classe des problèmes de décision pour lesquels il existe un algorithme de résolution polynomial en temps. Décider une propriété se ramène donc à tester l’appartenance d’un mot à un langage. Un problème de décision est dit praticable si il est dans P, impraticable sinon. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A DÉFINITION DE NP VIA LES CERTIFICATS La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L’ INTUITION ? NP L est dit NP si il existe un polynôme Q, et un algorithme polynômial à deux entrées et à valeurs booléennes tels que: L = {u/∃c, A(c, u) = Vrai, |c| ≤ Q(|u|)} A est appelé algorithme de vérification, c est appelé certificat (ou preuve, ou témoin..). |c| représente la taille de c. |c| ≤ Q(|u|): la taille des certificats est bornée polynômialement par rapport à la talle de l’entrée. On dit que A vérifie L en temps polynômial. On peut par exemple voir c comme une preuve, A comme un algorithme qui vérifie la preuve; vous pouvez être capable de vérifier facilement la preuve courte qu’un gentil génie, (un prof, par exemple:-)) vous donne mais cela n’implique pas forcément qu’elle soit facile à trouver... Une propriété NP sera donc une propriété pour laquelle les instances positives ont une preuve "courte" et "facile" à vérifier. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures C OMMENT MONTRER QU ’ UNE PROPRIÉTÉ EST NP? I définir la notion de certificat et montrer que la taille d’un certificat est bornée polynômialement par la taille du problème I définir l’algo de Vérification et montrer qu’il est polynômial (et correct...) La classe NP Les propriétés NP-dures Les réductions polynomiales ATTEINDRE LA CIBLE A vérifier: c = La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures ATTEINDRE LA CIBLE Donnée: x1 , ..., xn , n entiers c un entier (cible) Pour montrer qu’une propriété est NP, il faut: La classe P La classe P Les propriétés NP-dures Sortie: oui, si on peut obtenir c comme somme d’un sous-ensemble des xi i.e. on peut trouver J ⊂ {1, ..., n} tel que P c = i∈J xi Certificat: J ⊂ {1, ..., n} On peut le représenter par un tableau de n booléens: la taille d’un certificat est donc n inférieure à la taille du problème. P A vérifier: c = i∈J xi : La classe P SAT: La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures SATISFIABILITÉ D ’ UNE EXPRESSION B OOLÉENNE P i∈J xi : boolean A(cert, x_1,...,x_n,s){ int s==0; Pour i de 1 à n si cert(i) alors s=s+x_i fin pour; retourner (s==c); } Donnée: Φ une expression booléenne avec n variables booléennes, x1 , ..., xn Sortie: oui, si Φ est satisfiable, i.e. il existe une valuation v telle que v(Φ) = Vrai Certificat: v , par exemple un tableau de n booléens Algo de vérification: évaluer v(Φ) ce qui se fait bien en temps polynomial. Sat est bien une propriété NP. Algo en O(n) La propriété est bien NP! La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A DÉFINITION VIA LE NON - DÉTERMINISME Une propriété est NP si il existe un algorithme non déterministe polynomial qui la décide. NP=Non-Déterministe Polynomial et non pas Non Polynomial! La classe NP Les propriétés NP-dures Les réductions polynomiales La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures A LGORITHMES NON DÉTERMINISTES Définition Alternative de NP La classe P La classe P Les propriétés NP-dures A LGORITHMES NON DÉTERMINISTES POLYNOMIAUX Un algorithme non-déterministe peut être vu comme un algorithme avec des instructions de type "choix(i,1..n)": on choisit aléatoirement un entier dans l’intervalle [1..n]. (On peut se restreindre à n = 2.) On peut aussi prendre comme modèle de calcul non-déterministe, les Machines de Turing non déterministes. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures A LGOS NON DÉTERMINISTES À VALEURS BOOLÉENNES Un algorithme non-déterministe A est dit polynomial si il existe un polynôme Q tel que pour toute entrée u, tous les calculs de A sur u ont une longueur d’exécution bornée par Q(|u|). Soit A un algorithme non déterministe à valeurs booléennes et dont tous les calculs s’arrêtent; il décide la propriété Pr suivante: "u vérifie Pr Ssi il existe un calcul de A sur u qui retourne Vrai." (penser à un automate non déterministe: un mot est accepté si et seulement si il existe au moins un chemin acceptant.) La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures A LGOS NON DÉTERMINISTES À VALEURS La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A DÉFINITION VIA LE NON - DÉTERMINISME VERSUS L A DÉFINITION VIA LES CERTIFICATS BOOLÉENNES E XEMPLE Les deux définitions sont équivalentes. Un certificat correspond à une suite de choix dans l’exécution de l’algorithme non déterministe. Cherchercible(x_1,....x_n, c){ s=0; Pour i in 1..n Choisir(onleprend?,1..2); Si (onleprend?==1) s=s+x_i; finPour; retourner (s==c);} La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales A partir d’un algorithme non-déterministe polynomial pour vérifier P, on construira donc la notion de certificat qui correspond à une suite de choix. L’algorithme de vérification consiste à vérifier que l’exécution de l’algorithme non déterministe correspondant à la suite de choix donnée par le certificat retourne Vrai. Les propriétés NP-dures L A DÉFINITION VIA LE NON - DÉTERMINISME VERSUS L A DÉFINITION VIA LES CERTIFICATS La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures NP ET LES AUTRES NP par rapport à P? A partir d’une notion de certificat et d’algorithme de vérification, on construit un algorithme non-déterministe qui consiste à d’abord générer aléatoirement un certificat -la partie non déterministe- et ensuite à le vérifier en utilisant l’algorithme -détermministe- de vérification. Bien sûr, P est inclus dans NP: toute propriété P est une propriété NP; l’algorithme de vérification est l’algorithme de décision et n’a pas besoin de certificat: on peut prendre pour certificat le mot vide. On peut aussi montrer que NP est inclus dans EXPTIME (et même dans PSPACE): pensez à l’algorithme qui énumère et teste tous les certificats possibles. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A CONJECTURE NP 6= P? La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A CONJECTURE NP 6= P? On conjecture que P 6= NP, mais personne n’a su le prouver! Aucune propriété NP n’a été prouvée à ce jour ne pas être P. D’un autre côté, pour beaucoup de propriétés NP, aucun algorithme polynomial n’a été trouvé (ou tout du moins prouvé exister) malgré les efforts de milliers d epersonnes! La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures NP ET LA NÉGATION ... La classe NP est close par union, concaténation, étoile, intersection (voir TD). Par contre, on ne sait pas si NP est close par complémentaire: Disposer de la notion de certificat et d’algorithme de vérification pour une propriété Q, n’implique à priori pas que non Q soit NP; Exemple: comment vérifier qu’il n’existe pas de 3−coloriage? La conjecture a été émise par S. Cook en 1971 et le "Clay Mathematics Institute" offre 1 million de dollars à celui qui trouve la réponse à la question! La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures E N RÉSUMÉ Une propriété NP est une propriété pour la quelle trouver une "solution" (une preuve ..) est peut-être difficile, mais vérifier une solution (une preuve...) est facile. P: easy to find NP: easy to check Montrer qu’une propriété est NP n’est en général qu’une étape... On cherche en général ensuite à montrer qu’elle est aussi NP-dure. Attention: Montrer qu’une propriété est NP n’est pas montrer qu’elle n’est pas P!!! La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A HIÉRARCHIE La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A HIÉRARCHIE 3-Color? Cible ? P P Sat ? Hamilton ? NP NP EXPTIME La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A PROBLÉMATIQUE Je cherche un algorithme pour vérifier une propriété; j’ai montré qu’elle est NP mais je ne trouve pas d’algorithme P. La propriété est-elle "dure" ou suis-je "nul(-le)"? Si j’arrive à prouver qu’il n’ y a pas d’algorithme polynomial, je prouve P 6= NP: ça risque d’être difficile... Je peux essayer de montrer qu’elle est NP−dure. La classe P La classe NP Les propriétés NP-dures L A PROBLÉMATIQUE Une propriété NP−dure contient d’une certaine façon toute la difficulté de la classe NP. Si on trouve un algorithme polynomial pour une telle propriété, on en aurait un pour toute propriété NP. Montrer qu’une propriété est NP−dure justifie en quelque sorte de ne pas avoir trouvé d’algorithme polynomial. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures U N OUTIL : L ES RÉDUCTIONS POLYNOMIALES La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures U N EXEMPLE " INFORMEL " Soient les deux problèmes de décision suivants: La notion de réduction permet de traduire qu’un problème n’est pas "plus dur" qu’un autre. Si un problème A se réduit en un problème B, le problème A est (au moins) aussi facile que B - si la réduction est "facile"-. On peut a priori utiliser la réduction de deux façons: I pour montrer qu’un problème est dur: si A est réputé dur, B l’est aussi; I pour montrer qu’un problème est facile: si B est facile, A l’est aussi. C’est en fait surtout le premier raisonnement que l’on va utiliser. Problème 1 Donnée: N, un nombre de participants, une liste de paires de participants: les paires d’ennemis, p, un entier. Q? Peut-on répartir les participants en au plus p équipes de telle sorte qu’aucune équipe ne contienne une paire d’ennemis. Problème 2 Donnée: Un graphe G, un entier k: un nombre de couleurs. Q? G est -il k-coloriable? Les deux problèmes sont NP, pour aucun des deux, on ne connaît d’algorithme polynomial. Comment transformer un problème en un autre? La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A TRANSFORMATION ... La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A TRANSFORMATION EST CORRECTE G est k-coloriable Ssi on peut faire p équipes: Supposons qu’on dispose d’un algorithme pour le pb de coloriage de graphes. Comment s’en servir pour le pb des équipes? On transforme une instance du Pb1 en une instance du Pb2: I Les sommets du graphe sont les personnes. I Il y a un arc entre deux sommets si les personnes sont ennemies. I k=p ⇐ Supposons qu’on puisse répartir les participants en au plus p équipes: on donne à chaque sommet la couleur de l’équipe de la personne correspondant au sommet. Deux sommets de même couleur correspondent à deux personnes de la même équipe: donc il n’y a pas d’arc entre eux. Le coloriage est bien correct. ⇒ Supposons qu’on puisse faire un k = p-coloriage correct de G. Affectons chaque personne à l’équipe couleur du sommet correspondant. Deux personnes ennemies sont reliées par un arc donc ne sont pas dans la même équipe. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A TRANSFORMATION EST POLYNOMIALE La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures B ILAN De plus, la construction de G se fait polynomialement. Donc si on a un algorithme polynomial pour le p−coloriage de graphe, on en a aussi un pour le problème d’équipes: Si on a un algorithme polynomial pour le p−coloriage de graphe, on en a aussi un pour le problème d’équipes. Soit boolean Sol2(Pb2 inst) qui retourne en temps polynomial Vrai Ssi inst est une instance positive de Pb2, Par contraposée: alors: Si il n’y a pas d’algorithme polynomial pour le problème d’équipes, il n’y en a pas non plus pour le p−coloriage. boolean Sol1(Pb1 inst) {return Sol2(red_1_to_2(inst))} retourne en temps polynomial Vrai Ssi inst est une instance positive de Pb1. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures O N PEUT AUSSI FAIRE UNE RÉDUCTION DANS L’ AUTRE SENS ... I Les personnes sont les sommets de G. I Deux personnes sont "ennemies" si elles sont reliées par un arc de G. Alors on peut répartir en( au plus) p équipes Ssi le graphe de départ était p-coloriable. Là encore, la réduction est polynomiale. Donc si il y a un algo polynomial pour le problème d’équipes, il y en a un pour le p−coloriage de graphes. Si il n’y en a pas pour le problème de p−coloriage, il n’y en a pas non plus pour le problème d’équipes. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures D ÉFINITION FORMELLE Définition Soient L et L0 deux langages de Σ∗ , correspondant à deux propriétés. Une réduction polynomiale de L dans L0 est une application red calculable polynomiale de Σ∗ dans Σ∗ telle que : u ∈ L Ssi red(u) ∈ L0 . Notation: L ≤P L0 . La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures R ÉDUCTION POLYNOMIALE = TRANSFORMATION D ’ UN PROBLÈME DANS UN AUTRE . Par exemple, une réduction d’un problème pb1 d’équipes en un problème pb2 de coloriage de graphes sera une transformation: I qui associe à toute instance i du pb1 d’équipes, une instance red(i) du pb2 de coloriage de graphes I telle que red(i) a une solution Ssi l’instance i avait une solution. I cette transformation est polynomiale, i.e. calculable par un algorithme polynomial. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures E NCORE UN EXEMPLE Soient les deux propriétés suivantes: Clique: Entrée: G=(S,A) -un graphe non orienté k - un entier Sortie: Oui, Ssi G contient une clique de cardinal k. Indépendant Entrée: G=(S,A) -un graphe non orienté k - un entier Sortie: Oui, Ssi G contient un ensemble indépendant de cardinal k. Remarque: on en déduit donc que la taille de red(i) est bornée polynomialement par rapport à celle de i. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales C LIQUE 4 Les propriétés NP-dures La classe P La classe NP Les propriétés NP-dures C LIQUE 5 4 5 1 3 Les réductions polynomiales 2 1 3 2 Les propriétés NP-dures La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures I NDÉPENDANT La classe NP E XEMPLE : Les propriétés NP-dures Les réductions polynomiales C LIQUE I Montrer que la transformation est polynomiale. Les propriétés NP-dures La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales C LIQUE 5 1 5 1 3 SUITE ... Montrer que c’est correct i.e., pour tout (G, k), Clique(G, k) Ssi Independant(G0 , k). 4 4 2 Est transformé en: Les propriétés NP-dures I 2 La classe NP Les réductions polynomiales Montrer que c’est bien une réduction polynomiale de Clique dans Independant consiste en: 1 3 Les propriétés NP-dures On peut choisir comme réduction de Clique dans Independant l’application red qui à (G = (S, A), k) associe (G0 = (S, A0 ), k) avec A0 = {(x, y)/(x, y) ∈ / A et (x, y) ∈ / A}. 5 4 La classe P La classe P 3 2 Est transformé en: 4 5 1 3 2 Les propriétés NP-dures La classe P La classe NP E XEMPLE : Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures SUITE ... I La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures E N RÉSUMÉ red transforme l’instance de Clique (G = (S, A), k), en l’instance d’Independent (G0 = (S, A0 ), k) avec A0 = {(x, y)/(x, y) ∈ / A et (x, y) ∈ / A}. I La classe P Pour prouver qu’une propriété P1 se réduit polynomialement en une autre P2, il faut: Correct? i.e., pour tout (G, k), Clique(G, k) Ssi Independent(G0 , k)? Oui: Si (G = (S, A), k) a une clique C de cardinal k, C est un ensemble indépendant de cardinal k de G0 . réciproquement: si (G0 = (S, A0 ), k) a un ensemble indépendant C de cardinal k, C est une clique de cardinal k de G. I proposer une réduction, i.e. un algo red qui à une instance I de P1, associe une instance red(I) de P2. I prouver qu’elle est correcte, i.e. qu’une instance I de P1 est positive Si et Seulement Si red(I) est une instance positive de P2. I prouver qu’elle est polynomiale. La transformation est polynomiale: l’algorithme qui calcule red(G) est bien polynomial (en O(card(S)2 ). La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures P OURQUOI PROUVER QU ’ UN PROBLÈME SE RÉDUIT EN UN AUTRE ? La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures R ÉDUCTIONS EN CHAÎNE Proposition: Si L0 est dans P et si L ≤P L0 , alors L est dans P. u ∈ L Ssi red(u) ∈ L0 : donc, pour décider de l’appartenance à L, il suffit d’appliquer la transformation, et de décider de l’appartenance du transformé à L0 : Si AppL0 est un algo polynomial pour tester l’appartenance à L0 , boolean AppL(u) {return AppL’(red(u));} est un algo polynomial pour tester l’appartenance à L0 . Si L0 est P, L est P. si L n’est pas P, L0 n’est pas P. Propriété: La relation ≤P est transitive: si L ≤P L0 et L0 ≤P L00 , alors L ≤P L”. Si red1 est une réduction polynomiale de L dans L0 , et red2 est une réduction polynomiale de L0 vers L” , alors red2 ◦ red1 est une réduction polynomiale de L vers L”. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L ES PROPRIÉTÉS NP- DURES , NP- COMPLÈTES Propriété NP-dure Une propriété R est dite NP-dure Si toute propriété NP se réduit polynomialement en R. La classe P La classe NP Les propriétés NP-dures Les réductions polynomiales Les propriétés NP-dures L A DÉCOUVERTE DE C OOK Cook fut le premier à découvrir... l’existence de propriétés NP-dures: Théorème de Cook: 3 − CNF − SAT est NP−complète. Donc, d’après ce qui précède, si une propriété NP − dure R était P, on aurait NP = P: R contient donc d’une certaine façon toute la difficulté de NP! 3 − CNF − SAT est le problème de la satisfiabilité d’une formule sous forme conjonctive où chaque clause contient 3 littéraux. Définition (x1 ∨ x2 ∨ x3 ) ∧ (x2 ∨ ¬x3 ∨ x4 ) ∧ (x1 ∨ x2 ∨ ¬x4 ) ∧ (¬x1 ∨ ¬x2 ∨ ¬x3 ) Une propriété est dite NP−complète Si elle est NP et NP−dure.