Exemple 1
On cherche à analyser le programme qui cherche l’indice du plus petit élément d’une portion d’un tableau.
Algorithme
indice_min = i Pour j allant de i+1 à n faire Si T[j] < T[indice_min] alors indice_min = j Fin Si Fin Pour
But Evaluer le temps d’exécution du programme pour des données de taille . Pour le faire, il faut compter le nombre d’instructions effectuées dans l’algorithme. Les instructions basiques sont séparées en deux parties de base :
Découpage en nombre d’instructions de base de l’algorithme
1 aff 1 aff comp aff Si comp aff si est minimal (le cas le plus favorable) aff si les sont classés de façon décroissante (le cas le plus défavorable) aff dans le cas moyen
Somme des instructions aff aff comp aff comp aff aff comp
Si aff comp
Le temps d’exécution est fonction [1]
Dans la pratique, il est difficile de quantifier le temps que prend un ordinateur pour faire une affectation ou une comparaison, c’est pourquoi, dans une optique de simplification, on ne fera pas de différence entre les deux, une étape [2] regroupe les instructions d’affectation et de comparaison.
On pose comp = aff
et obtient
En prenant E = 1 unité de temps, on exprime en fonction de n :
Conclusion
Pour i allant de 1 à n-1 faire indice_min = i Pour j allant de i+1 à n faire Si T[j] < T[indice_min] alors indice_min = j Fin Si Fin Pour Tmp = T[i] T[i] = T[indice_min] T[indice_min] = Tmp Fin Pour
Evaluation du nombre d’étapes de l’algorithme On évalue le nombre d’étapes de l’algorithme E = aff = comp :
si
On à donc pour la première itération :
On à donc pour la deuxième itération :
On a donc pour la (n-1) ème itération :
Au final il y a au total :
Si on néglige on peut dire que
Si unité de temps alors :
Et donc si est grand,
On peut dire que :
Calcul du nombre d’étapes exécutées par l’algorithme en ne tenant compte que de l’étape élémentaire
à n
Nombre total d’exécution de l’opération élémentaire :
fois
Si unité de temps, Si est grand, on à
Définition de la complexité d’un algorithme
Soit un algorithme et une donnée d’entrée de . On appelle complexité de pour le nombre de fois que l’opération élémentaire est exécutée lors de l’exécution de sur .
[1] Dans le cas où [2] Une étape vaut une unité de temps [3] Instruction qui est exécutée le plus souvent dans le programme