TD4 : tas et tris1. - Laboratoire d`Informatique Fondamentale de

publicité
Université d’Aix-Marseille
Algorithmique
L2 Informatique et Mathématiques - 2016/2017
TD4 : tas et tris 1.
Exercice 1 Écrivez l’algorithme CheckMaxHeap(T, n) qui vérifie que les n premières
cases du tableau t forment un tasmax. Quelle est la complexité de votre algorithme ?
Exercice 2 Un tas est donné par les n premiers éléments d’un tableau T .
1. Écrivez l’algorithme InsertVal(T, n, v) qui insère une valeur v dans un tasmax T
de n éléments (on suppose que le tableau est suffisamment grand).
2. Écrivez l’algorithme SupprimeNoeud(T, n, i) qui supprime le nœud i dans le tasmax T de n éléments.
Dans les deux cas, le tas résultant est un tasmax.
Exercice 3 Si l’on utilise l’algorithme InsertVal de l’exercice précédent pour construire
un tasmax de n éléments, quel est la complexité de l’algorithme ? Est-ce optimal ?
Exercice 4 Étant donnés k tableaux triés T1 , . . . , Tk contenant au total n éléments,
écrivez un algorithme en O(n log k) permettant de les fusionner en un unique tableau trié.
Exercice 5 Décrivez un algorithme de complexité O(n+k) qui prend en entrée un tableau
T comprenant n entiers compris entre 0 et k et qui pré-traite T de manière à pouvoir
répondre à n’importe quelle requête du type Combien le tableau T a t-il d’éléments dans
l’intervalle [a, b] ? en temps O(1).
Exercice 6 Montrez comment trier n entiers compris entre 0 et n2 − 1 en temps O(n).
Exercice 7 On dispose de n récipients rouges et n récipients bleus. Les récipients rouges
ont tous des volumes différents, et pour chaque récipient rouge, il y en a un bleu de même
volume (et vice versa !). L’objectif est de retrouver toutes les paires de récipients de même
volume. La seule opération possible est : choisir une paire de récipients de couleur différente,
remplir l’un et verser dans l’autre. Cela revient à les comparer. Cette opération prend une
unité de temps. On ne peut pas comparer directement des récipients de même couleur.
1. Trouvez un algorithme en Θ(n2 ) qui résoud le problème.
2. Trouvez un algorithme randomisé qui résoud le problème en O(n log n) en moyenne.
1. La plupart de ces exercices proviennent de Introduction to Algorithms, de T. H. Cormen, C. E.
Leiserson, R. L. Rivest, C. Stein.
1
Téléchargement