Vous êtes sur la page 1sur 5

file:///C|/Documents%20and%20Settings/puma/Mes%20documents/de...info/cours/Recherche%20op/EFFICACITE%20DES%20ALGORITHMES,.

htm

- Prsentation - Les graphes - Les arbres - Reprsentation - Complexit - Chemin - Ordonnancement - Flot maximum - Prog. linaire - Version PDF

EFFICACITE DES ALGORITHMES, COMPLEXITE DES PROBLEMES


INTRODUCTION
Considrons le jeu dchecs. On sait quil existe une procdure finie qui permet de dterminer la meilleure stratgie partir dune situation donne. Cependant, jusqu prsent, on ne connat pas dautre mthode que lexploration de tous les coups possibles. En rsum, on sait quen un temps fini, on peut apporter la solution au problme. Cependant, sur le plan pratique on saperoit immdiatement que lnumration exhaustive prendrait trop de temps. La premire notion qui apparat donc est celle dalgorithme efficace. Pour un problme donn, on cherche avoir un algorithme dit efficace, cest--dire que le temps ncessaire son excution ne soit pas trop important. Ensuite, intervient la notion de problme facile ou difficile. Un problme sera dit facile si on peut le rsoudre facilement, autrement dit sil ne faut pas trop de temps pour trouver la solution. Ainsi, sil existe un algorithme efficace pour un problme donn, alors ce dernier est dit facile. Mais comment caractriser les problmes difficiles. Un problme pour lequel on ne connat pas dalgorithme efficace, est-il difficile ou facile ? Ce nest pas parce que lon ne connat pas dalgorithme efficace quil nest pas facile et quun jour on ne trouvera pas un moyen de le rsoudre. A linverse, il peut exister des problmes intrinsquement compliqus, pour lesquels on ne pourra jamais trouver dalgorithme efficace. De nombreuses personnes se sont penches sur ces problmes et ont dvelopp une thorie dite de la complexit. Nous ne verrons pas ici en dtail les fondements de cette thorie mais tenterons plutt dacqurir une vision globale de cette problmatique. Dans un premier temps, on va voir comment lefficacit dun algorithme est mesure avant de dfinir plus prcisment ce quest un algorithme efficace. Ensuite, On discutera de la classification des problmes selon leur difficult tre rsolus.

Top Back Next - Introduction - Complexit - Efficacit - Combinatoire - Problme difficile

COMPLEXITE D'UN ALGORITHME


On dsigne par complexit dun algorithme le nombre doprations ncessaires celui-ci pour sexcuter. Bien videmment, ce nombre peut varier en fonction de ce que lon appelle les donnes dentres, cest-dire les paramtres que lon donne lalgorithme. Par exemple, un algorithme de tri dlments dans un tableau ne sexcutera pas avec le mme nombre doprations sil y a 10 lments ou sil y en a 100. Ainsi, on cherchera estimer la complexit dun algorithme en fonction de la taille des donnes entres. Par exemple, dans le cas du tableau, on exprimera la complexit en fonction de la taille du tableau. Pour une matrice, ce serait en fonction de sa largeur et de sa hauteur. De plus, la nature mme des donnes pour une mme taille peut ne pas aboutir au mme nombre doprations lexcution de lalgorithme. En effet, si le tableau est dj tri, lexcution de lalgorithme de tri risque dtre trs rapide compare au cas dun tableau totalement en dsordre. Cest pour cela que lon estime le nombre doprations dans le pire des cas. En rsum, on mesure lefficacit dun algorithme par une expression mathmatique qui indique le nombre d'oprations indispensables lexcution de lalgorithme en fonction de la taille des donnes en entres tout en supposant le pire des cas. Le critre de rapidit nest pas toujours celui qui nous intresse. On peut aussi vouloir estimer la place utilise par un algorithme dans la mmoire de lordinateur. Dans ce cas, on parle de complexit spatiale
file:///C|/Documents%20and%20Settings/puma/Mes%20...echerche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm (1 of 5)06/04/2006 22:05:51

file:///C|/Documents%20and%20Settings/puma/Mes%20documents/de...info/cours/Recherche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm

alors que jusqu prsent on considrait la complexit temporelle. La complexit spatiale peut se dfinir dune manire semblable la complexit temporelle. Dans la suite de ce cours, on sintressera uniquement la complexit temporelle.

ALGORITHME EFFICACE
Une fois la complexit dfinie de manire succincte, on peut tenter de dfinir ce quest un algorithme efficace. Un algorithme sera dit efficace si sa complexit est borne par un polynme ayant la taille des donnes comme variable. Par exemple, un algorithme qui a en entre un tableau de n lments et qui a une complexit de n2 est un algorithme efficace. On dit aussi que lalgorithme est polynomial. Cette dfinition est justifie par le fait quon sintresse aux performances des algorithmes quand la taille des donnes en entre devient trs importante. Par exemple, considrons les algorithmes A, B et C. Leur complexit sont les suivantes.
q

Ca = 80n, Cb = 10n2, Cc = n!.

