Você está na página 1de 16

Thomas H.

Cormen

Algorithmes
Notions de base

9782100701513-Livre.indb 1 27/08/13 17:48


L'dition originale de ce livre a t publie aux tats-Unis
par The MIT Press, Cambridge, Massachussets,
sous le titre Algorithms Unlocked.
Copyright 2013 Massachussets Institute of Technology

Traduit de lamricain par Herv Soulard

Illustration de couverture : Droits rservs

Dunod, Paris, 2013 pour la traduction franaise


ISBN 978-2-10-070151-3

9782100701513-Prelim.indd 2 28/08/13 16:00


Table des matires

Avant-propos VI

Chapitre 1. Introduction aux algorithmes 1

Exactitude 2

Utilisation des ressources 4

Algorithmes pour les non-informaticiens 6

Algorithmes pour les informaticiens 6

Lectures complmentaires 8

Chapitre 2. Dcrire et valuer des algorithmes 11

Dcrire des algorithmes informatiques 11

Caractriser les temps dexcution 18

Invariants de boucle 22

Rcursion 23

Lectures complmentaires 25
Dunod Toute reproduction non autorise est un dlit.

Chapitre 3. Algorithmes de tri et de recherche 27

Recherche dichotomique 30

Tri par slection 34

Tri par insertion 37

Tri par fusion 41

Tri rapide 50

Rcapitulatif 58

Lectures complmentaires 61

III

9782100701513-Livre.indb 3 27/08/13 17:48


Algorithmes

Chapitre 4. Minorant pour le tri battre 63

Rgles pour le tri 63

Minorant pour le tri par comparaison 64

Dpasser le minorant avec le tri par dnombrement 65

Tri par base 71

Lectures complmentaires 73

Chapitre 5. Graphes orients acycliques 75

Graphes orients acyliques 78

Tri topologique 79

Reprsenter un graphe orient 82

Temps dexcution du tri topologique 84

Chemin critique dans un diagramme PERT 85

Plus court chemin dans un graphe orient acyclique 89

Lectures complmentaires 93

Chapitre 6. Plus courts chemins 95

Algorithme de Dijkstra 97

Algorithme de Bellman-Ford 106

Algorithme de Floyd-Warshall 111

Lectures complmentaires 118

Chapitre 7. Algorithmes sur les chanes de caractres 121

Plus longue sous-squence commune 122

Transformer une chane en une autre 127

Recherche de chane de caractres 135

Lectures complmentaires 142

Chapitre 8. Bases de la cryptographie 143

Chiffrement par simple substitution 144

Cryptographie cl symtrique 146

Cryptographie cl publique 149

IV

9782100701513-Livre.indb 4 27/08/13 17:48


Table des matires

Cryptosystme RSA 151

Cryptosystmes hybrides 160

Gnrer des nombres alatoires 160

Lectures complmentaires 161

Chapitre 9. Compression de donnes 163

Codages de Huffman 165

Tlcopieurs 171

Compression LZW 172

Lectures complmentaires 183

Chapitre 10. Complexit 185

Camions marron 185

Classes de complexit N et NP, et NP-compltude 189

Problmes de dcision et rductions 190

Un problme mre 194

chantillon de problmes NP-complets 195

Stratgies gnrales 211

Perspectives 214

Problmes indcidables 216

Conclusion 218

Lectures complmentaires 219


Dunod Toute reproduction non autorise est un dlit.

Bibliographie 220

Index 221

9782100701513-Livre.indb 5 27/08/13 17:48


Avant-propos

Comment les ordinateurs font-ils pour rsoudre des problmes? Comment


