Licence 2 - I4b Exercice 1. Les B-arbres Exercice 2. Structure de

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
Ord(v[1]) mod 14 mod 7 Ord(v[1]) + 26 (lg 1) mod 14 mod 7
arbousier 97
aulne
baobab
c`
edre
chˆ
ataignier
chˆ
ene
cypr`
es
eucalyptus
figuier
m´
el`
eze
peuplier
pin
platane
1. On consid`
ere tout d’abord des zones d’une unit´
e num´
erot´
ees de 0`
aNbZ = 13 ainsi que la fonction de
hachage suivante :
F1(valeur) = Ord(v[1])M od(N bZ + 1)
Ord(c)est la fonction qui retourne la valeur ASCII du caract`
ere pass´
e en param`
etre. Mod est la fonction
modulo. La fonction F1fait correspondre `
a chaque valeur de la cl´
e le reste de la division enti`
ere de la
valeur ASCII de la premi`
ere lettre de la cl´
e avec le nombre de zones.
2. Les zones ont deux unit´
es (de 0`
aNbZ = 6). Utilisez la mˆ
eme fonction de hachage que celle de la question
pr´
ec´
edente.
3. Avec des zones d’une unit´
e, on consid`
ere la fonction de hachage suivante :
F1(valeur) = (Ord(v[1]) + 26 ×(longueur(v)1))M od(N bZ + 1)
4. On utilise maintenant F2avec des zones de 2 unit´
es.
5. Dans chaque cas, calculer le nombre de d´
ebordement. Qu’en pensez vous ? Pourquoi le fonction F2fait-
elle intervenir 26 ?
6. Reprendre la derni`
ere question de l’exercice pr´
ec´
edent.
Eric Leclercq — http://ludique.u-bourgogne.fr/˜leclercq — D´
epartement IEM — http://ufrsciencestech.u-bourgogne.fr 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 !