
b) Faire tourner à la main la fonction PGCD pour les entiers 72 et 84. On prendra soin de noter
les valeurs successives des variables pgcd,p1,p2ainsi que la valeur du test de la boucle tant que.
72 = 2 3
3 2 avec T aille1= 3 et 84 = 2 3 7
2 1 1 avec T aille2= 3
Instruction p1p2p1≤T aille1p2≤T aille2test bouble tant que m pgcd
1,2,3 1 1 vrai vrai vrai 1
4 1 1 vrai vrai vrai 1
6 1 1 vrai vrai vrai 2 1
7 1 1 vrai vrai vrai 2 4
8,9 2 2 vrai vrai vrai 2 4
4 2 2 vrai vrai vrai 2 4
6 2 2 vrai vrai vrai 1 4
7 2 2 vrai vrai vrai 1 12
8,9 3 3 f aux f aux vrai 1 12
4 3 3 f aux f aux vrai 1 12
17 3 3 f aux f aux vrai 112
c) Prouver que la fonction PGCD se termine en un temps fini.
L’algorithme se termine dès lors que la boucle tant que s’exécute en un temps fini. Or, le test de
cette boucle (p1≤T aille1) et (p2≤T aille2) devient faux dès lors que (p1> T aille1) ou que
(p2> T aille2). De plus, lors de chaque itération, au moins une des deux variables p1ou p2
est incrémentée d’une unité. Comme ces deux variables sont initialisées à 1, et que T aille1et
T aille2ont une valeur finie, l’algorithme s’exécutera en un nombre fini d’itérations. Le bloc
d’instruction contenu dans la boucle s’exécutant en un temps fini, l’algorithme se terminera
en un temps fini.
d) Déterminer la complexité de la fonction PGCD
.
Supposons que l’on dispose d’un algorithme Puissance(n1, n2: entiers)→nn2
1qui
s’exécute en O(1). Alors la structure conditionnelle <si T1[p1,1] = T2[p2,1]>s’effectue en
O(1) (puisque le test booléen et les 2 blocs d’instructions apparaissant dans la structure condi-
tionnelle sont en O(1)). Donc le corps de la boucle tant que s’exécute en O(1).
Le calcul de la complexité revient à déterminer le nombre d’itérations de la boucle tant que. or
dans le pire cas, lors de chaque itération, seule une des deux variables p1ou p2est incrémentée
d’une unité et on exécute alors T aille1+T aille2itérations. L’algorithme PGCD est alors en
O(T aille1+T aille2)
Exercice 2 : On considère deux matrices carrées (d’entiers) d’ordre n,Aet B. Le produit de Apar
Best une matrice carrée Cd’ordre ndéfinie par ci,j =Pn
k=1 ai,kbk,j .
Donner un algorithme PROD(A,B) calculant le produit de deux matrices représentées sous forme
d’un tableau à deux dimensions. Calculer la complexité de cet algorithme. Doit-on préciser dans quels
cas (pire cas, meilleur des cas, cas moyen) cette complexité est obtenue?
2