votre petit GPS parvient-il dterminer, parmi la multitude ditinraires
possibles, le chemin le plus rapide vers votre destination, et cela en quelques
secondes? Lors dun achat sur Internet, comment votre numro de carte
bancaire est-il protg contre quiconque lintercepterait? La rponse ces
questions, comme de nombreuses autres, tient dans les algorithmes. Ce
livre va vous dvoiler les mystres des algorithmes.
Je compte parmi les auteurs de louvrage Algorithmique. Si ce livre est
vraiment trs bien (peut-tre suis-je un tantinet partisan), il peut tre trop
technique sur certains points.
Celui-ci est diffrent. Ce nest pas un manuel pour tudiant classique.
Il naborde pas le domaine des algorithmes informatiques de faon gn-
rale ni dtaille. Il nenseigne pas de faon normative des techniques de
conception des algorithmes. Il ne propose au lecteur aucun problme ou
exercice.
Dans ce cas, quallez-vous y trouver?
Cet ouvrage sera un point de dpart si:
vous voulez comprendre comment les ordinateurs rsolvent des
problmes;
vous souhaitez savoir comment valuer la qualit de ces solutions;
vous aimeriez mettre en rapport les approches employes dans la
rsolution des problmes informatiques et le monde extrieur;
vous tes capable de lire des expressions mathmatiques finalement pas
si compliques;
vous navez pas ncessairement dj crit un programme informatique
(mais lavoir fait ne sera pas rdhibitoire).
Certains ouvrages qui traitent des algorithmes prennent une approche
conceptuelle, avec peu de dtails techniques. Dautres affichent une pr-
cision technique stupfiante. Dautres encore trouvent leur place entre
ces deux extrmes. Cest le cas de celui-ci. Oui vous y trouverez des l-
ments mathmatiques. Oui certains points seront abords avec une grande

VI

9782100701513-Livre.indb 6 27/08/13 17:48


Avant-propos

prcision. Cependant, je vais viter daller trop loin dans les dtails, except
peut-tre vers la fin de louvrage, l o jai un peu perdu le contrle.
Je vois ce livre comme lentre dun repas. Supposons que vous alliez au
restaurant et que vous commandiez lentre. Avant de commander la suite,
vous attendez quelle arrive et que vous la mangiez. Si vous ne laimez
pas, vous dcidez que le repas est termin. Peut-tre vous a-t-elle plu, mais
elle a suffi vous rassasier. Ou bien vous lavez apprcie, mais vous avez
encore faim et dcidez de passer la suite. En lisant cet ouvrage, je souhaite
que vous arriviez dans lun des deux derniers cas: vous tes satisfait mais
sans avoir envie daller plus loin dans le monde des algorithmes, ou vous
avez tellement apprci le contenu que vous souhaitez en apprendre plus.
Chaque chapitre se termine par une section intitule Lectures compl-
mentaires qui propose dautres ouvrages et articles relatifs au sujet trait.

Objectif du livre
Je ne suis pas en mesure de vous prciser ce que vous apprendrez en lisant
cet ouvrage. En revanche, voici ce que jai lintention de vous enseigner:
Ce que sont les algorithmes informatiques, une faon de les dcrire et
comment les valuer.
Des mthodes simples qui permettent de rechercher des informations
sur un ordinateur.
Des mthodes qui permettent de rorganiser les informations afin
quelles apparaissent dans lordre souhait (autrement dit les trier).
Comment rsoudre des problmes de base dont la modlisation infor-
matique se fait laide dune structure mathmatique appele graphe.
Parmi leurs nombreuses applications, les graphes conviennent parfaite-
ment la modlisation des rseaux routiers (quelles intersections mnent
dautres intersections par des chemins directs et quelles sont les lon-
gueurs de ces routes?), des dpendances entre des tches (quelle tche
Dunod Toute reproduction non autorise est un dlit.

doit venir avant les autres?), des relations financires (quels sont les taux
de change entre les diffrentes monnaies?) ou des interactions entre des
personnes (qui connat qui? qui naime pas qui? quel acteur apparat
dans un film, au ct de quel autre?).
Comment rsoudre des problmes qui posent des questions sur des
chanes de texte. Certains de ces problmes se rencontrent dans diff-
rents domaines, comme la biologie o les caractres reprsentent des
molcules de base et les chanes de caractres, une structure ADN.
Les principes de base de la cryptographie. Mme si vous navez jamais
chiffr un message vous-mme, il est probable que votre ordinateur lait
dj fait (par exemple lors de lachat de produits en ligne).
Les concepts fondamentaux de la compression de donnes.

