Université Paris Diderot – Paris 7 Algorithmique
L3 Informatique Année 2009-2010, 1er semestre
Borne inférieure sur la complexité du tri d’un tableau
Soit Aun algorithme de tri d’un tableau Tqui repose uniquement sur des comparaisons d’éléments du
tableau entre eux. On souhaite montrer qu’un tel algorithme effectue dans le pire cas au moins n(log2n2)
comparaisons, où nest la taille du tableau T.
Exercice 1 [Permutations]
1. Supposons que pour trier des tableaux de néléments distincts parmi {1, . . . , n}, tout algorithme
effectue au moins n(log2n2) comparaisons dans le pire cas. Justifier alors que tout algorithme
pour trier des tableaux quelconques de néléments effectue au moins n(log2n2) comparaisons
dans le pire cas.
2. En déduire que pour montrer notre borne inférieure, on peut se restreindre au cas des tableaux
dont les néléments sont distincts et appartiennent à {1, . . . , n}.
Ainsi, dans toute la suite, Tdésignera un tableau à néléments distincts de l’ensemble {1, . . . , n}.
Exercice 2 [Arbre des comparaisons]
On représente le fonctionnement de l’algorithme Apar un arbre binaire comme suit. Cet arbre repré-
sente uniquement les comparaisons et pas les éventuelles modifications apportées au tableau au cours de
l’algorithme. Il est appelé arbre des comparaisons de l’algorithme A.
Lorsque Acompare deux éléments T[i]et T[j], il y a deux situations possibles selon le tableau T: soit
T[i]< T [j], soit T[i]> T [j]. On représentera cette situation par un branchement dans l’arbre : le fils
gauche correspond à la situation T[i]< T [j], c’est-à-dire qu’il s’agit des tableaux pour lesquels T[i]< T [j]
à cette étape de l’algorithme, tandis que le fils droit correspond à la situation T[i]> T [j], c’est-à-dire
qu’il s’agit des tableaux pour lesquels T[i]> T [j]à cette étape de l’algorithme. Dans chacun des deux
sous-arbres, l’algorithme continue les comparaisons (et les éventuelles permutations d’éléments) jusqu’à
ce que le tableau soit trié.
Par exemple, pour trier un tableau à trois éléments, le tri par sélection trouve d’abord le maximum du
tableau, c’est-à-dire qu’il compare d’abord T[1] et T[2] ; si T[1] < T [2], il compare ensuite T[2] et T[3],
sinon il compare T[1] et T[3] ; il place le maximum à la fin du tableau (opération non représentée dans
l’arbre) ; et pour terminer il compare T[1] et T[2]. L’arbre des comparaisons du tri par sélection pour un
tableau de taille 3 est donc le suivant :
T[1] < T [2]?
T[2] < T [3]?
T[1] < T [2]?
• •
T[1] < T [2]?
• •
T[1] < T [3]?
T[1] < T [2]?
• •
T[1] < T [2]?
• •
1
Question 1.
1. Donner l’arbre des comparaisons pour le tri par insertion pour les tableaux de taille 2 et 3. Décrire
l’arbre pour un tableau de taille quelconque.
2. Faire de même pour le tri à bulles.
On se place maintenant dans le cadre général d’un algorithme Aquelconque pour trier un tableau.
Question 2.
1. Justifier que l’exécution de l’algorithme Asur un tableau donné correspond à une branche dans
l’arbre des comparaisons de A.
2. Réciproquement, est-ce que chaque branche correspond réellement à l’exécution de l’algorithme sur
un tableau particulier, ou bien existe-t-il des branches qui ne seront jamais empruntées ?
3. Montrer que les exécutions de l’algorithme sur deux tableaux distincts correspondent à deux
branches distinctes.
4. Ainsi, chaque feuille correspond à l’exécution de l’algorithme sur au plus un tableau ; dans ce cas, on
étiquettera la feuille par ce tableau. Étiqueter de cette façon les feuilles des arbres de comparaisons
de la question 1.
5. Justifier qu’on peut élaguer l’arbre de sorte à supprimer les feuilles non étiquetées.
Exercice 3 [Déroulement d’un algorithme]
1. Justifier que tous les tableaux possibles doivent se retrouver aux feuilles de l’arbre.
2. Justifier que la hauteur de l’arbre correspond au nombre de comparaisons effectuées par l’algorithme
dans le pire cas.
3. Combien de feuilles un arbre de hauteur hpossède-t-il au maximum ?
4. Combien de feuilles l’arbre élagué de l’algorithme Acontient-il pour les tableaux de taille n?
5. En utilisant la formule de Stirling
n!n
en2πn,
en déduire la borne inférieure mentionnée au début du problème.
Exercice 4 [Un tri linéaire ?]
1. Proposer un algorithme fonctionnant en O(k+n)pour trier un tableau de nentiers (pas forcément
distincts) compris entre 1 et k.
2. Que dire de la complexité de cet algorithme lorsque kn?
3. Est-ce en contradiction avec la borne inférieure que l’on vient de montrer?
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !