Académique Documents
Professionnel Documents
Culture Documents
Cours 2
Performances algorithme
1 Critres de performances
Plusieurs critres peuvent tre utiliss pour quantifier les performances d'un algorithme :
- terminaison (il se termine),
- correction (il permet d'obtenir le rsultat attendu),
- complexit (rapidit d'excution ou espace mmoire ncessaire).
Preuve
Il s'agit en gnral de faire une preuve par rcurrence (preuve de terminaison ou de correction):
- l'algorithme vrifie une proprit avec les valeurs initiales,
- si l'algorithme vrifie la proprit la
itration alors on montre qu'il la vrifi galement la
( + 1) itration,
- le rsultat renvoy, au final, par l'algorithme vrifie la proprit.
En informatique, il est peu frquent de prouver mathmatiquement qu'un algorithme renvoie bien le
rsultat attendu ou se termine effectivement .
Certaines applications de scurit pour lesquelles aucun bug ne peut tre envisag sont prouves
mathmatiquement.
Exemple : le logiciel de vol de airbus A380 a t entirement prouv.
2 Terminaison
On souhaite gnralement qu'un algorithme se termine sauf s'il s'agit de l'algorithme d'un systme
devant fonctionner jusqu' sa mise hors tension (programme interne d'une carte d'acquisition par
exemple).
Pour un algorithme rcurrent ou pour une boucle conditionnelle while, la bonne pratique est de faire en
sorte que l'indice d'appel soit toujours infrieur l'indice en cours et de traiter la valeur initiale.
Page 1 sur 5
TSI2
Informatique
Cours 2
Performances algorithme
PREUVE DE TERMINAISON
Idalement lors d'oprations rptitives, on utilise un variant
jusqu' tre nul.
Exemple :
# Entre :
un tableau T de n nombres tris par ordre croissant T[0..n-1]
#
un nombre x
# Sortie :
un tableau T de nombres tris par ordre croissant T[0..n] contenant x
T=[ 0 , 1.5 , 1.7 , 2] # valeur initiale de la table T
x=1.6
# nombre insrer T
i= len(T)-1
# i est affect du numro de dernier indice de T
T=T+ [ x ]
# on ajoute un lment la liste T (par dfaut x est suppos le plus grand)
while (T[i] > x and i > 0) :
T[i+1] T[i]
T[i]=x
i i-1
print ( 'Nouvelle liste trie :', T)
i est un variant de boucle : entier positif et qui dcroit chaque boucle jusqu' la valeur 0
(sauf si x est effectivement le plus grand lment, dans ce dernier cas les instructions de
la boucle while ne sont jamais excutes).
Dans les cas simples, la preuve de terminaison peut-tre obtenue mais cela n'est pas toujours le cas.
Contre-exemple : la suite de Syracuse
La dfinition de la suite est assez simple et semble en pratique se terminer mais cela n'a pas
encore t prouv mathmatiquement.
3 Correction
La correction consiste prouver que l'algorithme renvoie bien le rsultat attendu.
PREUVE :
Mathmatiquement on peut prouver si une algorithme dlivre bien le rsultat attendu partir d'un
invariant de boucle :
- proprit vraie lors de l'initialisation,
- proprit vraie pour la valeur du variant de boucle suivante si elle est vraie pour la prcdente,
- proprit vraie en fin de boucle et qui montre que le rsultat est bien celui attendu.
L'invariant de boucle est souvent difficile trouver.
Exemple : l'invariant de boucle de l'algorithme prcdent est :
la juxtaposition des tableaux T[0, i] et T[i+ 2, n+1] est gale au tableau initial et x est plus petit
que tous les lments du deuxime tableau.
Solution pratique pour vrifier que l'algorithme donne les rsultats attendus : tester avec des valeurs
particulires (mais ce n'est pas une preuve).
Exemple : -1, 1.6 puis 3 permettraient de vrifier que l'algorithme classe correctement les valeurs.
Lyce Jules Ferry Cannes
Page 2 sur 5
TSI2
Informatique
Cours 2
Performances algorithme
4 Complexit
4.1 Complexit dans le temps
La complexit dans le temps est le temps que prend l'excution d'un algorithme.
Cette complexit est trs variable d'une machine l'autre.
La complexit est donc exprime en nombres
effectuer pour calculer la valeur de la suite au rang n.
avec
2.
Dfinition itrative
def u(n):
r=2
for k in range(n):
r=0.5*(r + 3.0/r)
return(r)
Complexit : C(n)=3*n
Dfinition rcursive :
def u(n):
if (n==0):
return(2)
else:
x=u(n-1)
return( 0.5 * ( x + 3.0/x ) )
TSI2
Informatique
Cours 2
Performances algorithme
Figure 1 : Ordre de grandeur du temps d'excution d'un algorithme selon sa complexit (source Wikipedia)
Ressources :
Damien Broizat
Patrick Beynet UPSTIhttps://www.u-picardie.fr/~furst/docs/4-Complexite.pdf
https://fr.wikipedia.org/wiki/Analyse_de_la_complexit%C3%A9_des_algorithmes
http://www.enseignement.polytechnique.fr/profs/informatique/Francois.Morain/ TC/ X2004/Poly/www-poly009.html
Page 4 sur 5
TSI2
Informatique
Cours 2
Performances algorithme
Complexit exponentielle
Relation : C(n) = a.C(n-1) + b, a 1 (suite arithmtico-gomtrique)
#
#
(0)
Solution : ( ) $
+
= ($ )
Exemples :
rptition a fois d'un traitement sur le rsultat de l'appel rcursif
Lyce Jules Ferry Cannes
Page 5 sur 5
TSI2