INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Introduction à la théorie de la complexité INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 197 Problèmes de décision I I I I I Informellement, un problème de décision est un problème dont la réponse est oui ou non. on peut définir un problème de décision comme un langage de mots sur un alphabet fini ⌃ on note ⌃⇤ l’ensemble des mots sur l’alphabet ⌃ (et ✏ le mot vide) par exemple, pour ⌃ = {0, 1}, 00100 2 ⌃⇤ , 11 2 ⌃⇤ . un langage sur ⌃ est un sous-ensemble L ✓ ⌃⇤ . Définition Un problème de décision est un langage P ✓ ⌃⇤ . Remarque : chaque langage P représente bien un problème dont la réponse est oui ou non, en l’identifiant à sa fonction caractéristique P : ⌃⇤ ! u 7! {0, ⇢ 1} 1 si u 2 P 0 si u 62 P P Etant donné un mot d’entrée u 2 ⌃⇤ , on doit décider si u 2 P ou non. : INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 198 Problèmes de décision : exemples I avec ⌃ = {1}, PRIME1 = {1, 11, 111, 11111, 1111111, . . .} l’ensemble des nombres premiers en unaire. I avec ⌃ = {1}, PAIR = {✏, 11, 1111, . . .} l’ensemble des nombre pairs. I avec ⌃ = {0, 1}, PRIME = {1, 10, 11, 101, 111, . . .} l’ensemble des nombre premiers en binaire. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 199 Notion de codage I I la définition précédente pour les problèmes de décision est abstraite. comment par exemple représenter le problème suivant comme un langage ? I I I I I ENTRÉE : un graphe G non dirigé et un entier k 2 N SORTIE : 1 ssi on peut colorier G avec au plus k couleurs on voudrait représenter l’ensemble {(G1 , k1 ), (G2 , k2 ), . . .} de toutes les paires de graphes Gi coloriables avec au plus ki couleurs. il faut alors “coder” chaque paire comme un mot. par exemple, avec l’alphabet ⌃ = {0, 1, #, $}, on pourrait coder un graphe G en identifiant chacun de ses sommets par un entier, et chaque arête (i, j) pourrait être codée par le mot i#j, où i,j sont les codages binaires des sommets i et j. La paire (G , k) pourrait se coder par le mot : i1 #j1 $i2 #j2 . . . in #jn $k où (i1 , j1 ), . . . (in , jn ) sont les arêtes de G INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 200 Notion de codage I la définition de problème comme un langage de mots est abstraite, et utile en théorie de la calculabilité et complexité. I bien souvent, on peut “oublier” le codage et travailler directement avec des représentations plus “concrètes”, par exemple une matrice d’adjacence pour un graphe, ou une liste de voisins. I mais attention, le codage peut influencer la complexité, et il faudra parfois revenir à cette notion. par exemple, quelle est la complexité (en temps) de l’algorithme suivant : I I I I I I ENTREE : n 2 Np POUR i de 2 à d ne FAIRE SI i|n ALORS RETOURNER 0 RETOURNER 1 cela dépend du codage de n INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 201 Problème d’optimisation I un problème d’optimisation est un problème où l’on veut maximiser ou minimiser une certaine quantité I I on peut associer un problème de décision à un problème d’optimisation, en donnant une borne I I par exemple, trouver le plus court chemin dans un graphe, d’un sommet s à un sommet t. par exemple, est-ce qu’il existe un chemin de longueur au plus k de s à t ? si on sait résoudre le problème de décision associé à un problème d’optimisation, on peut parfois résoudre le problème d’optimisation I par exemple, pour trouver le plus court chemin de s à t dans un graphe à n sommets, on peut faire une recherche dichotomique. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 202 Algorithme de décision Définition Un problème P ✓ ⌃⇤ est décidé par un algorithme A si pour tout mot u 2 ⌃⇤ , I A termine et retourne 1 si u 2 P, I A termine et retourne 0 si u 62 P. Un problème est décidable s’il existe un algorithme qui le décide. Par exemple, selon le codage des entiers adopté, l’algorithme vu précédemment décide PRIME1 ou PRIME. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 203 La classe P Définition La classe P est la classe des problèmes pouvant être décidés en temps polynomial. Plus précisément, un problème P ✓ ⌃⇤ est dans P si il existe un algorithme A et une constante k tel que pour tout mot u de longueur n, I I A retourne 1 en temps O(nk ) si u 2 P A retourne 0 en temps O(nk ) si u 62 P Exemples de problèmes dans P : I décider si un tableau est trié I décider si un entier codé en unaire est premier (facile) I décider si un entier codé en binaire est premier (difficile, problème resté ouvert pendant longtemps) Les notions d’algorithme et leur complexité peuvent être définies formellement par le modèle des machines de Turing (plus tard dans le cours) INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 204 Algorithme de vérification I I informellement, un algorithme de vérification est un algorithme qui, étant donnée une solution “candidate” à un problème de décision, décide si oui ou non cette solution est valide. par exemple, pour le coloriage de graphe avec au plus k couleurs, une solution candidate serait un coloriage c, et un algorithme de vérification devrait vérifier que (1) chaque sommet est colorié par c, (2) deux sommets voisins ne sont pas coloriés de la même couleur par c. Cela peut se définir formellement : Définition Un algorithme de vérification pour un problème P ✓ ⌃⇤ est un algorithme A prenant deux mots en argument, tel que P = {u 2 ⌃⇤ | 9v 2 ⌃⇤ , A(u, v ) = 1} Lorsque A(u, v ) = 1, v est appelé un certificat pour u. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 205 La classe N P Définition La classe N Pest la classe des problèmes pouvant être vérifiés en temps polynomial. Autrement dit, un problème P est dans N P si il existe un algorithme de vérification A de complexité polynomial en temps, et deux constantes k, tels que I I pour tout entrée u 2 P telle que u 2 P, il existe un certificat v de longueur polynomial dans u (|v | = O(|u|k )) tel que A(u, v ) = 1 pour tout entrée u 62 P, il n’existe aucun certificat v de longueur polynomial dans u tel que A(u, v ) = 1. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 206 Exemples de problèmes dans N P I décider qu’un ensemble de clauses est satisfaisable (certificat = valuation) I voyageur de commerce : étant donnés n villes, les distances entre les villes, et un entier d, on voudrait savoir s’il existe un cycle de longueur d qui passe par chaque ville une et une seule fois (certificat = un cycle) I coloriage de graphes : peut-on colorier un graphe avec moins de k couleurs sans que deux sommets aient la même couleur ? (certificat = coloriage) I 2-partition : peut-on partitionner un ensemble de n entiers en deux tas égaux ? (certificat = partition) I bin packing : peut-on ranger n objets de volume vi dans k boı̂tes de volumes C ? (certificat = rangement) I tous les problèmes de la classe P(P✓ N P) ... certificat vide. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 207 N P✓ ExpTime I tout problème de N Ppeut être décidé par un algorithme de complexité exponentielle en temps. Pourquoi ? I étant donné un mot u en entrée, il suffit d’énumérer tous les certificats de longueur au plus a.|u|k (pour la constant a de la notation O()) et d’appeler l’algorithme de vérification. Exemple ? I pour SAT : énumérer toutes les interprétations possibles et les tester I pour le coloriage : énumérer tous les coloriages possibles et les tester INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP 208 Conjecture La grande conjecture de l’informatique fondamentale est : P 6= N P Autrement dit, on ne sait pas encore démontrer que I vérifier une solution candidate en tps polynomial (dans la taille de l’entrée du problème), est plus puissant que I trouver une solution en temps polynomial. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Les classes P et NP Temps non-déterministe polynomial I I une définition équivalente de N P peut être donnée c’est la classe des problèmes pouvant être décidés en temps polynomial par un algorithme non-déterministe I cet algorithme doit s’arrêter après un nombre d’étapes polynomial I il a le droit de faire des choix aléatoires (tirer à pile ou face) si la réponse au problème est OUI, alors il doit exister une exécution de l’algorithme (i.e. une suite de tirages) après laquelle l’algorithme répondra OUI I I Exemple : SAT choisir aléatoirement une valeur de vérité pour chaque variable, et vérifier en temps linéaire qu’elles satisfont la formule. I Pourquoi cette définition est équivalente ? I idée : certificat = suite de tirages INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 210 Problèmes N P-complets Parmi les problèmes de la classe N P, certains sont dits “durs” : ce sont ceux qui contiennent toute la difficulté de n’importe quel problème de la classe N P. On les appelle les problèmes N P-complets. I Un problème de décision P est N P-complet si il est dans N Pet tout autre problème P 0 de N Pse réduit à P en temps polynomial, i.e. qu’il existe un algorithme qui transforme toute instance I 0 de P 0 en une instance I de P, en temps polynomial, telle que I a une solution ssi I 0 a une solution. I Pour montrer qu’un problème est N P-complet, en général on part d’un problème N P-complet connu, qu’on réduit dans notre problème en temps polynomial. I Au début, il fallait bien un premier problème N P-complet ! I Théorème de Cook (1971) : SAT est N P-complet. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 211 Vue d’ensemble De manière générale, on appelle N P-dur l’ensemble des problèmes dans lesquels tout problème de N Ppeut se réduire en temps polynomial. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 212 Exemples de Problèmes N P-complets I SAT I 3-SAT (exactement 3 variables par clauses) I voyageur de commerce I coloriage de graphes (même avec 3 couleurs) I bin-packing I couverture d’arête : étant donné un graphe et un entier k, peut-on trouver un sous-ensemble S de sommets tels que chaque arête a au moins une de ses extrémités dans S ? I ... I voir http: //www.nada.kth.se/~viggo/problemlist/compendium.html INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 213 Voyageur de Commerce I I I I TSP en anglais (Traveling Salesman Problem) di↵érentes applications : http://www.tsp.gatech.edu/ 500$ à qui trouve le circuit de distance minimale traversant les 115475 villes des USA record : tour de la Suède, 24 978 villes INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 214 Réduction de SAT vers 3-SAT On sait que SAT est N P-complet, on voudrait montrer que 3-SAT est N P-complet. 1. 3-SAT est dans N Pcar c’est un cas particulier de SAT qui est dans NP 2. on doit maintenant réduire toute instance de SAT en une instance de 3-SAT en temps polynomial. 3. on va ajouter des nouvelles variables. Prenons un exemple : I I I I S = {¬x1 _ x2 _ x4 , ¬x2 _ x3 , x1 _ ¬x2 _ x3 _ ¬x4 } est transformé en : S 0 = {¬x1 _x2 _x4 , ¬x2 _x3 _y , ¬x2 _x3 _¬y , x1 _¬x2 _z, ¬z _x3 _¬x4 } S est satisfaisable ssi S 0 est satisfaisable. Remarquez que cette réduction est polynomiale. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude Bin Packing On veut ranger les objets suivants dans des sacs de capacité 10kg. Objets Poids 1 3 2 4 3 4 4 3 5 3 6 2 7 1 Peut-on réussir avec 3 sacs ? oui, on forme les sacs d’objets suivants : {1, 2}, {3, 4, 5}, {6, 7}. et avec 2 sacs ? oui : {1, 2, 4}, {3, 5, 6, 7}. Cette solution est optimale (on ne peut pas réussir avec un seul sac puisque la somme totale de tous les poids dépasse 10). INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude Bin Packing est N P-complet Supposons qu’on ait k sacs de capacité C . I I BinPacking est dans N P : on peut vérifier en temps polynomial si une solution candidate, i.e. une assignation de chaque objet à un numéro de sac entre 1 et k, satisfait bien la contrainte de capacité. BinPacking est N P-dur. Nous allons le démontrer en faisant une réduction en temps polynomial du problème 2-partition, qui est un problème N P-complet. I I Instance de 2-partition : n entiers c1 , . .P . , cn . On veut savoir P Pns’il existe S ✓ {1, . . . , n} tel que i2S ci = i62S ci . Soit S = i=1 ci . On peut supposer que S est paire (sinon il n’y trivialement pas de solution). Réduction vers BinPacking : On prend C = S/2 et les objets 1, . . . , n de poids c1 , . . . , cn , et k = 2. Il y a une solution à 2-partition si et seulement si il y a en une à l’instance de BinPacking ainsi construite. De plus, on peut construire cette instance de BinPacking en temps polynomial (dans la taille de l’instance de 2-partitions). BinPacking est donc N P-dur (même pour k = 2). INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude GRAPHCOLOR est N P-complet Nous allons démontrer que le problème de coloriage de graphe avec k couleurs est N P-complet. I le problème est dans N P, en prenant pour solution candidate un coloriage, i.e. une fonction c des sommets vers {1, . . . , k}. Il est facile de vérifier en temps polynomial que cette solution est valide. I pour montrer que GRAPHCOLOR est N P-dur, nous allons réduire le problème 3SAT en temps polynomial dans GRAPHCOLOR I on doit donc prouver l’existence d’un algorithme qui, à partir d’un ensemble S de clauses avec 3 littéraux, crée en temps polynomial un graph G et un entier k tel que S est satisfaisble ssi G est coloriable avec k couleurs. I ici on va prendre k = 3, et prendre les couleurs 0, 1, et #. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 218 Réduction de 3SAT vers GRAPHCOLOR I motif de base pour chaque proposition. Un littéral et sa négation ne peuvent pas être colorié avec la même couleur I Comme les coloriages sont équivalents modulo permutation, on supposera que le noeud central est toujours colorié par #. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 219 Réduction de 3SAT vers GRAPHCOLOR I on le fait pour les n propositions. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 220 Réduction de 3SAT vers GRAPHCOLOR I encodage d’une clause INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 221 Réduction de 3SAT vers GRAPHCOLOR I encodage d’une clause INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 222 Réduction de 3SAT vers GRAPHCOLOR INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 223 Réduction de 3SAT vers GRAPHCOLOR INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 224 Réduction de 3SAT vers GRAPHCOLOR INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 225 Réduction de 3SAT vers GRAPHCOLOR INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 226 Réduction de 3SAT vers GRAPHCOLOR INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 227 Réduction de 3SAT vers GRAPHCOLOR I il faut le faire pour toutes les clauses INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude 228 Exercice : démontrer la correction de la réduction Vous devez démontrer que : I toute interprétation qui satisfait S donne un coloriage du graphe avec 3 couleurs I toute coloriage valide du graph donne une interprétation qui satisfait S. INFO-F-302, Cours d’Informatique Fondamentale Introduction à la théorie de la complexité Réductions et N P-complétude Autres classes I PSPACE : problèmes résolubles en espace polynomial I EXPTIME : problèmes résolubles en temps exponentiel I NPSPACE : résolubles par algorithme non-déterministes en espace polynomial (NPSPACE = PSPACE, Théroème de Savitch) I ... I kEXPTIME, kNEXPTIME I décidables I https://complexityzoo.uwaterloo.ca/Complexity_Zoo P ✓ NP ✓ PSPACE ✓ EXPTIME ✓ NEXPTIME ✓ 2EXPTIME ✓ · · · ✓ · · · ✓ décidables