précédent | suivant | table des matières

Complexité : Algorithme d’Euclide

by 1950, the word algorithm was most frequently associated with  "Euclid’s algorithm" "
Donald Knuth
The art of computer programming tome 1

L’algorithme d’Euclide pour calculer le plus grand commun diviseur de deux nombres entiers est le suivant :  

int pgcd ( int a, int b){
 if(b==0) return a ;
 else return pgcd(b, a%b);
}

L’analyse de l’algorithme n’est pas simple, en effet le nombre d’appels de la fonction va dépendre des valeurs de a et b. on peut cependant au moins affirmer que tous les deux appels le nombre a diminue au moins de moitié : 

Si a>b, alors a%b<a/2. Deux cas se présentent :

Le nombre d’appels de la fonction est donc majoré par les termes de la récurrence : 

dont la solution est

 

En fait , le cas le pire se produit lorsque a et b sont deux nombres de Fibonacci successifs et , et dans ce cas le nombre d’appels est exactement n. On en déduit que dans le pire des cas le nombre d’appels est au maximum de .

L’évaluation en moyenne est malheureusement très compliquée, et nous donne un nombre d’appels

<

haut de la page