• Nenhum resultado encontrado

Complexité et algorithmique

2.3 Classification des problèmes

CHAPITRE 2 — Complexité et algorithmique 21

Figure 2.4 – Rapidité de croissance de certaines fonctions usuelles. Attention, par mesure de lisibilité, l’échelle de l’axe des ordonnées est logarithmique.

(resp. sur un ordinateurk fois plus performant queO1) alors NA0 =k0·NAaveck0 ≤ k. En revanche, des améliorations technologiques similaires ont un effet additif sur les performances d’un algorithme exponentiel. Par exemple, étant donné un algorithme exponentielB,NB0 =k0+NBaveck0 ≤k.

Effet des améliorations technologiques sur des algorithmes de différentes complexités.

PP PP

PP

C

TPGI Avec un ordinateur actuel Avec un ordinateur 100 fois plus rapide Avec un ordinateur 1000 fois plus rapide

n N1 100.N1 1000.N1

n2 N2 10.N2 31,6.N2

n3 N3 4,46.N3 10.N3

n5 N4 2,5.N4 3,98.N4

2n N5 N5+ 6,64 N5+ 9,97

3n N6 N6+ 4,19 N6+ 6,29

Figure 2.5 – Étant donné un problème P, C représente la Complexité (en temps) d’un algorithme A résolvantP et TPGI représente la Taille de la Plus Grande Instance que peut résoudreAen une heure.

Cette table est issue de [53].

22 CHAPITRE 2 — Complexité et algorithmique

est "oui". Attention, NP est l’acronyme de NON-DÉTERMINISTE POLYNOMIAL, du fait d’une définition alternative (mais équivalente) basée sur la notion d’algorithme non-déterministe: la classe NP contient tous les problèmes de décision pouvant être résolus par un algorithme non-déterministe en un temps polynomial.

Afin de préciser les classes P et NP, considérons, dans un premier temps, le problème des sept ponts de Königsberg. Ce problème mathématique historique, qui fit la célébrité de la ville de Königsberg, est le suivant:

LES SEPT PONTS DEKÖNIGSBERG

DONNÉES: Un plan de la ville de Königsberg (cf. Figure 2.6).

QUESTION: Est-il possible de trouver un chemin permettant, à partir d’un point de départ au choix, de passer une et une seule fois par chaque pont, et de revenir à son point de départ, étant entendu qu’on ne peut traverser l’eau qu’en passant par les ponts.

C’est Leonhard Euler (1707-1783) qui, le premier, donna à ce problème la première résolution ma- thématique formelle. En considérant la carte de Königsberg de l’époque, illustrée en Figure 2.6, Euler a modélisé le problème sous forme de graphe? en représentant les ponts par des arêtes et les berges par des sommets. SoitGKle graphe correspondant. En supprimant la contrainte de retour au point de départ, le problème correspond à la recherche d’une chaîne eulérienne? dansGK. Une chaîne eulérienne dans un grapheGest une suite de sommets reliés entre eux par des arêtes et passant par toutes les arêtes de G. Or, il n’existe une chaîne eulérienne dans un grapheGque siGpossède0ou2sommets de degré? impair. DansGK,3ou5arêtes partent de chaque sommet. Par conséquent, tout sommet de ce graphe est de degré impair, la réponse au problème est donc qu’il n’existe pas de tel chemin.

Figure 2.6 – La carte de Königsberg au temps d’Euler. La ville est construite sur deux îles reliées au continent par six ponts, et entre elles par un pont.

En toute généralité, étant donné un graphe ànsommets, il existen!possibilités de réponses pour ce problème. Malgré tout, Euler a démontré que le problème peut être résolu enO(n). C’est par conséquent un problème de la classe P.

Considérons maintenant la recherche d’un chemin hamiltonien?. Un chemin hamiltonien dans un graphe Gest une suite de sommets reliés entre eux par des arêtes et passant par tous les sommets de

CHAPITRE 2 — Complexité et algorithmique 23

Gune et une seule fois. On ne connaît pas d’algorithme efficace (i.e. appartenant à P) pour déterminer l’existence d’un tel chemin. En revanche, étant donné un parcours, on peut vérifier en temps polynomial s’il est ou non hamiltonien. C’est par conséquent un problème de la classe NP.

2.3.2 Les problèmes NP-complets

Comme nous le verrons, un problème est NP-complet s’il est parmi les problèmes les plus difficiles de la classe NP. Nous débutons cette section en définissant la notion de transformation polynomiale? d’un problème en un autre illustrée en Figure 2.7.