VII

9782100701513-Livre.indb 7 27/08/13 17:48


Algorithmes

Comprendre que certains problmes sont difficiles rsoudre sur un


ordinateur en un temps raisonnable, ou, tout au moins, que personne ne
sait encore comment procder.

Prrequis
Je lai indiqu prcdemment, ce livre comprend du contenu mathma-
tique. Si cela vous effraie, vous pouvez essayer de sauter ces passages ou
de vous tourner vers un ouvrage moins technique. Toutefois, jai fait mon
possible pour que ce contenu reste accessible au plus rfractaire.
Je ne suppose pas que vous ayez dj crit ou mme lu un programme
informatique. Si vous tes capable de suivre des instructions donnes
sous forme dun plan, vous serez en mesure de comprendre la faon dont
jexprime les tapes qui constituent un algorithme. Si vous comprenez la
blague suivante, vous avez dj fait un grand pas:
Avez-vous dj entendu parler de cet informaticien qui tait rest
bloqu dans sa douche? Il se lavait les cheveux en suivant les ins-
tructions inscrites sur la bouteille de shampooing: savonnez,
rincez, recommencez.
Dans cet ouvrage, jemploie un style relativement informel en esprant
quune approche personnelle rendra le contenu plus accessible. Certains
chapitres se fondent sur les prcdents, mais les dpendances sont rares.
Quelques-uns dbutent de manire non technique, mais le deviennent pro-
gressivement. Si vous trouvez quun chapitre devient trop compliqu, vous
aurez probablement intrt lire au moins le dbut du suivant.

Erreurs
Si vous dcouvrez une erreur dans cet ouvrage, nhsitez pas men avertir
par courrier lectronique ladresse unlocked@mit.edu.

Remerciements
Je suis extrmement reconnaissant mes co-auteurs de louvrage Algorith-
mique, Charles Leiserson, Ron Rivest et Cliff Stein, car une grande partie
du prsent ouvrage se fonde sur son contenu. Vous constaterez que jy fais
souvent effrontment rfrence (comprendre que jen prends des extraits).
En rdigeant cet ouvrage seul, jai ralis combien la collaboration avec
Charles, Ron et Cliff pouvait me manquer. Je remercie galement toutes
les personnes mentionnes dans l'avant-propos du CLRS (sigle utilis dans

VIII

9782100701513-Livre.indb 8 27/08/13 17:48


Avant-propos

le monde entier pour dsigner louvrage Algorithmique, en rfrence aux


initiales de ses quatre auteurs).
Jai galement fait appel au contenu des cours que je donne Dartmouth,
notamment ceux intituls Computer Science 1, 5 et 25. Merci mes tu-
diants dont les questions pertinentes mont permis de connatre les
approches pdagogiques qui fonctionnent et dont les silences glaciaux ont
rvl celles viter.
La rdaction de ce livre a t suggre par Ada Brunstein, notre di-
trice chez MIT Press, pendant que nous prparions la troisime dition du
CLRS. Ada a depuis quitt la socit et a t remplace par Jim DeWolf.
lorigine cet ouvrage devait rejoindre la collection Essential Knowledge,
mais il a sembl trop technique (pouvez-vous imaginer cela, jai crit un
livre trop technique pour le MIT!). Jim a parfaitement gr cette situation
potentiellement dlicate en me permettant dcrire non pas louvrage ima-
gin lorigine par MIT Press mais celui que je souhaitais. Jai galement
apprci le soutien dEllen Faran et de Gita Devi Manaktala, toutes deux
uvrant chez MIT Press.
Julie Sussman stait charge de la rvision technique de la deuxime
et de la troisime dition du CLRS. Je suis vraiment ravi quelle ait pu
galement soccuper de celui-ci. Elle na rien laiss passer. Pour preuve,
voici une partie du message que Julie ma envoy propos dun premier
brouillon du Chapitre5:
Cher M. Cormen,
Les autorits ont apprhend un chapitre vad qui stait cach
dans votre livre. Nous ne sommes pas en mesure de dterminer de
quel ouvrage il stait chapp, mais nous ne pouvons pas imaginer
quil ait pu se glisser dans le vtre pendant autant de mois sans que
vous le sachiez. Nous navons donc pas dautre choix que de vous
tenir pour responsable. Nous esprons que vous vous chargerez de le
remanier et den faire un bon citoyen de votre livre. Vous trouverez
Dunod Toute reproduction non autorise est un dlit.

ci-joint le rapport rdig par lofficier qui a procd larrestation,


Julie Sussman.
Je ne suis pas un spcialiste de la cryptographie et le chapitre qui traite
de ses principes de base a normment bnfici des commentaires et des
suggestions de Ron Rivest, Sean Smith, Rachel Miller et Huijia Rachel Lin.
Une note de bas de page fait rfrence aux signes utiliss dans les matches
de base-ball. Je remercie Bob Whalen, lentraneur du club de Dartmouth,
pour mavoir patiemment expliqu certains des systmes employs. Ilana
Arbisser a vrifi que les spcialistes de bio-informatique alignent les
squences ADN de la manire dont je lexplique au Chapitre8. Travailler
au dpartement informatique du Dartmouth College, cest vraiment gnial.
Mes collgues sont brillants et fraternels, et notre quipe professionnelle

IX

9782100701513-Livre.indb 9 27/08/13 17:48


Algorithmes

est nulle autre pareille. Si vous recherchez un cours dinformatique de


niveau premier ou second cycle, ou si vous recherchez un poste en informa-
tique dans une universit amricaine, nhsitez pas contacter Dartmouth.
Merci enfin mon pouse, Nicole Cormen, mes parents, Renee et
Perry Cormen, ma sur, Jane Maslin, et aux parents de Nicole, Colette
et Paul Sage, pour leur amour et leur soutien. Mon pre est certain que le
dessin enpage 2 est non pas un S mais un 5.
Tom Cormen, Hanover,
New Hampshire, novembre2012

Note de lditeur
Nous remercions M. Christophe Picouleau, professeur au Cnam de
Paris, pour sa relecture critique de la traduction du chapitre 10 sur la
complexit.
Louvrage [CLRS09] auquel Thomas Cormen fait
souvent allusion dans cet ouvrage est son cours
de rfrence dont il existe une version franaise:
Algorithmique
Cours avec 957 exercices et 158problmes
T. H. Cormen, C. E. Leiserson, R. L. Rivest
et C. Stein,
3e dition, 1296 pages,
2010, Dunod.

9782100701513-Livre.indb 10 27/08/13 17:48


Introduction
aux algorithmes
1
Commenons par une question rcurrente: Quest-ce quun algo-
rithme?1
Une rponse gnrale pourrait tre un ensemble dtapes qui permet-
tent daccomplir une tche. Dans notre vie quotidienne, nous excutons de
nombreux algorithmes, par exemple lorsque nous nous brossons les dents:
ouvrir le tube dentifrice, prendre la brosse dents, dposer du dentifrice
sur la brosse, fermer le tube, placer la brosse dans la bouche, brosser les
dents verticalement pendant N secondes, etc. Pour nous rendre sur notre
lieu de travail, nous droulons galement un algorithme. Il en va ainsi pour
toutes les tches.
Cet ouvrage concerne toutefois des algorithmes qui sexcutent sur des
ordinateurs ou, de faon plus gnrale, sur des appareils informatiques. Tout
comme les algorithmes que nous droulons affectent votre vie quotidienne,
ceux qui sexcutent sur les ordinateurs affectent ceux-ci. Lorsque nous
utilisons notre GPS pour connatre litinraire vers notre destination, il ex-
cute un algorithme du plus court chemin pour la dterminer. Lorsque
nous achetons des produits sur Internet, nous utilisons (ou devrions utiliser)
un site web scuris qui met en place un algorithme de chiffrement. Ces
produits sont apports notre domicile par un service de livraison qui uti-
Dunod Toute reproduction non autorise est un dlit.

