Les limites de la puissance algorithmique Chapitre 10 Les limites de la puissance algorithmique Mario Marchand IFT-17588 (Hiver 2005)
Introduction Notre sujet d’étude jusqu’ici fût l’algorithmique : la conception et l’analyse d’algorithmes spécifiques permettant de résoudre un problème donné Nous allons maintenant aborder la complexité du calcul : l’étude des limites de ce que les algorithmes peuvent accomplir Nous allons considérer globalement tous les algorithmes permettant de résoudre un problème donné et nous poser la questions suivante: Combien d’opération élémentaires en pire cas un algorithme doit–il effectuer pour résoudre notre problème? Exemple: combien de comparaisons, en pire cas, un (n’importe quel) algorithme de tri doit-il effectuer pour trier un tableau? Mario Marchand IFT-17588 (H-05), Chapitre 10
Introduction (suite) Nous cherchons alors une borne asymptotique inférieure (minorant) sur le temps d’exécution que doit avoir, en pire cas, n’importe quel algorithme pour résoudre un problème donné On cherche donc la fonction g(n) qui croît le plus rapidement telle que Cworst(n) 2 (g(n)) pour tous les algorithmes possibles (ou ceux appartenant à une large classe) Exemple: nous allons démontrer qu’un algorithme de tri par comparaisons, quel qu’il soit, doit effectuer (n log n) comparaisons, en pire cas, pour trier un tableau de n valeurs Un algorithme est donc asymptotiquement optimal lorsque son temps d’exécution en pire cas 2 O(g(n)) (avec le même g(n) que ci haut) Le minorant g(n) est, dans ce cas, également optimal La complexité du calcul peut donc nous informer sur le degré d’optimalité d’un algorithme Mario Marchand IFT-17588 (H-05), Chapitre 10
Introduction (suite) De plus… Nous allons voir que certains problèmes ne peuvent pas être résolus par un algorithme (peu importe son temps d’exécution) Nous allons voir qu’il existe une large classe de problèmes (dits NP-complets) pour lesquels nous n’avons pas d’algorithme efficace et que l’existence d’un algorithme efficace pour un de ces problèmes impliquerait l’existence d’un algorithme efficace pour presque tous les problèmes de décision « bien posés » (ceux de la classe NP)! Les problèmes NP-complets sont donc, dans un certain sens, les plus difficiles à résoudre (de la classe NP) mais ils sont omniprésents et ont parfois une importance pratique considérable. Nous verrons alors comment démontrer qu’un problème est NP-complet (et donc probablement intraitable). Mario Marchand IFT-17588 (H-05), Chapitre 10
Minorants triviaux Un minorant trivial est une borne inférieur (sur le temps d’exécution de n’importe quel algorithme) obtenue en examinant uniquement la taille de la réponse que doit fournir l’algorithme et la quantité d’éléments d’entrée que l’algorithme doit examiner. Ex1: tout algorithme devant générer toutes les permutations de n objets s’exécute en temps 2 (n!) car les n! permutations possibles doivent être produites. Ex2: tout algorithme devant calculer le produit de 2 matrices n £ n s’exécute en un temps 2 (n2) car il doit examiner 2n2 éléments et produire une matrice de 2 n2 éléments L’algorithme classique prends un temps 2 (n3) mais l’algorithme de Strassen prends un temps 2 (nlg(7)) Les minorants triviaux sont souvent trop petits pour être utiles Ex: il est de (n2) pour le problème du commis voyageur (voir plus loin) car nous devons examiner les n(n-2)/2 distances entre les n villes. Mais nous ne connaissons présentement aucun algorithme à temps polynomial en n. Mario Marchand IFT-17588 (H-05), Chapitre 10
Minorants informationnels Ces minorants sont obtenus en considérant la quantité d’information qu’un algorithme doit extraire pour résoudre un problème. Ex: un ``adversaire’’ choisit un nombre compris entre 1 et n et vous devez le trouver en posant le minimum de questions (se répondant par oui ou non). La meilleure stratégie consiste à poser une question qui divise en deux sous ensembles, de même tailles, le nombre de solutions possibles. Ex1: ton nombre est-il plus petit que dn/2e ? Ex2: ton nombre est-il impair? C’est la meilleure stratégie en pire cas car, en pire cas, le nombre recherché sera dans le plus grand des deux sous ensembles. Il faut alors minimiser la taille du plus grand des deux sous-ensembles et cela est réalisé en divisant par deux. Mario Marchand IFT-17588 (H-05), Chapitre 10
Minorants informationnels (suite) Au début il existe n solutions possibles et, après avoir obtenu la réponse à une question « optimale », il reste dn/2e solutions possibles. Le pire cas est alors obtenu lorsque le nombre de solutions restantes est toujours impair (tant que ce nombre est supérieur à 2). C’est le cas lorsque n = 2k + 1 Après 1 question, il reste d(2k + 1)/2e = 2k-1 + 1 solutions possibles Après k questions, il ne reste que 20 + 1 solutions possibles Il faut alors k + 1 = lg(n-1) + 1 questions, en pire cas, pour trouver la solution (pour n > 1). Pour n – 1 = 2k, on a lg(n-1) + 1 = blg(n-1)c + 1 = dlg(n)e (voir chap1 ou annexe A du manuel) Nous devons donc poser dlg(n)e questions en pire cas pour obtenir la solution Mario Marchand IFT-17588 (H-05), Chapitre 10
Minorants informationnels (suite) Considérons maintenant le problème de trier un tableau de n éléments en effectuant uniquement des comparaisons Pour trier un tableau d’éléments distincts, nous devons effectuer une seule permutation parmi les n! permutations possibles Lorsque nous comparons deux éléments entre eux, cela élimine la moitié des permutations possibles. En effet : si x < y alors cela élimine toutes les permutations où x succède à y Similaire à l’exemple précédent : chaque comparaison divise par deux le nombre de solutions possibles. Mais, cette fois-ci, le nombre de solutions possibles est n! Il faut alors dlog(n!)e 2 (n log n) comparaisons en pire cas Mario Marchand IFT-17588 (H-05), Chapitre 10
Minorants informationnels (suite) Tout algorithme de tri par comparaisons nécessite donc, en pire cas, (n log n) comparaisons. Les algorithmes de tri en O(n log n) sont donc asymptotiquement optimaux. Le minorant en (n log n) est donc également optimal. De tels succès sont (présentement) rares. Pour la majorité des problèmes, le meilleur minorant croît vraiment beaucoup plus lentement que le temps d’exécution, en pire cas, du meilleur algorithme. En fait, pour plusieurs problèmes, le meilleur algorithme dont nous disposons possède un temps d’exécution à croissance exponentiel en pire cas. Examinons alors la complexité (de résolution) des problèmes Mario Marchand IFT-17588 (H-05), Chapitre 10
Algorithmes à temps polynomial Nous disons qu’un algorithme solutionne un problème en temps polynomial lorsque son temps d’exécution, en pire cas pour toute instance de taille n, est 2 O(p(n)) où p(n) désigne une fonction polynomiale de n. Note: t(n) 2 O(p(n)) ssi il existe un entier fini k, indépendant de n, tel que t(n) 2 O(nk) Note2: log(n) 2 O(n). Les algorithmes dont le temps 2 O(log n) sont des algorithmes à temps polynomial. Même remarque pour les algorithmes dont le temps d’exécution 2 O(n log n) … Les problèmes solvables par un algorithme à temps polynomial sont dits traitables (faciles). C’est la majorité des problèmes que nous avons traité jusqu’ici: trier un tableau, trouver le k-ième plus petit élément, trouver l’arbre de recouvrement minimal, trouver pgcd(n,m) … Les problèmes non solvables par un algorithme à temps polynomial sont dits intraitables (difficiles). Mario Marchand IFT-17588 (H-05), Chapitre 10
Algorithmes à temps polynomial et « traitabilité » Pourquoi disons-nous qu’un problème est traitable ssi il est solvable par un algorithme à temps polynomial? Nous observons que lorsqu’il existe un algorithme à temps polynomial, le degré du polynôme est souvent petit (ex: k · 3) et qu’il donne souvent naissance à un algorithme que nous pouvons utiliser en pratique Lorsqu’il existe uniquement un algorithme supra polynomial (ex: exponentiel) pour résoudre un problème, cet algorithme ne peut pas traiter, en un temps raisonnable, les instances de grande taille Les polynômes possèdent de bonnes propriétés de fermeture Fermeture sous la composition: si p(n) et q(n) sont deux polynômes, alors p(q(n)) est également un polynôme. Un algorithme qui utilise un nombre polynomial de fois un autre algorithme à temps polynomial, sur des instances de tailles polynomiales, sera également un algorithme à temps polynomial Mario Marchand IFT-17588 (H-05), Chapitre 10
Problèmes de décision Un problème peut être intraitable simplement parce que la solution qu’il doit produire est de trop grande taille Ex: Pour le problème de trouver toutes les permutations de n entiers distincts, l’algorithme doit, au minimum, produire à sa sortie toutes les n! permutations possibles. Alors tout algorithme pour ce problème doit s’exécuter en temps (n!). Pour éliminer ces cas (triviaux) d’ « intraitabilité », considérerons d’abord les problèmes de décision: les problèmes dont la solution est oui ou non. Exemple: Ayant un graphe connexe G = hV, Ei et un nombre k, existe-t-il un arbre de recouvrement dont le poids est au plus k? L’algorithme solutionnant ce problème doit uniquement répondre oui ou non (pour n’importe quelle instance) Beaucoup de problèmes d’optimisation (comme celui de trouver l’arbre de recouvrement minimal d’un graphe connexe) possèdent un problème de décision qui lui est très relié. Mario Marchand IFT-17588 (H-05), Chapitre 10
La classe P La classe P est l’ensemble des problèmes de décision qui sont solvables par un algorithme à temps polynomial. Exemple: Le problème de décision précédent est dans P. En effet, pour le solutionner, il suffit d’exécuter un algorithme à temps polynomial (comme celui de Kruskal) pour trouver un arbre de recouvrement minimal du graphe G. Soit w la somme des poids de cet arbre. Si w · k, on retourne « oui ». Autrement, on retourne « non ». Est-ce que tous les problèmes de décision sont dans P? Réponse: non! En fait, il existe des problèmes de décision pour lesquels il n’existe aucun algorithme qui puisse les résoudre! (peu importe leur temps d’exécution) Mario Marchand IFT-17588 (H-05), Chapitre 10
Indécidabilité Un problème est dit indécidable lorsqu’il n’existe aucun algorithme qui puisse le résoudre. Exemple: Le problème de l’arrêt (proposé par Alan Turing en 1936): Soit un programme informatique et une entrée à ce programme, déterminez si ce programme va terminer sur cette entrée ou continuer à exécuter indéfiniment. Théorème: le problème de l’arrêt est indécidable. Preuve (par contradiction): Soit un algorithme A qui résout le problème de l’arrêt. Dans ce cas, pour tout programme P et entrée E, nous avons: Mario Marchand IFT-17588 (H-05), Chapitre 10
Indécidabilité (suite) Preuve (suite): Tout programme P peut être utilisé comme entrée à lui-même. Utilisons l’algorithme A sur (P, P) pour construire un programme Q ayant la propriété suivante: Q(P) termine lorsque A(P,P) = 0 (lorsque P ne termine pas sur P) Q(P) ne termine pas lorsque A(P,P) = 1 (lorsque P termine sur P) Si nous utilisons Q comme entrée à lui-même nous obtenons: Q(Q) termine lorsque A(Q,Q) = 0 (lorsque Q ne termine pas sur Q) Q(Q) ne termine pas lorsque A(Q,Q) = 1 (lorsque Q termine sur Q) Un tel programme Q ne peut pas exister. Il en va donc de même pour l’algorithme A. CQFD. L’indécidabilité est une forme d’« intraitabilité » définitive. Lorsqu’un problème est indécidable, il n’existe pas d’algorithme qui puisse le résoudre. (peu importe son temps d’exécution) Mario Marchand IFT-17588 (H-05), Chapitre 10
Problèmes (présentement) intraitables mais décidables Il existe plusieurs problèmes décidables qui sont présentement solvables uniquement par un algorithme à temps supra polynomial Ces problèmes sont donc « présentement intraitables » mais ils pourraient éventuellement devenir « traitables » si l’on trouve un algorithme à temps polynomial pour les résoudre Exemples: Cycle hamiltonien: déterminez si un graphe connexe (non orienté) possède un cycle hamiltonien (un cycle parcourant chaque nœud une seule fois) Commis voyageur: trouver le circuit de longueur minimal parcourant n villes. Chaque paire de villes est connectée par une arête de distance entière. Sac à dos: parmi n objets, trouvez le sous-ensemble de valeur totale maximale dont le poids total n’excède pas la capacité du sac à dos. Et plusieurs autres… (voir manuel) Mario Marchand IFT-17588 (H-05), Chapitre 10
Vérification d’une solution proposée Cycle hamiltonien est un problème de décision. Les deux autres sont des problèmes d’optimisation. Voici leur versions décisionnelles: Commis voyageur décision: Soit n villes (et la matrice des n(n-1)/2 distances) et un entier d. Existe-t-il un circuit de longueur au plus d qui parcourt les n villes? Sac à dos décision: Soit n objets avec poids w1, ..., wn, et valeurs v1, …, vn, et un sac à dos de capacité W et un nombre V. Existe-t-il un sous ensemble de ces objets tel que le poids total est au plus W et tel que la valeur totale est au moins V. Ces problèmes ont en commun le fait qu’il est facile de vérifier si une solution proposée (ou candidate) est une solution valide au problème. Exemple: pour vérifier si une liste de nœuds est un cycle hamiltonien d’un graphe de n nœuds, il suffit de vérifier que cette liste possède n + 1 nœuds tel que les n premiers nœuds sont distincts, et le dernier nœud est identique au premier, et chaque paire de nœuds consécutifs est reliée par une arête. Cette vérification s’effectue en temps polynomial en la taille du graphe. Mario Marchand IFT-17588 (H-05), Chapitre 10
Certificats succincts et systèmes de preuves Une solution proposée pour une instance x « oui » est en fait un certificat, i.e., une preuve que x est une instance « oui ». Le certificat est succinct lorsque sa taille est polynomiale en la taille |x| de l’instance x. Notation: un problème de décision X est un ensemble d’instances « oui ». Nous écrivons alors x 2 X lorsque x est une instance « oui » et x X lorsque x est une instance « non ». Pour tout x 2 X, il existe forcément un certificat q qui prouve que x 2 X. Pour tout x X, il n’existe pas de q prouvant que x 2 X. Soit Q l’ensemble des certificats possibles pour un problème X Un système de preuves pour X est un ensemble F µ X £ Q de paires (x,q) tel que nous avons: 8 x 2 X, 9 q 2 Q : (x,q) 2 F i.e., (x,q) 2 F ssi x est une instance « oui » et q est une preuve de ce fait Notez que (x,q) F lorsque x X (peu importe q) car F µ X £ Q Mario Marchand IFT-17588 (H-05), Chapitre 10
Algorithmes de vérification Exemple: si X est l’ensemble des graphes hamiltoniens, le système de preuve F pour X sera alors simplement l’ensemble des paires (g, ) de graphe g 2 X et de séquences de nœuds 2 Q tels que est un cycle hamiltonien pour g. En plus d’un système de preuve F pour X, il faut pouvoir vérifier q’une paire (x,q) 2 F. Il faut donc un algorithme de vérification. Un algorithme de vérification pour un système de preuves F µ X £ Q d’un problème de décision X est un algorithme A tel que: A(x,q) = 1 lorsque (x,q) 2 F Lorsque (x,q) F, A peut retourner 0 ou exécuter indéfiniment. Ainsi A doit accepter F. Il n’est pas nécessaire pour A de décider F. Un système de preuves muni d’un algorithme de vérification est appelé un système de preuves vérifiables. Mario Marchand IFT-17588 (H-05), Chapitre 10
Algorithmes de vérification à temps polynomial Un algorithme de vérification A(x,q) est à temps polynomial ssi son temps d’exécution est 2 O((|x|+|q|)k) pour une constante k. Si A(x,q) termine toujours au bout d’un temps polynomial, il doit alors forcément retourner 0 au bout de ce temps lorsque (x,q) F. Un algorithme de vérification à temps polynomial doit donc décider F. Ainsi, un algorithme de vérification à temps polynomial pour un système de preuves F µ X £ Q d’un problème de décision X est un algorithme A tel que: A(x,q) termine en un temps 2 O((|x|+|q|)k) pour une constante k. A(x,q) = 1 si (x,q) 2 F A(x,q) = 0 si (x,q) F Mario Marchand IFT-17588 (H-05), Chapitre 10
La classe NP La classe NP est l’ensemble des problèmes de décision qui admettent un système de preuves succinctes vérifiables en temps polynomial. Définition de la classe NP. Un problème de décision X est dans NP si et seulement si il existe un système de preuves F µ X £ Q et un algorithme de vérification A tels que: 8 x 2 X, 9 q 2 Q : (x,q) 2 F et |q| 2 O(|x|k) pour une constante k (i.e., le certificat q doit être succinct) 8 (x,q): A(x,q) termine en temps polynomial et: A(x,q) = 1 si (x,q) 2 F A(x,q) = 0 si (x,q) F NP signifie « Nondeterministic Polynomial-time » car si, pour une instance x 2 X, nous obtenons, de manière « non déterministe », une preuve q (que x 2 X), nous pouvons vérifier ce fait en temps polynomial (à l’aide d’un algorithme de vérification). Cette définition de la classe NP est légèrement plus précise que celle présentée dans votre manuel. Mario Marchand IFT-17588 (H-05), Chapitre 10
P µ NP Théorème: P µ NP. Preuve: Considérons un problème de décision X solvable par un algorithme L à temps polynomial. L’idée: dans ce cas L(x) décide en temps polynomial si, oui ou non, x 2 X. Nous avons donc pas besoins de preuve que x 2 X car L(x) nous indiquera si x 2 X au bout d’un temps polynomial. Nous pouvons donc utiliser un ensemble trivial Q = {0} de certificats et définir un système de preuves F = {(x,0) : x 2 X}. Donc, pour tout x 2 X, il existe un certificat succinct q = 0 tel que (x,q) 2 F. Et pour tout x X, il n’existe pas de certificat q tel que (x,q) 2 F. L’algorithme de vérification A(x,q) ignore q et exécute L(x) qui terminera en temps polynomial. Après la terminaison de L(x), A(x,q) retourne 1 si L(x) = « oui » et retourne 0 si L(x) = « non ». Tout problème X dans P possède donc un système de preuves vérifiables en temps polynomial. Donc X 2 P ) X 2 NP. CQFD. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemples de problèmes dans NP Les problèmes suivants sont tous dans NP. Cycle hamiltonien. Commis voyageur décision. Sac à dos décision Pour prouver cela il suffit de démonter qu’ils possèdent tous un système de preuves succinctes vérifiables en temps polynomial. Cycle hamiltonien: le système de preuves est l’ensemble de paires (g, ) où g est un graphe hamiltonien et est une liste de nœuds. L’algorithme de vérification A(g,) n’a qu’à parcourir et vérifier: Si chaque paire de nœuds consécutifs dans cette liste est une arête appartenant à g. Si cette liste comprends n+1 nœuds avec n = nombre de nœuds de g. Si le premier nœud de cette liste est le même que le dernier nœud. Si les n premiers nœuds sont distincts. Cette vérification nécessite uniquement un temps polynomial en |g|+||. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemples de problèmes dans NP (suite) Commis voyageur décision: Soit n villes (et la matrice des n(n-1)/2 distances) et un entier d. Existe-t-il un circuit de longueur au plus d qui parcourt les n villes? Le système de preuves est l’ensemble des paires (g,) où g est un graphe représentant les n villes avec une arête entre chaque paire de villes dont le poids est égale à la distance séparant ces 2 villes. Pour chaque graphe g, est une liste de nœuds. L’algorithme de vérification doit vérifier que: contient n+1 nœuds Les n premiers nœuds de sont distincts Le dernier nœud de est le même que le premier nœud La longueur du circuit (obtenu en sommant la distance entre chaque paire de nœuds consécutifs dans ) est · d. Cette vérification nécessite uniquement un temps polynomial en |g|+||. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemples de problèmes dans NP (suite) Sac à dos décision. Soit n objets avec poids w1, ..., wn, et valeurs v1, …, vn, et un sac à dos de capacité W et un nombre V. Existe-t-il un sous ensemble de ces objets tel que le poids total est au plus W et tel que la valeur totale est au moins V. Le système de preuves est l’ensemble de pairs (x,S) où x est constitué des vecteurs (w1, ..., wn) et (v1, …, vn) et des deux nombres W et V. Pour tout x 2 X, S est un sous ensemble de {1,…,n}. L’algorithme de vérification A(x,S) retourne 1 ssi: i 2 s wi · W et i 2 S vi ¸ V Ce qui s’effectue en un temps polynomial en |x| et |S|. Ces 3 problèmes sont donc dans NP mais nous ne savons pas s’ils sont dans P car, en dépit de nombreuses années d’effort, nous n’avons toujours pas trouvé d’algorithmes à temps polynomiaux pour les résoudre et nous n’avons pas encore pu démontrer que ces problèmes ne peuvent pas être résolus en temps polynomial. Mario Marchand IFT-17588 (H-05), Chapitre 10
Arrêt n’est pas dans NP La vaste majorité des problèmes de décision (bien posés) se trouvent dans NP. C’est donc une vaste classe de problèmes. L’exemple le plus connu d’un problème de décision qui n’est pas dans NP est le problème de l’arrêt. Théorème: le problème de l’arrêt n’est pas dans NP. Preuve (par contradiction): Supposons alors qu’il existe un système de preuves succinctes vérifiables en temps polynomiale pour ce problème de décision X. Pour chaque instance « oui » x 2 X, constituée d’une paire (P,E) programme + entrée, il doit exister un certificat q dont la taille |q| est majorée (bornée supérieurement) par un polynôme en |x| i.e.: |q| 2 O(|x|k) pour une constante k Or, le nombre de certificats ayant une taille |q| est majoré par une fonction exponentielle en |q|. C’est au plus 2|q| lorsque |q| est exprimé en bits. Pour tout x, le nombre de certificats possibles est donc majoré exponentiellement en |x| (et une double exponentielle en k). Mario Marchand IFT-17588 (H-05), Chapitre 10
Arrêt n’est pas dans NP (suite) … preuve (suite) … Il existe donc un algorithme L(x) qui génère tous les certificats q possibles pour x, en un temps majoré exponentiellement en |x|, et qui utilise l’algorithme de vérification à temps polynomial A(x,q) pour déterminer si, oui ou non, q prouve que x 2 X. L(x) termine donc, en un temps majoré exponentiellement en |x|, et retourne « oui » si un certificat valide pour x fut trouvé (prouvant x 2 X) et retourne « non » si un tel certificat n’a pas été trouvé (dans ce cas, un tel certificat n’existe pas et x X). L(x) décide donc si x 2 X ou si x X en un temps majoré exponentiellement en |x|. Or un tel algorithme L ne peut exister car il solutionne le problème de l’arrêt. CQFD. Mario Marchand IFT-17588 (H-05), Chapitre 10
Est-ce que P NP ou bien P = NP ? Le théorème précédent montre, du même coup, que tout problème X dans NP est résoluble par un algorithme à temps exponentiel. Car, pour tout X 2 NP, l’algorithme de vérification, utilisé sur tous les certificats possibles, nous donne un algorithme L(x) pour décider si x 2 X en un temps exponentiel en |x|. Nous savons donc que P µ NP et que tous les problèmes de NP sont résolubles par un algorithme qui, au pire, est à temps exponentiel. Mais existe-t-il des problèmes de NP qui ne sont pas dans P? Rappel: X P ssi il n’existe pas d’algorithme à temps polynomial qui puisse résoudre X En d’autres mots: Est-ce que P NP ou bien P = NP ? Personne de connaît la réponse à cette question! Il s’agit de la question ouverte la plus importante en informatique car sa résolution aura d’énormes répercussions si P = NP. Mario Marchand IFT-17588 (H-05), Chapitre 10
Polynomialement Turing-réductible En raison de l’existence de la classe de problèmes dits NP-complets, une majorité d’informaticiens croient que P NP. Pour définir cette classe, introduisons le concept suivant: Un problème A est polynomialement Turing-réductible (PTR) à un problème B ssi il existe un algorithme à temps polynomial A pour résoudre A qui utilise, à coût unitaire, un algorithme B pour résoudre B (sur des instances de tailles polynomiales). Lorsque A est PTR à B et que B est PTR à A alors A et B sont dits polynomialement Turing-équivalents (PTE) Notez qu’ici, A et B ne sont pas contraints à être des problèmes de décision. Ils peuvent également être des problèmes d’optimisation. Théorème: Si A est PTR à B et que B est résoluble en temps polynomial, alors A est résoluble en temps polynomial. Mario Marchand IFT-17588 (H-05), Chapitre 10
Polynomialement Turing-réductible (supplément) Réductibilité : un problème X peut être ramené (réduit) à un autre problème X’ si une instance quelconque de X peut être facilement reformulée comme une instance de X’ dont la solution sera aussi solution pour X. Réduction d’un problème à un autre De façon générale, si l’on sait résoudre efficacement un problème, il est fréquent qu’on puisse en résoudre bien d’autres Exemple : Le problème de coloration de graphe permet de modéliser, moyennant quelques petites modifications, aussi bien les problèmes de coloration de carte que des problèmes d’affectation de ressources. Mario Marchand IFT-17588 (H-05), Chapitre 10
Polynomialement Turing-réductible (supplément) Réduction d’un problème à un autre (2) Plus formellement, considérons deux problèmes de décision P1 et P2. On dit que P1 est [polynomialement] réductible à P2 s’il existe une Transformation polynomiale (dans la taille des instances de P1) permettant de convertir toute instance positive (resp. négative) de P1 en une instance positive (resp. négative) de P2 + P1 est au plus aussi difficile que P2 (P1 P2) La conséquence importante de la réductibilité de P1 à P2 est que : ◮ si l’on peut montrer que P1 est dans NP alors P2 l’est aussi ◮ si l’on peut montrer que P2 est dans P alors P1 l’est aussi Que faire si l’on ne parvient pas à réduire un problème à un problème polynomial ? Mario Marchand IFT-17588 (H-05), Chapitre 10
Polynomialement Turing-réductible (suite) Preuve: Soit n = taille de l’instance fournie à l’algorithme A qui sera utilisée pour résoudre le problème A. Si A est PTR à B, alors il existe un algorithme A qui utilise, à coût unitaire, un algorithme B pour résoudre le problème B. L’algorithme A possède les caractéristiques suivantes: Le temps d’exécution de A est bornée par un polynôme pa(n). La taille des entrées que A fournies à B est également bornée par le polynôme pa(n). Par hypothèse, l’algorithme B, sur une instance de taille n’, possède un temps d’exécution bornée par un polynôme pb(n’). En pire cas, les appels à B effectuées par A sont exécutées au moins aussi souvent que n’importe quelle autre opération dans A. Donc A effectue au plus pa(n) appels à B. Le temps d’exécution de A est alors bornée supérieurement par le polynôme pa(n)£pb(pa(n)). CQFD. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemples de Turing-réductibilité en temps polynomial Théorème: commis voyageur décision est PTR à commis voyageur. Preuve: Résoudre commis voyageur en temps unitaire consiste à obtenir, en temps unitaire, le circuit le plus court d’un graphe totalement connecté g de n villes. Résoudre commis voyageur décision à partir de ce circuit consiste simplement à déterminer si la longueur du circuit · d. Ceci s’effectue en temps (n). CQFD. Théorème: commis voyageur est PTR à commis voyageur décision. Soit A l’algorithme qui résout commis voyageur décision en temps unitaire. Soit B l’algorithme qui résout commis voyageur en utilisant plusieurs fois l’algorithme A. La première étape pour B consiste à déterminer la longueur (entière) du plus court circuit de la manière suivante Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemple (suite) … preuve (suite) … B choisi d’abord, comme borne supérieure pour la longueur du circuit le plus court, la valeur D égale à la somme totale des distances de chacune des n(n-1)/2 arêtes de g. B effectue alors une recherche binaire dans l’intervalle des entiers [0,1,…D] en utilisant la réponse oui/non de A pour déterminer s’il existe un chemin de longueur · d choisi. Cela nécessite donc (log D) exécutions de A pour obtenir la longueur du chemin le plus court. Ce nombre est clairement borné par un polynôme en |g| car g contient les n(n-1)/2 distances. Ayant déterminé la longueur d* du chemin de plus court, B assigne la valeur de D+1 à une des arêtes du graphe g et demande à A si le graphe résultant contient un circuit de longueur inférieure ou égale à d*. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemple (suite) … preuve (suite) … Lorsque A répond oui, il existe un circuit de longueur d* ne contenant pas cette arête. B considère alors que cette arête est inutile pour obtenir le (ou un) circuit le plus court et préserve la valeur de D+1 pour cette arête. Lorsque A répond non, il n’existe pas de circuit de longueur d* qui ne contient pas cette arête. B restitue alors la distance originale pour cette arête et assigne une distance D+1 à une autre arête du graphe. Après avoir tenter d’assigner une distance de D+1 aux n(n-1)/2 arêtes du graphe de départ, les arêtes du graphe final dont la distance · D font parti de la solution (du circuit le plus court) et celles ayant une distance ¸ D+1 ne font pas parti de la solution. CQFD. Ainsi, commis voyageur et commis voyageur décision sont PTE. La majorité des problèmes d’optimisation possèdent un problème de décision qui lui est PTE. Mario Marchand IFT-17588 (H-05), Chapitre 10
Problèmes NP-complets et NP-difficiles Un problème A est NP-difficile ssi tout problème dans NP est PTR à A. (Notez que A peut être un problème d’optimisation) Donc, si un problème NP-difficile est résoluble en temps polynomial, alors tous les problèmes de NP seront résolubles en temps polynomial (et donc P = NP). Un problème de décision X est NP-complet ssi: X est dans NP et X est NP-difficile Puisque tous les problèmes NP-complets sont dans NP, nous avons: Théorème: P = NP , il existe un problème NP-complet résoluble en temps polynomial Les problèmes NP-complets sont donc les problèmes de NP qui sont les plus « intraitables ». Si P NP, alors il n’existe pas de problème NP-difficile qui soit résoluble en temps polynomial. Mario Marchand IFT-17588 (H-05), Chapitre 10
Problèmes NP-complets et NP-difficiles (suite) Le fait de démontrer qu’un problème A est NP-difficile donne un fort indice de son intraitabilité car un algorithme à temps polynomial pour résoudre A pourrait résoudre, en temps polynomial, tous les problèmes de NP. En raison de l’existence des problèmes NP-difficiles, une majorité d’informaticiens croient que P NP Nous nous servons du théorème suivant pour démontrer qu’un problème est NP-difficile Théorème: s’il existe un problème NP-difficile A qui est PTR à un problème B, alors B est NP-difficile. Preuve: La notion de PTR est transitive: si X est PTR à A et que A est PTR à B alors X est PTR à B. Or ici, tout X 2 NP est PTR à A et A est PTR à B, alors tout X 2 NP est PTR à B. Comment a-t-on fait pour trouver le 1er problème NP-difficile? Mario Marchand IFT-17588 (H-05), Chapitre 10
Problèmes NP-complets et NP-difficiles (suite) Pour le 1er problème NP-difficile, il a fallu démontrer que tous les problèmes de NP sont réductibles en temps polynomial à ce problème! Ce tour de force fut réalisé indépendamment par Stephen Cook en 1971 et par Leonid Levin en 1973. Cook démontra que CNF-SAT est NP-complet. Une expression booléenne CNF (de forme normale conjonctive) est de la forme: (x1 Ç :x2 Ç :x3) Æ (:x1 Ç x2) Æ (:x1 Ç :x2 Ç :x3) CNF-SAT est le problème qui consiste à déterminer si, oui ou non, une expression CNF est satisfaite (i.e. est « vrai ») par une certaine assignation aux variables d’entrée xi Exemple l’expression CNF ci-haut est satisfaite par l’assignation (x1, x2, x3) = (vrai, vrai, faux). La preuve que tous les problèmes de NP sont réductibles en temps polynomial à CNF-SAT est un chef-d’œuvre (et dépasse largement les objectifs du cours…) Mario Marchand IFT-17588 (H-05), Chapitre 10
Polynomialement réductible (par association) Pour les problèmes de décision, il est plus simple d’utiliser une définition plus restrictive de réductibilité en temps polynomial. Un problème de décision X1 est polynomialement réductible (PR) à un problème de décision X2 ssi il existe une fonction de réduction f calculable en temps polynomial et qui a la propriété de satisfaire: Si x 2 X1 alors f(x) 2 X2 Si x X1 alors f(x) X2 L’existence d’une telle fonction de réduction f implique que si X2 est résoluble en temps polynomial (par un algorithme A2), alors X1 est également résoluble en temps polynomial. En effet, pour déterminer si x 2 X1 on exécute f(x) en un temps polynomial en |x| et, ensuite, on détermine si f(x) 2 X2 à l’aide de A2 en un temps polynomial en |f(x)|. On a alors déterminé si x 2 X1 (en un temps polynomial en |x|) car x 2 X1 , f(x) 2 X2. Mario Marchand IFT-17588 (H-05), Chapitre 10
PR ) PTR Nous avons donc le théorème suivant (pour les problèmes de décision): Théorème: Si X1 est PR à X2, alors X1 PTR à X2. Cependant, l’inverse n’est pas vrai. En effet, lorsque X1 est PR à X2, l’algorithme A1 pour résoudre X1 utilise une seule fois l’algorithme A2 pour résoudre X2. Or, lorsque X1 est PTR à X2, A1 peut utiliser A2 un nombre polynomial de fois. Examinons un exemple où X1 est PR à X2 Théorème: cycle hamiltonien est PR à commis voyageur décision. Preuve: Soit g un graphe pour le problème cycle hamiltonien. Assignons une distance 1 à toutes les arêtes de g À chaque paire de noeuds non reliés par une arête de g, ajoutons une arête de distance 2. Le graphe résultant f(g) est maintenant totalement connecté (avec des arêtes de distances 1 ou 2). Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemple de réduction entre problèmes de décision … Preuve (suite) … f(g) est donc une instance du problème du commis voyageur. Mais pour obtenir une instance de commis voyageur décision, il faut, en plus, se choisir un entier d. Choisissons d = n (où n est le nombre de nœuds du graphe g) La paire (f(g), n) constitue alors une instance pour commis voyageur décision. Cette instance est obtenue en un temps polynomial en |g|. Si g est une instance « oui » de cycle cycle hamiltonien, alors f(g) possède un circuit dont la somme des distances = n. Alors (f(g),n) est une instance « oui » de commis voyageur décision. Si g est une instance « non » de cycle hamiltonien, alors f(g) ne possède pas de circuit de longueur n (sinon il serait un cycle hamiltonien pour g). Alors tous les circuits de f(g) ont une longueur supérieure à n. Donc (f(g),n) est une instance « non » de commis voyageur. Mario Marchand IFT-17588 (H-05), Chapitre 10
Exemple de réduction entre problèmes de décision (suite) … preuve (suite) … Alors g est une instance « oui » de cycle hamiltonnien si et seulement si (f(g),n) est une instance « oui » de commis voyageur décision. Puisque chaque instance (f(g),n) est obtenue en un temps polynomial en |g|, cycle hamiltonnien est PR à commis voyageur décision. CQFD En démontrant de manière similaire que X1 est PR à X2, nous avons identifié présentement plus d’une centaine de problèmes NP-complets dont cycle hamiltonnien, commis voyageur décision, sac à dos décision, k-colorabilité, programmation linéaire entière … Si vous n’arrivez pas, en dépits de nombreux efforts, à trouver un algorithme à temps polynomial pour un problème de NP, il y a de fortes chances qu’il existe un problème NP-complet qui soit réductible en temps polynomial à votre problème. Mario Marchand IFT-17588 (H-05), Chapitre 10
Réductions et similarités Mais le fait qu’il existe un problème NP-complet qui soit similaire à votre problème n’assure pas la NP-complétude de votre problème. En effet considérez le problème de déterminer si oui ou non un graphe possède un cylcle eulérien. Un cycle eulérien est un cycle qui parcourt toutes les arêtes d’un graphe une seule fois. En dépit de la similarité entre cycle eulérien et cycle hamiltonnien, cycle eulérien est résoluble en temps polynomial, alors que cycle hamiltonien est NP-complet! En effet, selon un des théorèmes d’Euler, un graphe possède un cycle eulérien ssi chaque nœud est de degré pair (le degré d’un nœud est le nombre d’arêtes qui possèdent ce nœud) Il suffit donc de visiter chaque nœud une seule fois pour déterminer si ce graphe possède un cycle eulérien Mario Marchand IFT-17588 (H-05), Chapitre 10
Que faire lorsque c’est NP-difficile? Pour prouver qu’un problème A est NP-difficile il suffit de trouver un problème NP-complet (ou un problème NP-difficile) qui est polynomialement Turing-réductible à A. De nombreux problèmes d’intérêt pratique sont NP-difficiles et sont trop important pour les ignorer. Lorsque notre problème d’optimisation est NP-difficile, nous pouvons tenter de trouver une solution quasi-optimale (à la place d’une solution optimale). Le prochain chapitre traite des approches algorithmiques nous permettant de trouver des solutions non optimales mais qui peuvent parfois être très satisfaisantes. Mario Marchand IFT-17588 (H-05), Chapitre 10