
Universit´e de Provence
Master GSI 2004-2005
Algorithmique. TD1
Recherches squentielles
1. Donner les algorithmes de recherche s´equentielle d’un ´el´ement xdans une liste d’´el´ements de
mˆeme type dans chacun des cas suivants:
•L’ordre des ´el´ements est quelconque
•La liste est ordonn´ee.
•On utilise une sentinelle.
2. Evaluer en fonction du nombre d’´el´ements de la liste le nombre de comparaisons n´ecessit´ees
par chacune des recherches ci-dessus, dans le pire des cas et en moyenne. Que peut-on dire
des ordres de grandeur asymptotiques?
Fusion
Donner l’algorithme de fusion de deux tableaux tri´es. Estimer, en fonction de la taille des tableaux,
le comportement asymptotique de l’algorithme.
Sin x
1. Donner un algorithme de calcul de sin(x) `a l’aide de la formule :
sin(3x) = 3 sin(x)−4sin3(x)
et en approximant sin(x) par xau voisinage de 0 (donner une solution r´ecursive et it´erative).
2. Prouver la correction de ces deux algorithmes.
3. Calculer leur complexit´e.
Puissance ´egyptienne
On se propose de comparer deux algorithmes calculant la puissance ni`eme d’un nombre r´eel x.
L’algorithme 1 consiste `a faire une multiplication de nfacteurs ´egaux `a x.
L’algorithme 2 repose sur le fait que pour tout entier nstrictement positif:
(R)xn= (x2)n/2si n est pair
xn=x.xn−1si n est impair
1. Ecrire l’algorithme 1.
2. Donner une version r´ecursive de l’algorithme 2 reposant sur les relations (R).
3. Donner une version it´erative de l’algorithme 2 et prouver sa correction.
On se propose maintenant de comparer l’efficacit´e de ces trois versions. Pour les complexit´es
en temps, la taille de la donn´ee est mesur´ee par le nombre net les op´erations fondamentales
sont les divisions et les multiplications.
4. Comparer l’encombrement m´emoire de l’algorithme 1 et des deux versions de l’algorithme 2.
5. Calculer la complexit´e en temps de l’algorithme 1.
6. Montrer, sans chercher `a les calculer, que les complexit´es en temps des deux versions de
l’algorithme 2 sont identiques.
7. Evaluer le comportement asymptotique de la complexit´e en temps de l’algorithme 2.
Coefficients binˆomiaux
Pour tout couple d’entiers (n,p) tels que 0 ≤p≤n, on note Cp
nle nombre de combinaisons `a p
´el´ements dans un ensemble `a n´el´ements. Ces nombres Cp
nsont aussi appel´es coefficients binˆomiaux
car ils interviennent dans la formule du binˆome. On rappelle les formules suivantes qui permettent
de calculer tout coefficient binˆomial:
(F)Cn
n= 1 et C0
n= 1
Cp
n=Cp−1
n−1+Cp
n−1pour tout couple (n, p) tel que 1 ≤p≤(n−1)
On se propose d’´ecrire de deux mani`eres diff´erentes un algorithme qui ´etant donn´es deux nombres
entiers pet nsuppos´es valides, calcule le nombre Cp
n.
1. Donner l’algorithme r´ecursif induit par les formules (F).
2. On note t(n, p) le nombre d’additions n´ecessaires au calcul de Cp
npar la m´ethode pr´ec´edente
(les d´ecr´ementations d’indices ne seront pas compt´ees comme additions: seules seront prises
en compte les sommes de coefficients binˆomiaux). Montrer que t(n, p) = Cp
n−1. En
d´eduire, pour un entier ndonn´e, le nombre moyen pour 0 ≤p≤n, d’additions n´ecessaires
au calcul de Cp
n.
3. Cet algorithme est-il efficace? Pouvait-on s’en douter? Justifier.
On peut aussi utiliser les formules (F) pour donner un algorithme it´eratif. On emploie
pour cela la m´ethode du triangle de Pascal: c’est une matrice dont les lignes et les colonnes
sont num´erot´ees `a partir de 0 et dans laquelle Cp
nse trouve `a l’intersection de la ligne num´ero
net de la colonne num´ero p. Cette matrice est triangulaire inf´erieure puisque p≤n. De plus
toute ligne de la matrice peut-ˆetre d´eduite de la ligne pr´ec´edente et des formules (F).
4. Donner les six premi`eres lignes du triangle de Pascal.
5. Donner un algorithme it´eratif pour calculer Cp
n.