Licence 2 - I4b
Semaine du 01/04 au 06/04/2007
TD 5 •Organisation interne des fichiers
Exercice 1. Les B-arbres
On consid`
ere une famille particuli`
ere de B-arbre : les B-arbres binaires. Dans un cadre g´
en´
eral, un arbre
binaire est une structure dans laquelle chaque nœud comporte une valeur et deux pointeurs ou r´
ef´
erences vers
deux fils : le fils gauche et le fils droit. Un nœud qui n’a pa de fils est une feuille (les r´
ef´
erences qui d´
esignent ses
fils sont vides). L’objectif de ce TD est d’identifier les propri´
et´
es des B-arbres, sur l’exemple des arbres binaires,
qui favorisent la rapidit´
e des recherches dans le contenu d’un fichier.
Par convention, dans le cas d’utilisation d’arbres binaires, pour un nœud donn´
e, on range tous les ´
el´
ements
plus petits que la valeur du nœud `
a gauche et tous ´
el´
ements les plus grands `
a droite. Ce principe est appliqu´
e
recursivement `
a tous les nœuds de l’arbre.
Pour ranger une nouvelle valeur dans l’arbre, on applique le principe suivant (exprim´
e sous la forme d’un
algorithme r´
ecursif) :
Pour ranger un ´
el´
ement e dans un arbre B
Si B est vide
On cr´
ee une nouvelle feuille f dont le corps est e
et B devient cette feuille
Sinon
Si Valeur(e) < Valeur(Racine(B))
Ranger e dans le sous-arbre gauche de B
Sinon
Ranger e dans le sous-arbre droit de B
fin
1. Construire l’arbre binaire permettant de ranger les ´
el´
ements suivants (ins´
er´
es dans l’ordre de la liste) :
chˆ
ene, baobab, m´
el`
eze, arbousier, aulne, chˆ
ataingnier, c`
edre, eucalyptus, cypr`
es, figuier, pin, platane,
peuplier.
2. Construire l’arbre binaire, selon la mˆ
eme technique que celle adopt´
ee pr´
ec´
edement, permettant de ranger
les ´
el´
ements suivants (ins´
er´
es dans l’ordre de la liste) : arbousier, platane, aulne, pin, baobab, peuplier,
c`
edre, m´
el`
eze, chˆ
ataignier, figuier, chˆ
ene, eucaluptus, cypr`
es.
3. ´
Ecrivez en pseudo-code l’algorithme qui permet de rechercher un ´
el´
ement dans l’arbre `
a partir de la
valeur de sa cl´
e. Prendre exemple sur l’algorithme donn´
e plus haut.
4. Comment obtenir une liste tri´
ee des valeurs contenues dans l’arbre ?
5. D´
eterminer un crit`
ere permettant de mesurer la qualit´
e d’une recherche par l’algorithme pr´
ec´
edent. Com-
parer la qualit´
e des recherches dans le cas le plus d´
efavorable pour les arbres que vous avez construits
dans les questions 1 et 2.
6. Combien d’´
el´
ements peut-on stocker dans B-arbre binaire complet ?
7. Proposer une m´
ethode pour construire un arbre ´
equilibr´
e avec l’hypoth`
ese que toutes les donn´
ees sont
connues au d´
epart. Comment faire si cette hypoth`
ese est abandonn´
ee ?
8. On souhaite, en plus des noms d’arbres, enregistrer le nom latin, une description textuelle ainsi qu’une
photographie. Sachant que les recherches de font essentiellement sur le nom commun ou le nom latin.
Proposer, dans ce cas, une structure de donn´
ees permettant le stockage et l’indexation en vue d’optimiser
des recherches.
Exercice 2. Structure de hachage (hash-coding)
On dispose d’une m´
emoire (tableau) de 14 unit´
es. Chaque unit´
e peut contenir un chaˆ
ıne de caract`
eres de
longueur 80 (par cons´
equent un nom d’abre). On veut modifier l’organisation de cette m´
emoire pour en faire
une m´
emoire `
a acc`
es al´
eatoire en la d´
ecoupant en zones de tailles fixes.
On suppose que les d´
ebordements, lorsqu’une zone est pleine, s’effectuent toujours dans la premi`
ere zone
vide suivant la zone satur´
ee.
Dans les questions suivantes, vous devez ranger successivement, dans la m´
emoire, chacun des noms d’arbre
de l’exercice pr´
ec´
edent pris dans l’ordre alphab´
etique.
Eric Leclercq — http://ludique.u-bourgogne.fr/˜leclercq — D´
epartement IEM — http://ufrsciencestech.u-bourgogne.fr 1