lise des algorithmes afin de rpartir les paquets dans les diffrents camions
et de dterminer lordre de passage chez les clients. Les algorithmes sont
partout: sur notre ordinateur portable, sur les serveurs, sur notre smart-
phone, sur les systmes embarqus (notre voiture, notre micro-onde ou
notre climatisation), etc.
Quelle est la diffrence entre un algorithme qui sexcute sur un ordina-
teur et un algorithme que nous droulons? Contrairement un ordinateur,
nous pouvons accepter que lalgorithme soit dcrit de faon peu prcise.

1. Ou comme le demanderait un collgue avec qui javais lhabitude de jouer au hockey:


Quest-ce quun nalgorithme?

9782100701513-Livre.indb 1 27/08/13 17:48


Chapitre 1 Introduction aux algorithmes

Par exemple, si nous prenons notre voiture pour nous rendre sur notre lieu
de travail, lalgorithme pourrait stipuler si la circulation est encombre,
changer de chemin. Nous saurons sans doute interprter mauvaise cir-
culation, pas un ordinateur.
Par consquent, un algorithme informatique est un ensemble dtapes qui
permettent daccomplir une tche et qui est dcrit de manire suffisamment
prcise pour quun ordinateur puisse lexcuter. Si vous avez dj crit des
programmes informatiques en Java, C, C++, Python, Fortran, Matlab ou
autres, vous savez ce que signifie prcision. Dans le cas contraire, vous le
dcouvrirez rapidement en tudiant les algorithmes tudis dans cet ouvrage.
Passons la question suivante: Quattendons-nous dun algorithme
informatique?
Les algorithmes informatiques rsolvent des problmes informatiques.
Nous en attendons deux choses: proposer une solution juste partir des
donnes dentre du problme et utiliser pour cela les ressources de calcul
de manire efficace. Examinons tour tour ces deux points.

Exactitude
Que signifie proposer une solution exacte un problme? En gn-
ral, nous sommes en mesure dindiquer prcisment en quoi consiste une
solution exacte. Par exemple, une solution juste donne par notre GPS
notre problme de recherche du meilleur trajet vers notre destination serait
la route qui, parmi toutes les possibilits existantes entre notre point de
dpart et notre point darrive, prend le moins de temps. Ou bien celle qui
correspond la plus courte distance. Ou bien celle qui prend le moins de
temps en vitant les pages. Bien entendu, les informations utilises par le
GPS pour dterminer litinraire peuvent ne pas correspondre la ralit.
moins quil ne soit capable daccder aux informations de trafic en temps
rel, il peut supposer que le temps de parcours est gal la distance divise
par les limitations de vitesse. Cependant, en cas dembouteillage, le GPS
pourrait donner un mauvais conseil si lobjectif tait le trajet le plus rapide.
Nanmoins, lalgorithme dtablissement de litinraire excut par le GPS
reste correct mme si les entres ne le sont pas. En effet, partir des infor-
mations fournies lalgorithme, il renvoie le chemin le plus rapide.
Dans le cas de certains problmes, il peut tre difficile, voire impos-
sible, dindiquer si un algorithme produit une solution exacte. Prenons
pour exemple un algorithme de reconnaissance de caractres. Limage de
116pixels suivante correspond-elle un 5 ou un S?

9782100701513-Livre.indb 2 27/08/13 17:48


Exactitude

Pour certaines personnes, il sagit dun 5, mais, pour dautres, dun S.


