123
Structures de données IFT-2000 Abder Alikacem Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département d’informatique et de génie logiciel Édition septembre 2009 ! +

Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Embed Size (px)

Citation preview

Page 1: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Structures de donnéesIFT-2000

Abder AlikacemAbder Alikacem

Semaine 11, 1ère partieLes B-arbres

Département d’informatique et de génie logiciel

Édition septembre 2009

! +

Page 2: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Plan

• Les arbres B• Les arbres B+

Page 3: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Retour aux arbres binairesInsertion :

• par une feuille• feuille après feuille• toutes les racines sont fixées trop tôt

Page 4: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 8 9 12

Idée :

• avoir un tampon (tableau)

• 2 types de gestion• nœuds plus grands (tableau)

• choisir la bonne racine (plus stable)

Page 5: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 8 9 12

Page 6: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 8 9 12

Page 7: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 8 9 12

Page 8: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 9 12

8

Page 9: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 9 12

8

Page 10: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

3 6 9 12

8

3 6 9 12

Page 11: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

8

3 6 9 12

Page 12: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

8

3 6 9 12

Page 13: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

8

3 6 9 12

Page 14: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

8

3 6 9 12

Page 15: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbre-B d’ordre m

définition :• la racine a au moins 2 enfants à moins que ce ne soit une

feuille• aucun nœud n’a plus de m enfants• tous les nœuds, sauf la racine et les feuilles, ont au moins

m/2 enfants• toutes les feuilles apparaissent au même niveau• tout nœud qui a k enfants a k-1 éléments

3  6   8  10 12p0 p1 p2 p3 p4

e1 e2 e3 e4

Page 16: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

8 15   

 3  6     9 12    16  20   

Arbres-B : recherche

p0 si x < e1

pi si ei < x < ei+1

pm-1 si em-1 < x

3  6  8 10  p0 p1 p2 p3 p4

e1 e2 e3 e4

Page 17: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Utilisation d’arbres-B

• + indirection vers les données

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

Page 18: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbre-B d’ordre m

• Outils pour la gestion d’un fichier binaire• Nœud typique & en-tête du fichier index (B-arbre)• La mécanique de la construction d’un B-Arbre• La procédure de la subdivision d’un nœud

3  6   8  10 p0 p1 p2 p3 p4

e1 e2 e3 e4

Page 19: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

struct BTPAGE{

short keycount; /* Le compteur de clefs. Indique quand le noeud est plein.

*/

struct uneCle key [MAXKEYS]; /* Le tableau des clef. */

short CHILD[MAXKEYS+1]; /* Le tableau qui contiendra les fils pointés */

};

Structure typique d’un arbre-B

Page 20: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

Ajout dans un arbre-B d’ordre 5

Page 21: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

20

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

Ajout dans un arbre-B d’ordre 5

Page 22: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

20 40

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

Ajout dans un arbre-B d’ordre 5

Page 23: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

10 20 40

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

Ajout dans un arbre-B d’ordre 5

Page 24: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40

Ajout dans un arbre-B d’ordre 5

Page 25: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 15 20 30 40

Ajout dans un arbre-B d’ordre 5

Page 26: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 15 20 30 40

Ajout dans un arbre-B d’ordre 5

Page 27: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

10  15 30  40   

Ajout dans un arbre-B d’ordre 5

Page 28: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

10  15 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 29: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

7 10  15 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 30: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

7 10  15 26 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 31: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

7 10  15 18 26 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 32: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

7 10 15 18 22 26 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 33: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20   

7 10 15 18 22 26 30  35 40   

Ajout dans un arbre-B d’ordre 5

Page 34: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20 30   

7 10 15 18 35 40   22 26  

Ajout dans un arbre-B d’ordre 5

Page 35: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

20 30   

5 7 10  15 18 35 40   22 26  

Ajout dans un arbre-B d’ordre 5

Page 36: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

     20 30   

35 40    5 7 10  15 18 22 26  

Ajout dans un arbre-B d’ordre 5

Page 37: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40    5 7 22 26  15 18  

Ajout dans un arbre-B d’ordre 5

Page 38: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40 42    5 7 22 26  15 18  

Ajout dans un arbre-B d’ordre 5

Page 39: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40 42    5 7 22 26  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 40: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40 42 46    5 7 22 26  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 41: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40 42 46    5 7 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 42: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