Définition 2.7 (Transformation polynomiale). Il existe une transformation polynomiale d’un problème de décision P1 en un problème de décisionP2 si, étant donnée toute instanceI1 deP1, il est possible de construire une instance I2 deP2 en un temps polynomial (par rapport à la taille deI1), et tel que la réponse àI1est "oui" si et seulement si la réponse àI2 est "oui" également.

Par la suite, nous utiliserons la notationP1 ∝ P2pour indiquer l’existence d’une transformation po- lynomiale deP1versP2. Une propriété importante d’une transformation polynomiale est la transitivité:

siP1∝ P2etP2 ∝ P3alorsP1 ∝ P3.

Figure 2.7 – Transformation polynomiale deP1versP2.

Définition 2.8 (Problèmes C-durs et C-complets ). Un problème de décisionP(resp.P ∈C) est C-dur (resp. C-complet) si tous les problèmes appartenant à la classe C se transforment polynomialement en P.

Définition 2.9 (Problèmes NP-durs [38]). Un problème de décisionPest NP-dur si tous les problèmes appartenant à NP se transforment polynomialement enP.

De prime abord, il est surprenant de penser que des problèmes NP-complets puissent exister, mais dans un théorème célèbre, Stephen Cook [38] a prouvé que le problème de satisfaisabilité d’une expres- sion booléenne (le problème SAT) est NP-complet. Une conséquence directe de la définition de problème NP-complet est que s’il existe un algorithme polynomial pour résoudre un problème NP-complet alors il est possible de résoudre tous les problèmes de NP en temps polynomial. Un grand nombre de problèmes NP-complets ont été répertoriés dans le livre de Garey et Johnson [53] ainsi que dans le compendium de Crescenzi et Kann [41].

Prouver la NP-complétude d’un problèmeP nécessite de montrer que:

1. P ∈NP,

2. tous les problèmes appartenant à NP se transforment polynomialement enP.

24 CHAPITRE 2 — Complexité et algorithmique

En pratique, la seconde partie de la preuve de NP-complétude d’un problèmePconsiste à démontrer qu’il existe une transformation polynomiale d’un problème NP-completP2 enP. Richard M. Karp en 1972 [68] a prouvé, à l’aide de transformations polynomiales successives illustrées en Figure 2.8, que les problèmes 3-SAT, 3-COLOR, 3-DIMENSIONAL MATCHING, VERTEX COVER, PLANAR-3-COLOR, EXACT-COVER, HAMILTONIAN CIRCUIT, CLIQUE et SUBSET-SUM sont NP-complets (pour plus de détails se référer à [68]).

Figure 2.8 – Illustration des transformations polynomiales successives de R.M. Karp en 1972 [68].

2.3.3 P vs NP

Pour résumer, être dans P, c’est trouver une solution en temps polynomial, tandis qu’être dans NP, c’est prouver en temps polynomial qu’une proposition de réponse est ou non une solution au problème.

Ainsi, tout problème qui est dans P se trouve dans NP. L’un des problèmes ouverts les plus fondamentaux et intéressants de notre époque en informatique théorique est sans doute la question réciproque: a-t-on NPP ? Il en découlerait que P = NP. Ce problème fait partie des plus grands problèmes ouverts, et sa résolution est primée un million de dollars par le Clay Mathematic Institute.

Ne sachant pas construire de machine non-déterministe, on ne peut que simuler un algorithme non- déterministe à l’aide d’un algorithme déterministe. Malheureusement, il a été démontré que toute simu- lation de la sorte s’effectue en temps exponentiel. Cela fait que, pour de grandes entrées, on ne peut pas résoudre de problèmes à l’aide d’algorithmes non-déterministes, quelle que soit la puissance de la machine.

Déterminer si P = NP revient à savoir s’il est possible de simuler un algorithme non-déterministe en temps polynomial. S’il s’avérait que P = NP, alors on pourrait résoudre tous les problèmes de NP en un temps polynomial sur une machine déterministe. Or, comme nous l’avons précisé, les problèmes NP-complets sont très fréquents et, pour l’instant, il n’existe pas d’algorithme polynomial en résolvant un. C’est pour cette raison qu’on conjecture cependant que les problèmes NP-complets ne sont pas résolvables en temps polynomial.

La Figure 2.9 illustre les relations entre les classes P, NP et NP-complet suivant la réponse à la question "P =NP ?".

CHAPITRE 2 — Complexité et algorithmique 25

Figure 2.9 – Relations entre les classes P, NP et NP-complet. (a) si P =NP. (b) P6=NP