2.2. COMPLEXIT ´
E DES ALGORITHMES 11
(a) Prouvez la correction de l’algorithme par r´ecurrence sur le nombre
d’´el´ements du tableau.
2.2 Complexit´e des algorithmes
En plus d’ˆetre correct, c’est-`a-dire d’e↵ectuer le calcul attendu, on de-
mande `a un algorithme d’ˆetre efficace, l’efficacit´e ´etant mesur´ee par le temps
que prend l’ex´ecution de l’algorithme ou plus g´en´eralement, par les quan-
tit´es de ressources n´ecessaires `a son ex´ecution (temps d’ex´ecution, espace
m´emoire, bande passante, . . . ).
Le temps d’ex´ecution d’un algorithme d´epend ´evidemment de la taille
des donn´ees fournies en entr´ee, ne serait-ce que parce qu’il faut les lire avant
de les traiter. La taille d’une donn´ee est mesur´ee par le nombre de bits
n´ecessaires `a sa repr´esentation en machine. Cette mesure ne d´epend pas du
mat´eriel sur lequel l’algorithme sera programm´e.
Mais comment mesurer le temps d’ex´ecution d’un algorithme puisque
les temps de calcul de deux impl´ementations du mˆeme algorithme sur deux
machines di↵´e r e n t e s p e u v e n t ˆe t r e t r `e s d i ↵´erents ? En fait, quelle que soit la
machine sur laquelle un algorithme est impl´ement´e, le temps de calcul du
programme correspondant est ´egal au nombre d’op´erations ´el´ementaires ef-
fectu´ees par l’algorithme, `a un facteur multiplicatif constant pr`es,etce,
quelle que soit la taille des donn´ees d’entr´ee de l’algorithme. Par op´erations
´el´ementaires on entend les ´evaluations d’expressions, les a↵ectations, et plus
g´en´eralement tous les traitements en temps constant ou ind´ependant de l’al-
gorithme (entr´ees-sorties, . . . ). Le d´etail de l’ex´ecution de ces op´erations au
niveau du processeur par l’interm´ediaire d’instructions machine donnerait
des r´esultats identiques `a un facteur constant pr`es.
Autrement dit, pour toute machine M, il existe des constantes met M
telles que pour tout algorithme Aet pour toute donn´ee dfournie en entr´ee de
l’algorithme, si l’on note T(d) le nombre d’op´erations ´el´ementaires e↵ectu´ees
par l’algorithme avec la donn´ee den entr´ee et TM(d) le temps de calcul du
programme impl´ementant Aavec la donn´ee den entr´ee,
mT (d)TM(d)MT(d).
Soit, en utilisant les notations de Landau (voir section 8.2),
T=⇥(TM).
On peut donc d´efinir la complexit´e en temps d’un algorithme comme le
nombre d’op´erations ´el´ementaires T(n)e↵ectu´ees lors de son ex´ecution sur
des donn´ees de taille n. Il s’agit donc d’une fonction. On distingue