Académique Documents
Professionnel Documents
Culture Documents
Algorithmique et programmation 3
TD 2 : Correction, terminaison et complexité (1h20)
FinFonction
(a) Démontrer que ce code est correct, c’est à dire qu’il renvoie bien pgcd(m, n).
(b) Démontrer que cet algorithme termine. Pour ce faire, on pourra démontrer au préalable
que la propriété 0 < bi+1 < bi est vérifiée pour toute itération i de la boucle while, où bi
dénote la valeur de b au début de la iième itération ou à la fin de la (i − 1)ième itération.
2. On dispose d’un programme qui peut résoudre un problème de taille maximale M en une
minute. On planifie l’achat d’un nouveau microprocesseur 100 plus rapide que le précédent.
Avec ce microprocesseur, le programme pourra résoudre en 1 minute des problèmes de taille
plus grande. Quelle sera la nouvelle taille maximale si le nombre d’opérations effectuées par
l’algorithme est n, 2n, 3n, n2 , n4 , 2n ?
3. Donner, en fonction de m et n, le nombre d’itérations de la boucle tant que dans chacun des
algorithmes suivants (on supposera que m ≥ 1 et n ≥ 1) :
(a)
Variables m, n, i, j : Entiers
saisir(m, n)
i ← 1; j ← 1;
Tant Que i ≤ m Et j ≤ n
i ← i + 1
j ← j + 1
FinTantQue
(b)
Variables m, n, i, j : Entiers
saisir(m, n)
i ← 1; j ← 1;
Tant Que j 6= n
Si i 6= m Alors
i ← i + 1
Sinon
j ← j + 1
FinSi
FinTantQue
(c)
Variables m, n, i, j : Entiers
saisir(m, n)
i ← 1; j ← 1;
Tant Que j ≤ n
Si i ≤ m Alors
i ← i + 1
Sinon
j ← j + 1
i ← 1
FinSi
FinTantQue
4. Dans le TD précédent, on avait écrit une fonction echangerMinPartiel, que l’on avait utilisée
dans une fonction qui permettait de trier un tableau. Le pseudo-code ci-dessous est une solu-
tion possible pour cet exercice :
FinFonction
Fonction triSelection(In-Out Variable t : Tableau d’Entier) :
Pour i allant de 1 à taille(t)-1 par pas de 1
echangerMinPartiel(t, i)
FinPour
FinFonction
FinFonction
U = O( A + B) et A = O( B) ⇒ U = O( B).
(a) Calculer les valeurs de la variable m ainsi que leurs écritures en base 2 au cours des
itérations, pour les entrées (4, 1), puis pour les entrées (7, 1).
(b) Si l’écriture binaire de la première entrée contient p bits, exprimer le coût temporel en
fonction de p, dans le meilleur et dans le pire des cas.
(c) Pour prouver rigoureusement le point précédent, prouver un invariant de boucle dans le
meilleur et dans le pire des cas encadrant le nombre de bits dans l’écriture binaire de la
variable m en fonction du numéro de l’itération.
(d) En déduire la complexité de l’algorithme de la multiplication égyptienne.