35 40 42 46    5 7 8 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 43: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

32 35 40 42 46    5 7 8 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 44: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30   

32 35 40 42 46    5 7 8 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 45: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

32 35 42 46    5 7 8 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 46: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

32 35 38 42 46    5 7 8 22 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 47: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

32 35 38 42 46    5 7 8 22 24 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 48: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

32 35 38 42 45 46    5 7 8 22 24 26 27  13 15 18  

Ajout dans un arbre-B d’ordre 5

Page 49: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

5 7 8 22 24 25 26 27  32 35 3813 15 18   42 45 46   

Ajout dans un arbre-B d’ordre 5

Page 50: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

5 7 8 22 24 25 26 27   32 35 3813 15 18   42 45 46   

Ajout dans un arbre-B d’ordre 5

Page 51: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 30 40   

5 7 8 22 24 25 26 27   32 35 3813 15 18   42 45 46   

Ajout dans un arbre-B d’ordre 5

Page 52: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 25 30 40   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

Ajout dans un arbre-B d’ordre 5

Page 53: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 25 30 40   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

Ajout dans un arbre-B d’ordre 5

Page 54: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20 25   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

30 40   

Ajout dans un arbre-B d’ordre 5

Page 55: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

Ajout dans un arbre-B d’ordre 5

Page 56: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

+: 20,40,10,30,15,35,7,26,18,22,5,42,13,46,27,8,32,38,24,45,25

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

Ajout dans un arbre-B d’ordre 5

Page 57: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B

Implantation

• Un B-arbre est une structure de données externe.• On parle de fichier index• Il s’agit d’un fichier binaire (ou structuré)

Page 58: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Les fichiers binaires

Principe

- un fichier est une séquence d'octets non interprétés

Interprétation des données binaires

- à la charge du programmeur - une séquence de n octets peut s'interpréter comme: un entier, un tableau, un enregistrement, ... Les outils

• Déclaration d’un pointeur de fichier• Ouverture et fermeture• Les différents modes d’ouverture• Lecture et écriture• Principe du numéro d’ordre relatif (rrn)• Accès direct..

Page 59: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Les fichiers binaires

#include <fstream>#include <iostream>

//3 classes:ifstream: pour lire dans des fichiersofstream: pour écrire dans des fichiersfstream: pour lire et écrire dans des fichiers

fstream f;f.open("toto.txt", ios::in|ios::out);

mode d'ouverture: ios::in // ouverture en lectureios::out // ouverture en écritureios::app // ajout en fin de fichierios::ate // se position à la finios:: binary // mode binaireios::trunc // tronque le fichier à 0

fstream

Page 60: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Accès direct avec fseek..()

f.seekg (rrn*sizeof(Personne), ios_base::beg)

déplacement par rapport à origine

ios_base::begdébut de f

ios_base::curposition courante

Ios_base::endfin de f

struct Personne {

int age; char nom[40];

};

Personne p; fstream f;…

• Ecriture dans le fichier f.open(nomFich, ios::in|ios::out)f.write (reinterpret_cast<char*>&p, sizeof(Personne));

• Lecture du fichier f.read (reinterpret_cast<char*>&p, sizeof(Personne));

• f.tellg(); //retourne Position courante du pointeur dans le fichier, en nombre d'octets

• Accès direct pour lire ou écrire:

Page 61: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Organisations et modes d’accès des fichiers 

Mode d’organisation

Séquentiel Relatif ou direct Séquentiel indexé

Mode d’accès

séquentiel

Mode d’accès direct

Hashing

Mode d’accès séquentiel

Mode d’accès indexé

Page 62: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbre-B d’ordre m

Exemple et algorithme d’insertion détaillé (B-arbre d’ordre 3)

I, K, A, Z, M, B, W, L, C, J, O

3  6  8 10 p0 p1 p2 p3 p4

e1 e2 e3 e4

Page 63: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

struct BTPAGE{

short keycount; /* Le compteur de clefs. Indique quand le noeud est plein.

*/

struct uneCle key [MAXKEYS]; /* Le tableau des clef. */

short CHILD[MAXKEYS+1]; /* Le tableau qui contiendra les fils pointés */

};

Structure typique d’un arbre-B

Page 64: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

