• Aucun résultat trouvé

Temps polynomial et temps exponentiel

Dans le document COMPLEXITÉ ALGORITHMIQUE (Page 59-63)

Considérations de base sur le temps

2.1 Temps déterministe

2.1.3 Temps polynomial et temps exponentiel

Nous pouvons maintenant définir deux classes de complexité qui joueront un rôle impor-tant par la suite. L’idée de considérer comme notion d’algorithmes « efficaces » les algo-rithmes fonctionnant en temps polynomial, remonte aux articles de Cobham [Cob65] et d’Edmonds [Edm65] en 1965.

2-O Définition (temps polynomial et exponentiel)

La classePest l’ensemble des langages reconnus en temps polynomial, c’est-à-dire P=DTIME(nO(1)) =k∈NDTIME(nk).

La classeEXPest l’ensemble des langages reconnus en temps exponentiel, c’est-à-dire EXP=DTIME(2nO(1)) =k∈NDTIME(2nk).

Enfin, une dernière classe que l’on étudiera moins est notéeE, il s’agit de l’ensemble des langages reconnus en temps exponentiel avec exposant linéaire, c’est-à-dire :

E=DTIME(2O(n)) =k∈NDTIME(2kn).

On a bien sûrP E EXP. Nous pouvons d’ores et déjà appliquer le théorème de hiérarchie2-Jpour séparer ces classes.

40 Chapitre 2. Considérations de base sur le temps 2-P Corollaire

PEXP

Démonstration Il suffit de remarquer que PDTIME(2n) puis, par le théorème2-J, queDTIME(2n)DTIME(2n2)et enfin queDTIME(2n2)EXP. ⊓⊔

. 2-Q Exercice

Séparer de mêmeEetP.

2-R Exemple Voici quelques exemples de problèmes dansPet dansEXP. 1. MULTIPLICATION D'ENTIERS:

entrée: deux entiersaetb donnés en binaire ; un entierk; – question: lek-ème bit du produitabvaut-il1?

Ce problème est dansP: il suffit d’effectuer la multiplicationab grâce à l’algo-rithme de l’école primaire et de regarder lek-ème bit du résultat. Cela prend un temps polynomial.

2. MULTIPLICATION DE MATRICES:

entrée: deux matricesAetBde taillem×mà coefficients entiers donnés en binaire ; un couple(i,j)avec1i,jm; enfin, un entierk;

question: lek-ème bit du coefficient(i,j)du produitAB vaut-il1?

Ce problème est dansP: le coefficient(i,j)deABn’est rien d’autre que la somme desmproduitsai,kbk,j, ce qui se calcule en temps polynomial.

3. ACCESSIBILITÉ:

entrée: un graphe orientéGet deux sommetss ett; – question: existe-t-il un chemin dansGdes àt?

Ce problème est dansP: il suffit de faire un parcours du graphe en partant des et de voir si l’on atteintt (parcours en largeur ou en profondeur, peu importe).

4. COUPLAGE PARFAIT:

entrée: un graphe non orientéG;

question:Gadmet-il un couplage parfait ?

Un couplage parfait est un ensemble d’arêtes tel que chaque sommet est relié à exactement une arête de cet ensemble. Ce problème est dansPmais l’algorithme polynomial n’est pas trivial et est dû à Edmonds [Edm65].

2.1. Temps déterministe 41 5. PRIMALITÉ:

entrée: un entierN donné en binaire ; – question:Nest-il premier ?

Ce problème est dansPmais la démonstration n’est pas évidente (l’algorithme naïf consistant à essayer tous les diviseurs potentiels jusqu’àpN est exponentiel puisque la taille de l’entrée estn=logN) : il a fallut attendre Agrawal, Kayal et Saxena [AKS04] pour l’obtenir.

6. RANGEMENT:

entrée: des entiersp1, . . . ,pnNen binaire (les poids denobjets) et deux en-tiersm,pen binaire (le nombre de boîtes de rangement et le poids maximal que chacune peut contenir) ;

question: peut-on ranger lesnobjets dans lesmboîtes en respectant le poids maximal pde chaque boîte ?

Ce problème est dansEXPcar il suffit de tester toutes les possibilités pour ranger les objets (c’est-à-dire pour chaquei, décider dans laquelle desm boîtes mettre l’objeti) et de voir si l’une d’entre elles respecte les contraintes. Il y amn=2nlogm possibilités, donc ce calcul prend un temps exponentiel en la taille de l’entrée. En réalité, bien que ce problème ne soit probablement pas dansP, on peut quand même faire mieux queEXPcar il appartient à la classeNPque nous verrons par la suite (il estNP-complet). Il est appeléBIN PACKINGen anglais.

7. ARRÊT EXP:

entrée: le code d’une machineM et un entierken binaire ; – question: est-ce queM(ε)s’arrête enk étapes ?

Ce problème est dansEXPcar on peut simulerM(ε)pendantk étapes : puisque la taille de l’entréek estlogk, cela prend un temps exponentiel. Nous n’avons pas encore vu cette notion, mais mentionnons au passage que ce problème est EXP-complet.

8. Un problème deEXP plus « naturel » est, sur l’entréeC, de calculer la valeur du circuit booléenD dont le code est décrit par le circuit booléenC donné en entrée (nous définirons les circuits au chapitre5). PuisqueD peut être de taille exponentielle par rapport àC, ce calcul prend un temps exponentiel. Comme le précédent, ce problème estEXP-complet (exerciceB-C).

. 2-S Exercice

Justifier plus rigoureusement que ces problèmes sont chacun dans la classe annoncée.

Pour le problème du couplage parfait, voir [Edm65] ou un livre d’algorithmique comme [Cor+10]. Pour le problème de la primalité, voir [AKS04].

42 Chapitre 2. Considérations de base sur le temps Un peu de recul

La classePest généralement présentée comme celle des problèmes résolubles « efficace-ment ». Bien qu’en pratique on sache résoudre rapideefficace-ment certains problèmes hors de P, et par ailleurs qu’il soit difficile d’admettre qu’un algorithme fonctionnant en temps 1 000 000n1 000soit efficace, il n’en reste pas moins que cette présentation est très souvent pertinente : la plupart des problèmes « naturels » dansPont un algorithme ennk pour un petit exposantket pour la plupart des problèmes « naturels » hors deP, on ne connaît pas d’algorithme efficace.

On verra plus tard que les algorithmes probabilistes polynomiaux ajoutent encore à la confusion. Toujours est-il que la classePest « robuste » (bonnes propriétés, notamment de clôture) et donne un bon cadre d’étude en complexité.

Notre première propriété dePsera la clôture dePpar changements finis. SiAetBsont deux langages, rappelons que leur différence symétriqueA∆B est l’ensemble des mots contenus dans exactement un seul des deux ensembles, c’est-à-direA∆B= (A\B)∪(B\A).

2-T Lemme

SoitLetLdeux langages sur un alphabetΣ. SiLPetL∆Lest fini (c’est-à-dire queL etLdiffèrent seulement en un nombrefinide mots), alorsLP.

Idée de la démonstration La machine pourLva contenir dans son code la liste (finie) des mots deL∆L. Pour décider sixL, on décide d’abord sixLpuis on corrige éventuellement la réponse en testant six appartient à la liste des mots deL∆L. Démonstration Soit {x1, . . . ,xm} l’ensemble des mots de L∆L. Soit M une machine

polynomiale pour le langageL. Voici une machineMpourLsur l’entréex:

– exécuterM(x);

– six∈ {x1, . . . ,xm}, alorsaccepterssiM(x)rejette ; – sinonaccepterssiM(x)accepte.

L’exécution deM(x)prend un temps polynomial. Pour tester si x∈ {x1, . . . ,xm}, on compare x à chacun des mots xi, lesquels sont codés « en dur » dans le code de la machineM. Chaque comparaison prend un temps linéaire ; puisque le nombre de comparaisons est fixé une fois pour toute, le testx ∈ {x1, . . . ,xm}prend lui aussi un temps linéaire. Au total, M fonctionne en temps polynomial et reconnaît L, donc

LP. ⊓⊔

Dans le document COMPLEXITÉ ALGORITHMIQUE (Page 59-63)