Avec 4 lments, il faut respectivement 320, 160 et 24 oprations aux algorithmes A, B et C pour sexcuter. Le plus efficace pour 4 lments est donc C. Considrons maintenant 20 lments, il faut respectivement 1600, 4000 et 2.4 1018 oprations pour raliser lexcution. On saperoit tout de suite que lalgorithme C nest plus utilisable. Par contre, A et B restent applicables. Maintenant, avec 100 lments, il faut respectivement 8000 et 100000 oprations. Bien videmment, lalgorithme A est le plus performant, mais lalgorithme B reste applicable. Cet exemple justifie la notion defficacit. Si le nombre doprations "nexplose pas" avec une augmentation de la taille des donnes, lalgorithme est considr efficace. Certains pourraient demander ce quest prcisment une opration. En gnral, on considre comme tant une opration lmentaire une affectation, une addition, un test... Mais cela est discutable puisque selon le langage et le compilateur, une opration sera excute plus ou moins vite, une addition sexcutera plus ou moins vite quun test... Cependant, il faut bien comprendre que lon sintresse au comportement gnral de lalgorithme face des problmes de grande taille. Ainsi, ce nest pas utile de compter toutes les oprations dans le dtail, ni de considrer le langage de programmation. Dans notre exemple, les coefficients 80 et 10 ne sont pas trs importants, ds que la taille augmente, on saperoit que cest le terme en n qui prime. Ceci explique la difficult dterminer la complexit dun algorithme. Il faut tre trs prcis dans la dmarche mais ne pas se soucier de la valeur exacte en terme de temps dexcution de chaque opration.

PROBLEME D'OPTIMISATION COMBINATOIRE, DE RECONNAISSANCE


Problme doptimisation combinatoire
Un problme doptimisation combinatoire est un problme qui consiste chercher une meilleure solution
file:///C|/Documents%20and%20Settings/puma/Mes%20...echerche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm (2 of 5)06/04/2006 22:05:51

file:///C|/Documents%20and%20Settings/puma/Mes%20documents/de...info/cours/Recherche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm

parmi un ensemble de solutions ralisables.

Problme de reconnaissance
Un problme de reconnaissance est un problme qui consiste apporter une rponse "oui" ou "non" une question. A chaque problme doptimisation combinatoire, on peut associer un problme de reconnaissance de la manire suivante. Soit un problme doptimisation combinatoire: Trouver s S | f(s) = min{f(s) | s S}. Soit a un nombre, on dfinit le problme de reconnaissance associ: Existe-t-il s S | f(s) a ? Un problme doptimisation combinatoire est au moins aussi difficile que le problme de reconnaissance associ. De plus, on peut gnralement prouver que le problme de reconnaissance nest pas plus facile que le problme doptimisation combinatoire. En dautres termes, cela signifie quun problme doptimisation combinatoire est souvent du mme niveau de difficult que le problme de reconnaissance associ. Cela justifie que la suite de ce chapitre ne concerne que les problmes de reconnaissance.

PROBLEME FACILE, DIFFICILE


Problmes dcidables
Tout dabord, on fait une distinction entre les problmes dcidables et les problmes indcidables. Les problmes indcidables sont ceux pour lesquels aucun algorithme, quel quil soit, na t trouv pour les rsoudre. Ainsi, les problmes dcidables sont ceux pour lesquels il existe au moins un algorithme pour les rsoudre.

La classe NP
Parmi les problmes dcidables, les plus simples rsoudre sont regroups dans la classe NP. Un problme appartient la classe NP si quelquun ayant la solution au problme peut dmontrer que c'est la solution en un temps polynomial. Les autres problmes dcidables sont considrs comme trs difficiles. La classe NP est galement dcompose en trois catgories qui permettent didentifier les problmes les plus simples et les problmes les plus compliqus de la classe.

La classe P
La classe P, qui regroupe les problmes les plus simples de la classe NP, contient les problmes pour lesquels on connat au moins un algorithme polynomial pour les rsoudre. Pour le reste de la classe NP, on nest pas sr quil nexiste pas un algorithme polynomial pour rsoudre chacun de ses problmes.
file:///C|/Documents%20and%20Settings/puma/Mes%20...echerche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm (3 of 5)06/04/2006 22:05:51

file:///C|/Documents%20and%20Settings/puma/Mes%20documents/de...info/cours/Recherche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm

Ainsi, on sait que P est inclu dans NP mais on na pas pu prouver que P n'est pas NP.

Rduction polynomiale
Soit deux problmes P1 et P2. On dit que P1 est rduit au problme P2 si on peut rsoudre P1 en utilisant un algorithme pour P2 comme sous-routine. Cette rduction est dite polynomiale si lalgorithme pour P1 est polynomial en comptant lappel la sous-routine de P2 comme une opration lmentaire. P2 est au moins aussi difficile que P1. En effet, si P2 appartient la classe P, P1 y appartient aussi, car lalgorithme ci-dessus est polynomial. Si P2 nest pas polynomial, rien nempche P1 de ltre sil existe un algorithme polynomial pour le rsoudre.

La classe NP-Complet
La classe NP-Complet regroupe les problmes les plus difficiles de la classe NP. Elle contient les problmes de la classe NP tels que nimporte quel problme de la classe NP leur est polynomialement rductible. Entre eux, les problmes de la classe NP-Complet sont aussi difficiles.

La classe NP-Difficile
La classe NP-Difficile regroupe les problmes (pas forcment dans la classe NP) tels que nimporte quel problme de la classe NP leur est polynomialement rductible.

Tableau rcapitulatif

file:///C|/Documents%20and%20Settings/puma/Mes%20...echerche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm (4 of 5)06/04/2006 22:05:51

file:///C|/Documents%20and%20Settings/puma/Mes%20documents/de...info/cours/Recherche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm

Copyright (c) 1999-2000 - Bruno Bachelet - bachelet@ifrance.com - http://bruno.bachelet.net/


La permission est accorde de copier, distribuer et/ou modifier ce document sous les termes de la licence GNU Free Documentation License, Version 1.1 ou toute version ultrieure publie par la fondation Free Software Foundation. Voir cette licence pour plus de dtails (http://www.gnu. org/).

file:///C|/Documents%20and%20Settings/puma/Mes%20...echerche%20op/EFFICACITE%20DES%20ALGORITHMES,.htm (5 of 5)06/04/2006 22:05:51

Vous aimerez peut-être aussi