/* --------------------------------------------------------*//*

**** Driver.cpp ****

Le "pilote" pour la création et la manipulation d’arbres-B.Crée ou ouvre un fichier arbre-B.

Obtient la clef suivante et appelle la fonction insert pour l'insérer dans l'arbre. Au besoin, driver peut créer une nouvelle racine pour l'arbre.*/

Ajout dans un B-arbre

File StructuresMichael J. Folk and all.

Page 65: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Ajout dans un B-arbre

template <typename T>void BTree:: driver(){ ……

/* ouverture du fichier index*/if btOpen() root = getRoot();else { btfd.open("btree.dat", ios::binary|ios::out|

ios::in);key = getClef(); /*première clé*/root = createRoot(key, NIL, NIL);

}

key = getClef(); /*une clé à insérer*/do{ promoted = insert(root, key, &promoRrn, &promoKey); if (promoted) root = bt.createRoot(promoKey, root,

promoRrn);key = getClef();

} while( /*il y a une clé*/ );

}

Page 66: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

/* **** insert.cpp ****

Contient la fonction insert() qui insère une clef dans un arbre-B. S'appelle de manière récursive tant que le bas de l'arbre n'est pas atteint. Alors, insert() insère une clef dans une feuille de l ’arbre. Si le noeud est plein,

- appelle split() pour scinder le noeud- promouvoit la clef du milieu et le rrn du nouveau nœudet essaie d’insérer la clé promue lors de ses remontées

d’appel*//*

insert()Arguments:rrn: Le rrn de la page dans laquelle on fait l'insertion*promoRchild: Le fils promu vers le prochain niveaukey: La clef à être insérée*promoKey: La clef promue vers le prochain niveau

*/

Page 67: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

