Algorithmique TD 02 : Borne minimale sur les tris 1 Arbres de

publicité
Sup’Galilée
INFO1 S1– Année 2014–2015
Algorithmique
TD 02 : Borne minimale sur les tris
1
Arbres de tri
Un arbre de tri de rang n permet de représenter un algorithme de tri de n valeurs x1 , . . . , xn . Il s’agit
d’un arbre binaire (chaque nœud interne a exactement deux enfants) vérifiant les propriétés suivantes :
– Chaque nœud interne est étiqueté par une comparaison entre deux des entrées (xi < xj ?).
– Le fils gauche d’un nœud interne correspond au cas où le test est vrai, le fils droit au cas où le test
est faux.
– Chaque feuille est étiquetée par une permutation des valeurs d’entrées, ordonnées de manière à ce
que les résultats des tests le long du chemin pour arriver à la feuille soit cohérents. C’est-à-dire que
si dans la permutation xi est avant xj alors le chemin pour arriver à la feuille prend soit la branche
gauche d’un test xi < xj ?, soit la branche droite d’un test xj < xi ?.
1/Dessiner un arbre de tri de rang 2. C’est-à-dire permettant de faire les bons tests pour trier 2 valeurs
x1 et x2 .
2/dessiner un arbre de tri de rang 3.
3/Dessiner l’arbre de tri de rang 4 correspondant à l’algorithme de tri par sélection. Remarque : les
déplacements d’éléments dans le tableau ne sont pas représentés sur l’arbre de tri. Remarque bis :
L’arbre doit avoir une profondeur de 6 (±1). Prévoir de la place. . .
4/À quoi peut-on voir que l’algorithme de tri par sélection n’est pas optimal ? (2 réponses)
2
Analyse des arbres de tri
5/Soit un arbre binaire (quelconque) de profondeur k. Combien a-t-il de feuilles au maximum ?
6/Soit un arbre binaire avec N feuilles. Quelle est sa profondeur minimale ?
7/Combien de feuilles un arbre de tri de rang n a-t-il au minimum ?
8/Quel est le nombre minimum de comparaisons que doit effectuer un algorithme de tri dans le pire des
cas ? (plus faible complexité au pire que puisse avoir un algorithme de tri)
Le problème du tri est l’un des très rares exemples où on arrive à calculer une borne inférieure à la
complexité au pire, c’est-à-dire à prouver l’optimalité de certains algorithmes.
Remarque : On peut aussi s’amuser à dessiner les arbres de tri (de petit rang) correspondant aux
autres algorithmes de tri. Pour le tri rapide, on doit avoir un arbre assez déséquilibré, avec des longues
branches pour le pire des cas mais un grand nombre de branches courtes (de sorte que la moyenne soit
faible). Pour le tri fusion, toutes les branches devraient avoir presque la même longueur et il ne devrait
y avoir peu (voire pas ?) de redondance dans l’arbre.
Remarque : Vous trouverez sur mon compte au sercal, dans le répertoire
~jean-yves.moyen/Enseignement/Algo/tris/, une implémentation en C des tris “de base” vus en cours
ou TD, à l’aide de tableaux et à l’aide de listes.
1
Téléchargement