Algorithmique & Programmation, période 1
Alternants première année 2015 – 2016
Durée : 3 heures.
Documents : tous documents papier autorisés.
Le barème est indicatif, sur 20 points. Les deux exercices sont indépendants.
La rédaction de vos réponses devra contenir des commentaires et des explications pertinentes.
Merci d’utiliser la syntaxe introduite en cours pour écrire le code.
Tableaux binomiaux (10 points)
Soit Tun tableau trié d’entiers, de taille net de capacité K >> n. Autrement dit, Ta été alloué avec Kcases
mémoire, mais seulement les npremières sont remplies.
On note k=blog2(n+ 1)c+ 1, où bxcdésigne la partie entière inférieure de x. On note également {ni, i =
0. . . k −1}les bits de la décomposition en base 2de n. On a donc n=
k−1
X
i=0
ni2i, et ∀i∈[0, k −1], ni= 0 ou 1.
Question 1 (0.5 point). Rappeler le coût en pire cas, en nombre de comparaisons, de la recherche d’un élément
dans T. Quel est le coût en pire cas de l’insertion d’un élément ?
L’objectif de l’exercice est d’utiliser une autre structure de données, qui permettra une insertion avec un coût
plus faible, sans trop perdre pour la recherche si possible. Pour cela, on va stocker les néléments de Tdans
kplus petits tableaux T0, . . . , Tk−1. Pour tout i, le tableau Tiest de taille 2isi ni= 1. Il est vide (c’est-à-dire
n’existe pas) si ni= 0. Comme T, chaque tableau Tiest trié. Cependant, il n’y a pas d’ordre entre deux tableaux.
Exemple : pour un T=[1234567891011], une solution possible est constituée de T0= [5],T1= [3 9],T2
vide et T3=[1246781011].
Question 2 (0.5 point) Donner une solution {T0, . . . , Tk−1}pour T=[123456789101112].
Question 3 (2 points) Ecrire un algorithme de recherche d’un élément dans l’ensemble T={T0, . . . , Tk−1}.
On suppose que cet ensemble Test représenté par une liste doublement chaînée de pointeurs vers les tableaux
Ti.
Question 4 (1 point) Donner le coût en pire cas (toujours en nombre de comparaisons) de votre algorithme.
Question 5 (0.5 point) Expliquer ce qui se passe pour les niquand on incrémente nde 1.
Question 6 (2 points) En déduire un algorithme d’insertion d’un élément dans T. Ecrivez-le avec soin.
Question 7 (0.5 point) Soit Taet Tbdeux tableaux triés de tailles respectives aet b. Donner le coût en pire cas
de la création d’un tableau trié de taille a+bcontenant tous les éléments de Taet de Tb.
Question 8 (0.5 point) En déduire le coût en pire cas de l’algorithme d’insertion.
On va maintenant s’intéresser au coût amorti de cet algorithme.
Question 9 (1 point) Pour ivariant de 0à7, donner le coût exact de l’insertion d’un élément dans un ensemble
Tde taille i.
Question 10 (1.5 point) En déduire le coût total d’insertion de méléments dans un ensemble Tinitialement
vide, avec mune puissance de 2:m= 2j. En déduire le coût amorti de l’algorithme d’insertion.
1