insert (short rrn, T key, short *promoRchild, clef *promoKey){ ….

if (rrn == NIL) { *promoKey = key;

*promoRchild = NIL; return (VRAI);

}btread(rrn, &page);found = searchNode(key, page, &pos);if (found) {

printf("Erreur: clé dupliquée);return (FAUX);

}promoted = insert(page.child[pos], key, &pBrrn, &pBkey);if (!promoted) return (FAUX); if (page.keycount < MAXKEYS)

{insInPage( pBkey, pBrrn, &page); btWrite(rrn, page); return (FAUX);

}else { split( pBkey, pBrrn, &page, promoKey, promoRchild,

&newPage);btwrite(rrn, page);btwrite(*promoRchild, newPage); return (VRAI);

}}

Page 68: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

8 15   

3  6    9 12    16 20   

Arbres-B : recherche

p0 si x < e1

pi si ei < x < ei+1

pm-1 si em-1 < x

3  6  8 10  p0 p1 p2 p3 p4

e1 e2 e3 e4

Page 69: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

RECHERCHE (RRN, CL, TROUV_RRN, TROUV_POS)si RRN == NIL alors /* condition d'arrêt de la récursion */

retourner NON TROUVEsinon

lire page RRN dans PAGE regarder à travers la PAGE pour trouver CLmettre POS égale à la position où KEY apparaît ou devrait apparaître. si CL est trouvé alors /* RRN contient la clef */

TROUV_RRN = RRNTROUV_POS = POS retourner TROUVE

sinon /* le FILS suivant fait référence à un niveau plus bas*/return (RECHERCHE(PAGE.FILS[POS], CL, TROUV_RRN, TROUV_POS)finsi

finsi

Recherche dans un arbre-B

Page 70: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

/* RRN_FichPrin est le numéro du bloc dans le fichier de données (FichPrin) où se trouve toutes les données de l'enregistrement trouvé. Chaque clé est accompagnée par l'adresse où se trouve la donnée correspondante dans un autre fichier que le fichier index B-Arbre.*/

template <typename T>bool BTree::searchBTree(int rrn, T key, int *trouvRRN, short *trouvPos) { short pos; Bool found; BTPAGE page;

if (rrn == NIL) { return FAUX; } else { btread(rrn,&page); /*lecture d'un noeud (une page) dans le fichier B-Arbre*/ found = searchNode(key, page, &pos); /*recherche dans la page lue */ if (found) { *trouvRRN = page.key[pos].RRN_FichPrin; return VRAI; } else { return(search(page.child[pos],key,trouvRRN,trouvPos)); }

} }

3 6  8  10  

Page 71: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Visite d’un arbre-B

visite symétrique du B-arbre pour afficher les clés triées,rrn est l'adresse de la page racine du B-arbre.

Cette fonction retourne un flag pour contrôler son exécutionBTPAGE est la structure typique du B-arbre:

struct BTPAGE {

short keycount;struct uneCle key [MAXKEYS];short CHILD[MAXKEYS+1];

};

Page 72: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

template <typename T>int BTree:: visiteSymetriqueB_Arbre(short rrn) {

BTPAGE page;

if (rrn == NIL){

return (-1); //arbre vide}

btRead(rrn, &page);

for(short pos = 0; pos < page.keycount; pos++){

//appel récursif pour chaque sous-arbresvisiteSymetriqueB_Arbre(page.child[pos]);cout << page.key[pos].nom;

}

//dernier appel récursif pour le sous-arbrequi se trouve à droite de la dernière clé

visiteSymetriqueB_Arbre(page.child[pos]);

return 0;}

Page 73: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

Page 74: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

x

Enlèvement dans un arbre-B

Page 75: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

x

Enlèvement dans un arbre-B

Page 76: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 22   32 35 3813 15 18   42 45 46   

26 27  

24

30 40   

Enlèvement dans un arbre-B

Page 77: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 22   32 35 3813 15 18   42 45 46   

26 27  

24

30 40   

Enlèvement dans un arbre-B

Page 78: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 20   

5 7 8 22   32 35 3813 15 18   42 45 46   

26 27  

24

30 40   

x

Page 79: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 20   

5 7 8 22   32 35 3813 15 18   42 45 46   

26 27  

24

30 40   

x

Page 80: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 32 35 3813 15 18   42 45 46   

26 27  

22

30 40   

Enlèvement dans un arbre-B

Page 81: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 20   

5 7 8 32 35 3813 15 18   42 45 46   

26 27  

22

30 40   

Enlèvement dans un arbre-B

Page 82: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

22

30 40   

20

Page 83: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

22

30 40   

20

x

Page 84: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

22

30 40   

20

x

Enlèvement dans un arbre-B

Page 85: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

20

30 40   

Page 86: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

20

30 40   

Enlèvement dans un arbre-B

Page 87: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

18

-: 25,24,22,20

10 15   

5 7 8 32 35 3813   42 45 46   

26 27  

20

30 40   

Enlèvement dans un arbre-B

Page 88: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

18

-: 25,24,22,20

10 15   

5 7 8 32 35 3813   42 45 46   

26 27  

20

30 40   

x

Enlèvement dans un arbre-B

Page 89: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

18

-: 25,24,22,20

10 15   

5 7 8 32 35 3813   42 45 46   

26 27  

20

30 40   

x

Enlèvement dans un arbre-B

Page 90: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 15   

5 7 8 32 35 3813   42 45 46   

26 27  

18

30 40   

Enlèvement dans un arbre-B

Page 91: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10 15   

5 7 8 32 35 3813   42 45 46   

26 27  

18

30 40   

Page 92: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Enlèvement dans un arbre-B

-: 25,24,22,20

10   

5 7 8 32 35 3813 15   42 45 46   

26 27  

18

30 40   

Page 93: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10   

5 7 8 32 35 3813 15   42 45 46   

26 27  

18

30 40   

Enlèvement dans un arbre-B

Page 94: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10   

5 7 8 32 35 3813 15   42 45 46   

26 27  

18

30 40   

Enlèvement dans un arbre-B

Page 95: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

30 40   

Enlèvement dans un arbre-B

Page 96: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 18   

5 7 8 32 35 3813 15   42 45 46   

26 27  

30 40   +

Enlèvement dans un arbre-B

Page 97: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

-: 25,24,22,20

10 18 30 40   

5 7 8 32 35 3813 15   42 45 46   

26 27  

Enlèvement dans un arbre-B

Page 98: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

1. Si la clé à supprimer ne se trouve pas dans une feuille, la remplacer par son prédécesseur ou successeur se trouvant dans une feuille.

2. Supprimer la clé. 3. Si la feuille a le nombre requis de clés, ne rien faire.4. Si la feuille contient moins de clés que requis, regarder à sa droite et à sa gauche

pour trouver la cible.1. Si la cible a le nombre requis de clés, redistribution2. Si la cible n’a pas le nombre requis de clés, concaténation

5. Si la feuille a subi la concaténation, appliquer 3. à 6. au père de cette feuille.6. Si la dernière clé de la racine a été déplacée, mettez à jour la racine.

Algorithme

Enlèvement dans un arbre-B

Page 99: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Utilisation d’arbres-B

• + indirection vers les données

10 20   

5 7 8 22 24   32 35 3813 15 18   42 45 46   

26 27  

25

30 40   

Page 100: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B d’ordre m

Désavantages :• gestion plus complexe

• 2 types de structures à gérer pour chaque opération• espace perdu

• les nœuds (tableaux) contiennent de l’espace inutilisé• quel impact a le choix de m :

• sur le temps de recherche d’une information ?• sur le temps d’ajout d’une information ?• sur le temps de traitement d’intervalles ?

• comment choisir m ?

Page 101: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Arbres-B d’ordre m

Désavantages :• gestion plus complexe

• 2 types de structures à gérer pour chaque opération• espace perdu

• les nœuds (tableaux) contiennent de l’espace inutilisé• quel impact a le choix de m :

• sur le temps de recherche d’une information ?• sur le temps d’ajout d’une information ?• sur le temps de traitement d’intervalles ?

• comment choisir m ?• souvent selon la taille des secteurs disque• selon les caractéristiques et besoins de l’application

Page 102: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Les arbres-B+

Définitions:• c ’est un B-arbre• + duplications des clés• + chaînage de toutes les feuilles

Page 103: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 65

65

Exemple

Construction d’un arbre-B+

Page 104: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 25

25 65

Page 105: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 50

25 50 65

Page 106: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 30

25 30 50 65

Page 107: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 85

85

85

25 30 50 65

25 30 50 65

50

25 30 50 65 85

Page 108: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 75

50

25 30 50 65 75 85

Page 109: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Insérer 80 50

25 30 50 65 7585

80

50

25 30 50 65 75 80 85

50

25 30 50 65 75 80 85

50 75

25 30 50 65 75 80 85

Page 110: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Suppression

60

25 50 7585

50 55 75 805 10 15

25 28 30 60 65 70

85 90 95

Page 111: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 70 (Cas 1)

60

25 50 7585

50 55 75 805 10 15 20

25 28 30 60 65 70

85 90 95 Sans violation70 n’appartient pas à une page interne

Suppression

Page 112: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

60

25 50 7585

50 55 75 805 10 15 20

25 28 30 60 65

85 90 95

Suppression

Page 113: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 25 (Cas 1)

60

25 50 7585

50 55 75 805 10 15 20

25 28 30 60 65

85 90 95 Sans violation

25 appartient à une page interne

Page 114: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

60

28 50 7585

50 55 75 805 10 15 20

28 30 60 65

85 90 95

Suppression

Page 115: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

60

28 50 7585

50 55 75 805 10 15 20

28 30 60 65

85 90 95 Violation

Page 116: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

60

28 50 7585

50 55 75 805 10 15 20

28 30 60 65

85 90 95 Fusionner

Page 117: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

60

28 50 7585

50 55 75 805 10 15 20

28 30 60 65

85 90 95

On peut fusionner avec l’autre frère

Cas 2 Fusion

Page 118: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

65

28 50 7585

50 55 5 10 15 20

28 30

65 75 80

85 90 95

Page 119: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

65

28 50 85

50 55 5 10 15 20

28 30

65 75 80

85 90 95

Violation

Page 120: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

65

28 50 85

50 55 5 10 15 20

28 30

65 75 80

85 90 95

Fusionner

Page 121: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

65

28 50 85

50 55 5 10 15 20

28 30

65 75 80

85 90 95

Fusionner

Page 122: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Supprimer 60 (Cas 2 et 3)

2850 65 85

50 55 5 10 15 20

28 30

65 75 80

85 90 95

Page 123: Structures de données IFT-2000 Abder Alikacem Semaine 11, 1 ère partie Les B-arbres Département dinformatique et de génie logiciel Édition septembre 2009

Site Web du Cours, semaine 12

Lecture complémentaires :

• Une synthèse sur les arbres AVL ainsi que sur les B-arbre et B-arbre+. • Une trace des algorithmes d'ajout et de suppression dans un B-arbre. • La même chose en ce qui concerne les B-arbre+.