• Aucun résultat trouvé

TP 6 : Arbres tournois, files de priorité

N/A
N/A
Protected

Academic year: 2022

Partager "TP 6 : Arbres tournois, files de priorité"

Copied!
2
0
0

Texte intégral

(1)

TP 6 : Arbres tournois, files de priorité

Judicaël Courant

5 juin 2017

Le but de ce TP est d’écrire une implantation de files de priorités efficace. On verra qu’on peut donner une implantation fonctionnelle dont les opérations principales sont enO(logn).

1 Arbres tournois

Vous écrirez toutes les fonctions demandées dans un fichier que vous appellereztournoi.ml.

On définit un type des arbres binaires étiquetés comme suit :

t y p e ’ a a r b r e =

| V i d e

| N o e u d of int * ’ a a r b r e * ’ a * ’ a a r b r e

;;

Remarquons que chaque noeud, en plus d’être étiqueté par un élément de type ’a, est décoré par un entier. Par la suite, on dira qu’un arbre est bien décoré si chaque sous-arbre non-vide de celui-ci est décoré par sa propre hauteur. Par la suite, on ne manipulera que des arbres bien décorés.

Question 1 Écrire une fonctionhauteur : ’a arbre -> intretournant la hauteur d’un arbre bien décoré. Cette fonction devra avoir une complexité en tempsO(1).

Question 2 Écrire une fonctionnoeud : ’a arbre -> ’a -> ’a arbretelle que sigetdsont deux arbres bien décorés, (noeud x d) retourne l’arbre bien décoré de fils gauche g et de fils droit d, étiqueté parx.

On dit qu’un arbre bien décoré est unarbre tournoi si pour chacun de ses sous-arbres, l’étiquette maximale des nœuds du sous-arbre est à la racine de ce sous-arbre. Cette condition est équivalente au fait que pour tout nœud de l’arbre initial autre que la racine, l’étiquette du père de ce nœud est supérieure ou égale à celle de ce nœud.

Question 3 Écrire une fonction max_tournoi : ’a arbre -> ’a retournant l’étiquette maximale d’un arbre tournoi non-vide.

Question 4 Écrire une fonction noeud_tournoi : ’a arbre -> ’a -> ’a arbre -> ’a arbre telle que pour tous arbres tournois a1 et a2 et toute étiquette x, (noeud_tournoi a1 x a2) retourne un arbre tournoi ayant les mêmes étiquettes et la même forme1 que l’arbre(noeud a1 x a2) (qui n’est pas nécessairement tournoi). Cette fonction devra travailler en tempsO(max(h1, h2))dans le cas le pire, oùhi est la hauteur de ai pour i= 1,2.

cbaCette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.

1. On dira que deux arbres ont même forme si, lorsqu’on remplace dans chacun toutes les étiquettes par une même valeur, par exemple0, on obtient deux arbres égaux.

1

(2)

Option informatique MPSI La Martinière Monplaisir 2016-2017

Dans le cas le meilleur, cette fonction devra travailler en tempsO(1). Ce devra notamment être le cas non seulement lorsque les étiquettes dea1 et de a2 sont toutes inférieures ou égales à x mais aussi lorsque toutes sauf une le sont.

Question 5 Écrire une fonction remplace_racine : ’a arbre -> ’a -> ’a arbre telle que pour tout arbre tournoianon-vide de racine étiquetée par une valeuryet toute valeurx,(remplace_racinea x) retourne un arbre tournoi ayant la même forme queaet pour ensemble d’étiquettes celui dea, privé dey, auquel on a ajoutéx.

Cette fonction devra s’exécuter en temps O(h(a))dans le cas le pire.

On dira qu’un arbre est un arbre AVL, si pour tout sous-arbre non-vide a, de fils a1 eta2, on a

|h(a1)−h(a2)| ≤1.

Question 6 Montrer que pour tout arbre AVL a, on a |a| ≥ Fh(a) où (Fn)n∈N est la suite de Fibonacci (F0= 0,F1 = 1 et ∀n∈N Fn+2 =Fn+Fn+1).

Question 7 En déduire que pour tout arbre AVL, h(a) =O(log|a|).

Question 8 Écrire une fonction insere_elem : ’a arbre -> ’a -> ’a arbre telle que pour tout arbre tournoi AVL aet toute étiquettex, (insere_elem x a) retourne un arbre tournoi AVL dont les étiquettes sont celles de aplus x et de hauteur h(a) ou h(a) + 1.

Cette fonction devra s’exécuter en temps O(loga).

Question 9 Écrire une fonction enleve_elem : ’a arbre -> ’a * ’a arbre telle que pour tout arbre tournoi AVL a non-vide (enleve_elem a) retourne un couple (x, a0) où x est une étiquette dea et a0 est un arbre tournoi AVL de hauteur h(a) ou h(a−1) ayant pour ensemble d’étiquettes celui deaprivé de x.

Cette fonction devra s’exécuter en temps O(loga).

Indication : on pourra prendre pourx l’étiquette d’un nœud de profondeur maximale.

Question 10 Écrire une fonction enleve_elem_max : ’a arbre -> ’a arbre prenant en argument un arbre tournoi AVLanon vide et retournant un arbre tournoi AVLa0 dont l’ensemble d’étiquettes est celui dea privé de son maximum. Cette fonction devra s’exécuter en tempsO(loga).

2 Implantation des files de priorité

Vous trouverez sur le site de la classe (https://frama.link/oi1a1617) une archive zip. Celle-ci contient une implantation d’un tri à l’aide d’une file de priorité.

Question 11 Télécharger l’archive zip sus-mentionnée et l’ouvrir. Suivre les instructions contenues dans le fichier LISEZMOI.txt

Question 12 Combien de temps l’exécution du programme essai demande-t-elle sur votre machine ? Question 13 Quelle est la complexité théorique du tri avec cette implantation des files de priorité ?

Question 14 Changer l’implantation des files de priorité : recopier votre fichier tournoi.ml dans le répertoire à la place du fichier fourni puis remplacer le contenu de filesprio.ml par une im- plantation utilisant votre module tournoi.

Question 15 Quelle est la complexité théorique du tri avec cette implantation des files de priorité ?

Question 16 En pratique, après l’avoir compilé, quel temps d’exécution obtenez-vous pour le pro- grammeessai? Comparer avec la version naïve.

2

Références

Documents relatifs

[r]

Etape 2 : différencier le son [a] parmi des mots contenant tous la lettre "a" mais elle ne fait pas toujours le son [a]..

Compétence: Reconnaître des mots écrits dans des systèmes graphiques différents Reconnaître un mot dans une phrase.. ARBRE

Un petit arbre pleure Dans l'heure du soir, Un petit arbre pleure J'ai peine à le voir!. Il est

[r]

Consid´erons un syst`eme physique de deux particules (1) et (2), de mˆeme masse m, n’interagissant pas entre elles et plac´ees toutes les deux dans un puit de potentiel infini

[r]

D'abord, la réalisation du figuier, même la plus juste possible, ne vous donne pas for- cément la prio uve que l'enfant connaît main- tenant beaucoup nliiEIUX..