TP 7

Arbres de recherche et dictionnaire

0. Quelques recommandations

Le but du TP est de construire un dictionnaire grâce à un arbre de recherche. On va définir une classe Dico permettant de stocker un ensemble de mots et de tester si un mot donné est dans cet ensemble.

Exercice 1. Arbre

Dans un arbre de recherche, les éléments sont stockés dans les noeuds d'un arbre binaire vérifiant toujours la propriété suivante :

1.1 Noeud

Construire une classe Noeud, maillon de base pour construire les arbres décrits ci-dessus.

Une solution.

1.2 Dico en arbre

Construire une classe Dico qui contient un arbre binaire de recherche pour stocker des mots. L'arbre est originellement vide.

Ajouter les méthodes suivantes dans la classe Dico :

Ces deux dernières méthodes devront conserver la propriété d'ordre sur les éléments de l'arbre.

Une solution.

Exercice 2. Analyse

La recherche d'un mot dans le dictionnaire prend O(h)h est la hauteur de l'arbre. Idéalement, h=log2nn est le nombre de mots dans l'arbre.

On veut analyser la hauteur des arbres obtenus sur un jeu de dictionnaires tests.

2.1 Hauteur

Ajouter une méthode static int hauteur (Dico d) permettant de calculer la hauteur de l'arbre d'un dictionnaire. Ajouter une méthode static int taille (Dico d) permettant de calculer le nombre de mots d'un dictionnaire.

Une solution.

2.2 Tests

Construire la courbe donnant h en fonction de log2n obtenue pour les fichiers suivants :
~viennot/dicos/francais.3court (30 mots)
~viennot/dicos/francais.3      (347 mots)
~viennot/dicos/francais.4      (979 mots)
~viennot/dicos/francais.5      (2181 mots)
~viennot/dicos/francais.6      (4017 mots)
...
et ~viennot/dicos/francais.tout   (47509 mots)
On pourra se servir du programme LireDicos.java en exécutant java LireDicos ~viennot/dicos/francais.[1-9]* et java LireDicos ~viennot/dicos/francais.tout. Dessiner ensuite à la main la courbe obtenue.

Courbes solution.

Exercice 3. Que pensez vous de l'énoncé ?

Un petit sondage pour améliorer l'énoncé (cliquer sur "Terminer" quand vous avez fini), vous pouvez aussi poser des questions dans les commentaires. Indiquez pour l'exercice 3 ce que vous pensez de l'énoncé dans son ensemble. Vous pouvez consulter vos réponses aux sondages précédents ainsi que des réponses à vos commentaires.

Exercice 1

Difficulté :
Intérêt :
Ce que vous avez fait :
Commentaire :

Exercice 2

Difficulté :
Intérêt :
Ce que vous avez fait :
Commentaire :

Exercice 3

Difficulté :
Intérêt :
Ce que vous avez fait :
Commentaire :

Plus d'exercices

Modifier les classes Noeud et Dico pour que l'arbre du dictionnaire soit toujours équilibré selon le fonctionnement des arbres AVL. Comparer les hauteurs d'arbre obtenues sur les fichiers tests de 2.2.

Question subsidiaire : écrire une méthode pour supprimer un mot du dictionnaire.

Une solution.


Last modified: Tue Jan 7 16:45:17 CET 2003