Dans ce cas, comment pouvons-nous dclarer que le rsultat donn par
lordinateur est exact ou non? Dans cet ouvrage, nous nous focalisons sur
les algorithmes qui produisent des solutions connaissables.
Nous pouvons parfois accepter quun algorithme informatique produise
une rponse incorrecte, tant que nous contrlons leur frquence. Le chif-
frement nous en donne un bon exemple. Le cryptosystme RSA trs utilis
dtermine si des nombres trs grands (vraiment trs grands, avec plusieurs
centaines de chiffres) sont premiers. Si vous avez dj crit un programme
informatique, vous serez probablement capable den dvelopper un qui
dtermine si le nombre n est premier. Il suffit de tester tous les diviseurs
potentiels, de 2 n - 1. Si lun deux est un diviseur de n, alors n est un
nombre compos. Dans le cas contraire, n est un nombre premier. Cepen-
dant, si n comprend plusieurs centaines de chiffres, les diviseurs potentiels
sont extrmement nombreux et, mme sur un ordinateur trs rapide, les
tests ne pourront pas se faire en un temps raisonnable. Nous pouvons vi-
demment procder quelques optimisations, comme supprimer tous les
nombres pairs aprs avoir dtermin que 2 nest pas un diviseur ou arrter
le test en arrivant n (en effet, si d est suprieur n et si d est un divi-
seur de n, alors n / d est infrieur n et est galement un diviseur de n;
par consquent, si n possde un diviseur, il aura t trouv avant darriver
n). Si n est constitu de centaines de chiffres, alors n en comprendra
environ moiti moins, mais cela reste encore un trs grand nombre. Voici
une bonne nouvelle: il existe un algorithme qui dtermine rapidement si
un nombre est premier. Voici la mauvaise nouvelle: il peut se tromper.
Plus prcisment, sil dclare que n est un nombre compos, alors cest
effectivement le cas. En revanche, sil dclare que n est premier, il existe
une possibilit que n soit en ralit compos. La mauvaise nouvelle ne lest
pourtant pas autant quon pourrait le penser: nous pouvons faire en sorte
que le taux derreur soit rellement faible, par exemple de lordre dune
sur 250 . Pour la plupart dentre nous, ce taux est suffisamment faible pour
Dunod Toute reproduction non autorise est un dlit.

que nous puissions employer dans RSA cette faon de dterminer si un


nombre est premier.
Pour une autre classe dalgorithmes, appels algorithmes dapproxima-
tion, lexactitude est un point plus dlicat. Ces algorithmes sappliquent
aux problmes doptimisation dans lesquels nous souhaitons obtenir la
meilleure solution en fonction dune certaine mesure quantitative. Trouver
litinraire le plus rapide, comme le fait un GPS, en est un exemple; dans
ce cas, la mesure quantitative est la dure du voyage. Pour certains pro-
blmes, aucun algorithme ne permet darriver une solution optimale en
un temps raisonnable, mais nous savons quun algorithme dapproximation
permet dobtenir, en un temps raisonnable, une solution quasi optimale.
En gnral, quasi optimale signifie que la mesure quantitative de la

9782100701513-Livre.indb 3 27/08/13 17:48


Chapitre 1 Introduction aux algorithmes

solution dtermine par lalgorithme dapproximation est loigne dun


facteur connu de la mesure quantitative de la solution optimale. Tant que
nous pouvons prciser ce facteur, nous pouvons dire quune solution cor-
recte fournie par lalgorithme dapproximation correspond toute solution
qui sloigne au plus de ce facteur de la solution optimale.

Utilisation des ressources


Dans le contexte dun algorithme, que signifie une utilisation efficace des
ressources de calcul? Dans notre prsentation des algorithmes dapproxi-
mation, nous avons fait allusion une mesure defficacit: le temps. Un
algorithme qui produit une solution correcte mais en prenant pour cela
beaucoup de temps aura probablement un intrt rduit, voire nul. Sil faut
une heure notre GPS pour dterminer le trajet, allons-nous vraiment nous
en servir? Le temps est ainsi la premire mesure defficacit utilise pour
valuer un algorithme, aprs que nous avons montr quil produit une solu-
tion exacte. Mais il existe dautres mesures. Nous pouvons tre concerns
par la quantit de mmoire ncessaire lexcution de lalgorithme (son
empreinte mmoire) car elle doit seffectuer dans lespace mmoire dis-
ponible. Voici dautres ressources dont un algorithme peut avoir besoin:
communication rseau, donnes alatoires (les algorithmes qui effectuent
des choix alatoires ont besoin dune source de nombres alatoires) ou
oprations disque (pour les algorithmes conus de faon manipuler des
donnes stockes sur le disque).
Dans cet ouvrage, comme dans la plupart des livres qui traitent des algo-
rithmes, nous nous focaliserons sur une seule ressource: le temps. Comment
pouvons-nous juger du temps requis par un algorithme? Contrairement
lexactitude, qui ne dpend pas de lordinateur sur lequel sexcute lalgo-
rithme, le temps dexcution rel dpend de plusieurs facteurs externes
lalgorithme lui-mme: la rapidit de lordinateur, le langage de program-
mation utilis pour sa mise en uvre, le compilateur ou linterprteur qui
traduit le programme en code excutable sur la machine, les comptences
du programmeur qui crit le programme et les autres activits qui ont lieu
sur lordinateur en mme temps que le programme. Par ailleurs, tout cela
suppose que lalgorithme sexcute sur un seul ordinateur et que toutes ses
donnes soient prsentes en mmoire.
Si nous valuons la rapidit dun algorithme en limplmentant laide
dun langage de programmation rel, en lexcutant sur un ordinateur prcis
avec des entres donnes et en mesurant le temps ncessaire son excu-
tion, nous ne savons pas quelle pourra tre sa rapidit avec des entres de
taille diffrente ou avec des entres diffrentes de mme taille. Par ailleurs,
si nous voulons comparer la vitesse de cet algorithme celle dun autre
algorithme pour le mme problme, nous devons les implmenter tous les

9782100701513-Livre.indb 4 27/08/13 17:48


Utilisation des ressources

deux et les excuter avec des entres diffrentes de diffrentes tailles. En


rsum, comment pouvons-nous valuer la rapidit dun algorithme?
La rponse se fonde sur une combinaison de deux ides. Premirement,
nous dterminons la dure dun algorithme en fonction de la taille de son
entre. Dans notre exemple de recherche ditinraire, lentre correspond
une reprsentation de la carte routire et la taille dpend du nombre din-
tersections et du nombre de routes qui les relient. (La taille physique du
rseau routier na pas dimportance car nous pouvons reprsenter toutes les
distances par des nombres, qui occupent tous la mme taille dans lentre;
la longueur dune route na pas dimpact sur la taille de lentre.) Dans un
exemple plus simple, comme dterminer si un lment prcis existe dans
une liste donne, la taille de lentre correspond au nombre dlments de
cette liste.
Deuximement, nous nous focalisons sur la manire dont la rapidit de
la fonction qui caractrise le temps dexcution augmente avec la taille de
lentrele taux de croissance du temps dexcution. Au Chapitre2, nous
donnerons les notations employes pour caractriser le temps dexcution
dun algorithme. Le point le plus intressant de notre approche est que nous
examinons uniquement le terme dominant du temps dexcution, sans tenir
compte des coefficients. Autrement dit, nous nous concentrons sur lordre
de grandeur du temps dexcution. Par exemple, supposons que nous
puissions dterminer quune certaine mise en uvre dun algorithme de
recherche dans une liste de n lments prend 50 n + 125 cycles processeur.
Le terme 50n domine le terme 125 ds que n devient suffisamment grand,
cest--dire lorsque n 3, et plus la liste est longue plus il est dominant.
Par consquent, dans la description du temps dexcution de cet algorithme
hypothtique, nous ne tenons pas compte du terme dordre infrieur 125.
Vous pourriez tre surpris dapprendre que le coefficient 50 ne nous int-
resse pas. Le temps dexcution est donc caractris par une croissance
linaire en fonction de la taille de lentre, cest--dire n. Prenons un autre
exemple, celui dun algorithme qui demande 20 n3 + 100 n 2 + 300 n + 200
Dunod Toute reproduction non autorise est un dlit.

cycles processeur. Son temps dexcution crot en fonction de n3. nou-


veau, les termes dordre infrieur100 n 2 , 300n et 200deviennent de
moins en moins significatifs au fur et mesure que la taille de lentre n
augmente.
Dans la pratique, les coefficients que nous ignorons ont une importance.
Toutefois, ils dpendent tellement de facteurs externes quil est possible
que, lors de la comparaison des algorithmes A et B ayant le mme ordre
de grandeur et sexcutant sur la mme machine, lalgorithme A soit plus
rapide que lalgorithme B pour une certaine combinaison de machine, de
langage de programmation, de compilateur/interprteur et de program-
meur, alors quavec une autre combinaison B soit plus rapide que A. Bien
entendu, si les deux algorithmes A et B produisent des solutions exactes et

9782100701513-Livre.indb 5 27/08/13 17:48


Chapitre 1 Introduction aux algorithmes

si A sexcute toujours deux fois plus rapidement que B, alors, toutes choses
tant gales par ailleurs, nous choisirons A la place de B. Cependant,
du point de vue de la comparaison abstraite des algorithmes, nous nous
intressons lordre de grandeur, en oubliant les coefficients et les termes
dordre infrieur.
La rponse la dernire question de ce chapitre, Pourquoi sintresser
aux algorithmes informatiques?, dpend de qui vous tes.

Algorithmes pour les non-informaticiens


Mme si vous ne vous considrez pas comme un informaticien, les algo-
rithmes informatiques vous concernent. En effet, moins que vous ne
partiez laventure dans une contre sauvage sans un GPS, vous les utili-
sez probablement quotidiennement. Avez-vous effectu une recherche sur
Internet aujourdhui? Le moteur de recherche que vous avez utilis, quil
sagisse de Google, de Bing ou dun autre, se fonde sur des algorithmes
complexes pour parcourir le Web et dcider de lordre dans lequel prsenter
les rsultats. Avez-vous conduit votre voiture aujourdhui? moins quil
sagisse dun vhicule de collection, son ordinateur de bord a ralis des
millions de choix au cours de votre dplacement, tous dtermins par des
algorithmes. Je pourrais citer de nombreux autres exemples.
En tant quutilisateur final des algorithmes, vous vous devez den savoir
un peu plus sur leur conception, leur caractrisation et leur valuation.
Je suppose que cela vous intresse au moins un minimum, car vous avez
achet cet ouvrage et lavez lu jusqu ces lignes. Voyons si nous pouvons
vous en donner plus afin que vous puissiez participer aux conversations
lors de votre prochain cocktail si jamais les algorithmes venaient en tre
le sujet1.

Algorithmes pour les informaticiens


Si vous tes informaticien, il est prfrable que vous vous intressiez de
prs aux algorithmes informatiques. Ils sont non seulement au cur de tout
ce qui se trouve dans lordinateur, mais ils constituent galement autant une
technologie que tous ces composants. Vous pouvez acheter un ordinateur
au prix fort, avec le dernier et le plus puissant des processeurs, mais vous

1. Je sais parfaitement que, moins de rsider dans la Silicon Valley, il est peu probable
que les algorithmes soient un sujet dbattu lors des cocktails auxquels vous participez.
Cependant, quelle quen soit la raison, nous, professeurs dinformatique, pensons quil
est important que nos tudiants ne nous mettent pas dans lembarras en raison dun
manque de connaissances dans certains domaines de linformatique.

9782100701513-Livre.indb 6 27/08/13 17:48

Você também pode gostar