La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz

Présentations similaires


Présentation au sujet: "Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz"— Transcription de la présentation:

1 Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz email: d_zegour@esi.dzd_zegour@esi.dz

2 Concepts du multidimensionnel

3 Les méthodes traditionnelles Utilisent les listes inversées Autant d'indexes secondaires que d'attributs Coûteuses pour les grands fichiers Concepts du multidimensionnel Les méthodes modernes N'utilisent pratiquement pas d'index Utilisent le concept des tableaux extensibles Visent un accès disque

4 Article = point de l'espace d- dimensionnel D 1 X D 2 X....X D d Concepts du multidimensionnel : Terminologie Article = ( k 1, k 2,...k d ) d attributs A 1, A 2,......, A d, d est la dimension K i appartient à un domaine D i Généralement, une clé primaire (k 1 ) et d-1 clés secondaires (k 2, K 3,...K d ) Requête exacte (Exact match query ) Tous les attributs sont spécifiés ( Articles avec A1=k1, A2=k2,....Ad=Kd ) Requête partielle (Partial match query ) : Quelques attributs sont spécifiés Requête par intervalle ( Region query ) Un intervalle est spécifié pour chaque attribut. Principales opérations

5 Ordre de rangement des sous tableaux A(i, *, *,..., *) : A(a 1, *, *,..., *), A(a 1 +1, *, *,..., *), A(a 1 +2, *, *,..., *),........., A(b 1, *, *,..., *) Concepts du multidimensionnel: Tableau statique Une déclaration typique : A(a 1 :b 1 ; a 2 :b 2 ;......a n :b n ) A l'intérieur de chaque sous tableau A(i, *, *,...., *), l'ordre suivant des sous sous-tableaux est considéré : A(i, a2, *, *,..., *), A(i, a2+1, *, *,..., *), A(i, a2+2, *, *,..., *),......, A(i, b2, *, *,..., *) Etc.

6 Exemple pour un tableau A(3, 2, 3) Concepts du multidimensionnel: Tableau statique

7 Partie variable : i 1  i=2,n d i + i 2  i=3,n d i +...+ i n-1 d n + i n Adresse d'un élément A(i 1, i 2.., i n ) ? Posons d i = b i - a i + 1 Adresse de A(i 1, *, *,....) : AD 1 = Base + (i 1 -a 1 ) d 2 d 3...d n Adresse de A(i 1, i 2, *,....) : AD 2 = AD 1 + (i 2 -a 2 )d 3 d 4...d n Adresse de A(i 1, i 2,...i n ) : AD n = Base + (i 1 -a 1 )d 2 d 3..d n + (i 2 -a 2 )d 3 d 4...d n +....+(i n-1 -a n-1 )d n + (i n -a n ) Partie constante : Base -(a 1  i=2,n d i + a 2  i=3,n d i +...+a n-1 d n + a n ) Si a1 = a2 =...... = an = 0, l‘adresse de A(i1, i2,...in) est i1d2d3..dn + i2d3d4...dn +....+in-1dn + in =  j=1,n ( i j.  i=j+1,n d i ) Concepts du multidimensionnel: Tableau statique

8 Le tableau est représenté en mémoire de manière contiguë M[0..V] avec V =  i=1,k [ ( U i + 1) ] – 1 A[0, 0,...] a comme image M[0]. Concepts du multidimensionnel: Tableau extensible A[0:U 1, 0:U 2,....,0:U k ], U i variable L'état initial U i est 0 pour tout i dans {1, 2,...,k) A[j 1, j 2,...j k ] représente un élément du tableau. Chaque j i est dans l'intervalle [0..U i ] Un schéma d'allocation du tableau A est une fonction bijective Loc : Nk ---> N telle que : (i) Loc( ) = 0 (ii) Loc( ) ) ssi pour i  k, a t = b t pour 1  t < i et a i < b i sinon Fonction d’allocation

9 Utilisation d’un tableau d'index : IXA[1..K, 0..X, 1..K) Première dimension : 1 tableau par dimension Deuxième dimension :évolution des indices Troisième dimension : base et facteur multiplicatif pour chaque dimension X = Max (U 1, U 2,....,U k ) Concepts du multidimensionnel: Tableau extensible Rangement(KDEA : K-Dimensional Extensible Array ) IXA = K tableaux 2-dimensionnel distinct Bi [0..Ui, 1..k] avec i=1, k.

10 B2 19 18 17 16 11 10 9 12 13 14 15 6 7 8 3 4 5 012 0 1 1 0 3 1 6 1 12 1 1 1 1 2 1 9 1 16 J1 J2 0 1 2 3 4 32103210 Exemple Mécanisme d'expansion dans le cas d'un 2DEA ( U 1, U 2 ) = (3, 4) [Axe 2] (3, 3) [Axe 1] (2, 3) [Axe 2] (2, 2) [Axe 1] (1, 2) [Axe 1] (0, 2) [Axe 2] (0, 1) [Axe 2] B1 B2 Concepts du multidimensionnel: Tableau extensible

11 Donc il suffit de prendre le Max entre B2(5,2) et B1 (1,1). Concepts du multidimensionnel: Tableau extensible Comment calculer l‘adresse d'un élément arbitraire soit A (1, 5) ? Est-ce que A(1, 5) appartient à une ligne ou une colonne? Si A(1, 5) a été ajouté à la ligne 1, B2 (5,2) devrait avoir une valeur inférieure à l‘adresse début de la ligne 1 qui est B1 (1, 1).

12 1. Étendre B t [0:U t, 1..K] à B t [0:U t + 1, 1..K ] 2. B t [U t +1,t]  (U t +1)*  r=1, k et r # t. (U r + 1) [base] 3. B t (U t +1, q]   r=q+1,..., k et r # t ( U r + 1) [facteurs multiplicatifs] q=1, K et q <> t. Concepts du multidimensionnel: Tableau extensible Procédure d'allocation: Étendre(t) : t index, t =1, k 1. Déterminer l'indice t tel que B t [j t, t]  Max { B i [j i, i], i=1,..,K } 2. Adresse  B t [j t,t]+  r = 1,...,K et r # t ( B t [j t, r] * j r ) Fonction d'accès: Adresse de A(j 1, j 2,..., j k ) ?

13 Calcul des adresses Adr(0,0)=0Adr(0,1)=3 Adr(0,2)=6 Adr(0,3)=12 Adr(0,4)=24 Adr(1,0)=1 Adr(1,1)=4Adr(1,2)=7 Adr(1,3)=13Adr(1,4)=25 Adr(2,0)=2Adr(2,1)=5 Adr(2,2)=8Adr(2,3)=14 Adr(2,4)=26Adr(3,0)=9 Adr(3,1)=10Adr(3,2)=11 Adr(3,3)=15Adr(3,4)=27 Adr(4,0)=16Adr(4,1)=17 Adr(4,2)=18Adr(4,3)=19 Adr(4,4)=28Adr(5,0)=20 Adr(5,1)=21Adr(5,2)=22 Adr(5,3)=23Adr(5,4)=29 Exemple Calcul d’adresse k=2 ; E= 1, 1, 2, 2, 1, 2, 1, 1, 2 B1 1 : 0 1 2 9 16 20 2 : 1 1 1 1 1 1 1 : 1 1 1 1 1 2 : 0 3 6 12 24 B2 Concepts du multidimensionnel: Tableau extensible

14 1 : 1 2 3 4 2 : 1 1 1 1 3 : 0 4 18 48 Exemple Calcul d’adresse k=3; E=1, 2, 3, 1, 2, 3, 1, 2, 3 1 : 0 1 8 27 2 : 1 1 2 3 3 : 1 1 1 1 1 : 1 1 2 3 2 : 0 2 12 36 3 : 1 1 1 1 B1 B2 B3 Concepts du multidimensionnel: Tableau extensible

15 A 0 = tableau d-dim contenant le seul élément A(0, 0,...,0) Concepts du multidimensionnel: Tableau linéaire dynamique Un tableau d-dimensionnel est dit tableau linéaire dynamique s'il peut être généré récursivement comme suit: A 0 = { A(0, 0,..., 0) } A l+1 = A l U A l‘ A l et A l‘ sont des ensembles ordonnés tel que (1) A l  A l‘ =  (2) Pour chaque élément A(i 0, i 1...,i d-1 ) de A l dans un ordre linéaire ajouter A(i' 0, i' 1,...,i' d-1) où i' j = i j pour tout j, j#r i' r = i r + 2 L Avec l = L.d + r (d : dimension ; L : nombre de cycles; l : nombre d’extensions )

16 3. A 2 = A 1 U A' 1 l=1 ==> L=0 et r=1 donc 2 L = 1 A 2 = { A(0, 0), A(1, 0), A(0, 1), A(1, 1)} (Ajouter 2 L = 1 à la composante r=1 des éléments de A 1 ) 4. A 3 = A 2 U A' 2 l=2 ==> L=1 et r=0 donc 2 L = 2 A 3 = { A(0, 0), A(1, 0), A(0, 1), A(1, 1), A(2, 0), A(3, 0), A(2, 1), A(3, 1) } Ajouter 2 L =2 à la composante r=0 des éléments de A2 l = L.d + r Concepts du multidimensionnel: Tableau linéaire dynamique Exemple pour d = 2 1. A 0 = {A(0, 0)} 2. A 1 = A 0 U A' 0 l=0  L = 0 et r=0 donc 2 L = 1 A 1 = { A(0, 0), A(1, 0) } (Ajouter 2 L à la composante r=0) Ect...

17 Concepts du multidimensionnel: Tableau linéaire dynamique Évolution du fichier ( vue par niveau ) Adresses logiques des cases pour l = 5:

18 Hachage linéaire multidimensionnel (MLH)

19 Une clé k = (k 0, k 1,..., k d-1 ) peut être vue comme un vecteur dans un espace D-dimensionnel, où chaque axe correspond à un attribut différent. MLH : Considérations Soit K = D 0 X D 1 X.....X D d-1 l’espace des clés D i est le domaine correspondant à l'attribut A i. Utilise les tableaux linéaires dynamiques

20 En fin de cette séquence de division, le nombre de cases double. MLH: Principe Appliquer LH consécutivement sur chaque axe Chaque division dépend seulement de l'axe courant. Les N premières collisions sont résolues selon uniquement l'axe 0 (comme si les clés ne sont composées que d'une seule composante k 0 ) En général, N=1 au départ Par la suite, si des collisions apparaissent, elles sont résolues le long de l'axe 1, jusqu'à ce que le fichier double de nouveau. Etc. Pour chaque séquence, on éclate à partir de la case 0. Pour chaque séquence, le niveau est incrémenté

21 La case rajoutée est donnée par P + 2 l (Si N=1, Sinon P + 2 l.N) P pointeur de la case à éclater l : niveau de la fonction MLH: Remarques importantes En général, le prochain axe sur lequel les éclatements sont réalisés est déterminé de manière cyclique : (i+1) Mod d ( i est l'axe courant, d : nombre de dimensions) Dans la formule P + 2 l, 2 l représente la taille du fichier avant les éclatements le long d'un axe donné. A la fin d'un cycle ( d séquences d'éclatements), l'espace des adresses est incrémenté par un facteur de 2d. (au départ c'est 1.N, après axe 1 : 2 1 N, après axe 2 : 2 2 N,... ).

22 L 'ensemble des cases a été éclaté (L+1) fois le long des axes {0, 1,...r-1} et L fois le long des axes {r,...d-1} MLH: Propriétés Si l désigne le nombre total de séquences de divisions réalisées sur tous les axes, alors l = Ld + r L : nombre de cycles

23 H l, pour le niveau l (avec l = Ld+r), sera définie comme une fonction de D 0 X D 1 X...D d-1  R 0 X R 1 X....R d-1 avec R i = I L+1 pour i < r et R i = I L pour i  r MLH: Fonction de hachage Supposons N = 1 ( au départ ) et I i = {0, 1,....2 i - 1} Pour une clé k, H l (k) = (h L+1 (k 0 ), h L+1 (k 1 ),.....h L+1 (k r-1 ), h L (k r ),...h L (k d-1 ) La prochaine séquence de division s'effectuera le long de l'axe r, on utilisera alors : H l+1 (k) = (h L+1 (k 0 ), h L+1 (k 1 ),.., h L+1 (k r-1 ), h L+1 (k r ), h L (k r+1 ), …, h L (k d-1 )

24 H 1, H 2,...sont des fonctions de division pour MLH si elles satisfont les deux conditions suivantes MLH: Fonctions de division H l : K  {0, 1,...2 l -1} (par projection) Pour chaque niveau l du fichier avec l = L d + r et pour chaque clé k de K : H l+1 (k) = H l (k) ou bien H l+1 (k) =(h L+1 (k 0 ),..., h L+1 (k r-1 ), h L (k r )+2 L, h L (k r+1 )...h L (k d-1 ) = H l (k) + ( 0, 0,...,2 L, 0, 0,....) Condition de rang: Condition de division: Noter que : h L+1 (k r ) = h L (k r ) + 2 L

25 n : nombre d'articles insérés s : nombre de cases primaires s' : nombre de cases en débordement b : capacité case primaire b' : capacité case de débordement MLH: Exemple (d=2) Les divisions sont contrôlées par le facteur de chargement a Utilisation du modulo pour les fonctions de division a = n / ( s.b + s'.b') b = 3 et b' = 2. seuil s= 0.6

26 (a) Au départ, une seule case est allouée pour le fichier. Les 3 premiers articles sont insérés avec la fonction H 0 =(h 0, h 0 ) où h 0 (k)=k Mod 1 (b) insertion de l'article (19000, 21): Collision sur la case 0. Résolue par l'éclatement de la case 0 le long de l'axe 0, utilisant la fonction H 1 = (h 1 h 0 ) avec h 1 (k) = k Mod 2 (c) La clé (21217, 31)est insérée dans la case 1. MLH: Exemple (d=2) Première séquence de division

27 (a)L'insertion de (15241, 26) cause une collision sur la case 1 le long de l'axe 1, puisque a=6/6 = 1. L’article est mis en débordement et c’est la case 0 qui s’éclate. L'éclatement est accompli par H 2 =(h 1, h 1 ). Noter que H 2 (k) = H 1 (k) ou H 2 (k) = H 1 (K) + (0, 1) (b) Insertion de(59219, 35) : H2 donne (1, 1) : en dehors. Donc H1 qui donne(1, 0) : case 1.  Éclatement. MLH: Exemple (d=2) Deuxième séquence de division

28 MLH: Exemple (d=2) Adresses logiques des cases durant les 4 premières séquences de division. Problème : Association entre les coordonnées et les adresses de cases ?

29 Détermine pour µ donné, les coordonnées de la projection de µ le long de l'axe i,  i ( µ ) := (0, 0,..., µ i, 0,...0) MLH: Projection µ un point dans I d, I étant un intervalle quelconque ( I = [0..v] par exemple ) µ i : i-ème coordonnée de µ, 0  i  d-1 Projection  i : I d ---> I d

30 M ( H l+1 (k) ) = M (H l (k)) + 2 l M(H l (k)+(0,0,..,2 L, 0,0..) ) = M (H l (k)) + 2 l MLH: Fonction de mapping M(i0, i 1,...,i r-1,i r +2 L, i r+1,...i d-1 ) = M(i 0, i 1,...., i r,...i d-1 ) + 2 l où l = L.d + r ou bien Une fonction M de I d (Espace à d dim) dans J (espace à 1 dim)est une fonction de stockage si elle satisfait la contrainte suivante :

31 Théorème 1 : M ( µ ) =  i=0,d-1 M (  i (µ) ), MLH: Fonction de mapping Théorème 2 : Si M(0,0,..,0) = 0, alors M est une fonction sur la droite I l ( I l = {0, 1, 2, …,2 l -1} avec l = L.d + r M est une fonction bijective Exemple : M(3, 2) = M(3, 0) + M(0, 2) La démo se fait par récurrence

32 Exemple ( d=2)  Calcul de M(6, 3) (6) 2 = 1 1 0 0.2 0 + 1.2 2 + 1.2 4 (3) 2 = 1 1 1.2 1 + 1.2 3 M(6, 3) = 30  Calcul de M(4, 2) (4) 2 = 1 0 0 0.2 0 + 0.2 2 + 1.2 4 (2) 2 = 1 0 0.2 1 + 1.2 3 M(4, 2) = 24 Théorème 3 : M est complètement caractérisée par : M ( µ ) =  j=0,d-1 (  i=0,xj (2 d.i+ j. b ij )) où x j = Ent ( Log µ j ) et b xj j b xj-1 j....b 0 j est la représentation binaire de µ j MLH: Fonction de mapping

33 Exemples MLH: Fonction de mapping

34 Algorithme : 1. Déduire L et r 2. Calcul de M 3. l := l - 1 4. Reprendre à partir de 1 MLH: Fonction de mapping Connaissant le niveau l du fichier on peut déterminer M(x, y, z,...) Pour la dimension 2 on a les formules : M(a, b) = M(a, b-2 L ) + 2 l si r = 1 = M(a-2 L, b) + 2 l si r = 0

35  M(3, 3) = 2 3 + 2 2 + 2 1 + 2 0 = 15 MLH: Fonction de mapping Exemple : Calcul M(3, 3) sachant que l = 3 Si l = 3 ==> L = 1 et r = 1 M(3, 3) = M(3, 1) + 2 3 Pour l = 2 ==> L = 1 et r = 0 M(3, 1) = M(1, 1) + 2 2 Pour l = 1 ==> L = 0 et r = 1 M(1, 1) = M(1, 0) + 2 1 Pour l = 0 ==> L = 0 et r = 0 M(1, 0) = M(0, 0) + 2 0

36 La fonction inverse R peut être exprimée comme : R = ( m 0, m 1,..., m d-1 ) avec m j =  ( 2 k div d. b k m ), k dans E m (j) MLH: Fonction inverse Étant donné une adresse m obtenue par la fonction M Soit b x m, b x-1 m,...b 0 m sa représentation binaire E m (j) = { k tel que k = d.i + j et b k m est dans la représentation binaire de m } Pour déterminer m j, on ne considère que les bits de rang k = di + j j = 0, 1,..,,d-1 i = 0, 1,...

37 Exemples Pour d = 2 E m (0) = { 0, 2, 4,... } E m (1) = { 1, 3, 5,... } Pour d = 3 E m (0) = { 0, 3, 6,... } E m (1) = { 1, 4, 7,... } E m (2) = { 2, 5, 8,... } MLH: Fonction inverse Exemples Pour d=2 ; m = 27, puis m= 12

38 1. Appliquer H l (k) <-- ( h L+1 (k 0 ),..., h L+1 (k r-1 ), h L (k r ),...h L (k d-1 )) 2. m  M( H l (k) ) =  i=0, d-1 ( M(  i (H l (k) ) 3. Si m < P alors m := M ( H l+1 (k)) (P : prochaine case à éclater) MLH: Requête exacte Soit k = (k 0, k 1,..k d-1 ) et l = Ld + r le nombre de séquences de divisions accomplies, l'algorithme qui suit rend l'adresse logique où l'article est rangé

39 3. m < P donc H4(k)=(h2, h2)(k)=(1,3) M(1, 0) = 1; M(0, 3) = 10 m  11 MLH: Requête exacte Trouver l'adresse de (30121, 35) en supposant que l = 3 et P = 4 1. H3(k)=( h2(30121), h1(35) ) = (1, 1) 2. M(1, 1) = M(1, 0) + M(0, 1) M(1, 0) = 1; M(0, 1) = 2 m  3

40 On désigne par b l (k) l'ensemble des cases à rechercher ( l = L.d + r ) b l (k)={b 0 (k 0 ),...., b r (k r ),.....b d-1 (k d-1 ) ) MLH: Requête partielle Rechercher des clés de la forme k= (k 0, k 1,...,k d-1 ) k i est -soit une valeur du domaine D i -soit une valeur non spécifiée (‘*’). Comment définir b i (k i ) ?

41 k i = * et i=r : 0  b i (k i )  2 L+1 - 1 + Last i Last = P - 1 : dernière case éclatée Last i dénote la i-ieme ( i = r) coordonnée obtenue par l'application de la fonction inverse R MLH: Requête partielle k i est spécifié et i < r : b i (k i ) = h L+1 (k i ) k i est spécifié et i  r : b i (k i ) = h L (k i ) k i = * et i # r : 0  b i (k i )  2 m - 1 avec m = L+1 si i r b i (k i ) est défini comme suit :

42 Pour Chaque b dans b l ( k) m  M(b 0,b 1,....,b d-1 ) Si k r est spécifié et m < P b r  h L+1 (k r ) m  M(b 0, b 1,..b d-1 ) Fsi Écrire(m) Finpour MLH: Requête partielle Soit la requête k=(k 0, k 1..., k d-1 ) et l = Ld + r, l'algorithme retourne les adresses des cases où les articles avec les attributs spécifiés sont rangés.

43 Très bonnes performances ( recherche, insertion, suppression) Pour des divisions non contrôlées avec b=5 et b'=1, le coût d'accès est de 1.09 indépendamment de la dimension et le facteur de chargement est de 67%. Pour des division contrôlées, même avec un seuil de 90%, pour b=10 et b'=2, le temps d'accès est de 1.74. Inconvénient : absence de l’ordre. MLH: Synthèse

44 Hachage digital multidimensionnel (MTH)

45 Utiliser d arbres digitaux en mémoire, un arbre par attribut Les nœuds feuilles désignent des indexes au lieu des adresses de cases du fichier Afin de localiser un article de clé (k 1, k 2,..., k n ), chaque k i est recherché dans l'arbre digital correspondant à l'attribut i. Appliquer une fonction de "mapping" afin de transformer le d-uplet formé en une adresse linéaire. MTH: Concept

46 Les cases sont représentées dans un espace d-dimensionnel où les d axes sont les d attributs. Un point avec les coordonnées (i1, i2,.., id) dans l'espace représente la case du fichier d'adresse F( ). Le fichier est un tableau à d dimensions rangé linéairement sur le disque. MTH: Concept La fonction de mapping utilise la technique des tableaux extensibles dans n'importe quelle direction. A chaque extension un bloc(d-1)-dimensionnel ( Segment ) est rajouté. La fonction de mapping utilise d tableaux bi-dimensionnel contenant les bases et le facteurs multiplicatifs pour chaque dimension.

47 MTH: Exemple

48 1. Choisir t = m tel que B m [j m, m] = Max { B r [j r, r]}, r = 1, 2, …d 2. Adr = B t [j t, t] +  r=1, d B t [j t, r] * j r et r  t 3. Retourner Adr MTH: Fonction de mapping Calcul de F (j 1, j 2, …j d )

49 Une insertion peut causer une collision. Le fichier est étendu par un bloc (d-1) dimensionnel de cases rajoutées à la fin du fichier Taille du bloc =  (U j + 1) j#t t étant l'axe sur lequel se fait l'extension. U j index maximal dans l'arbre T j MTH: Eclatement

50 En cas de collision : a)Choisir un axe d’extension (de manière cyclique) b)Ajouter un nouveau segment c)Redistribuer les clés entre l’ancien et le nouveau segment Extension par bloc de plusieurs cases MTH: Eclatement

51 Exemple d’éclatement selon l’axe j1 MTH: Eclatement

52 1. Appliquer T 1, T 2,…,T d aux valeurs k 1, k 2,…, k d  (i 1, i 2,…, i d ) 2. Pour j:=1, d Si i j = Nil - Etendre le tableau selon l’axe j - Mettre à jour l’arbre T j 3. Calculer F(i 1, i 2, …, i d )  adresse de case 4. Si Collision alors choisir un axe a cycliquement Étendre selon l’axe a Éclater l’arbre Ta Pour toutes les cases de l’ancien segment faire - Re hacher les clés - Si Nil ajouter segment MTH: Algorithme d’insertion Insertion de K = (k1, k2, …,kd)

53 Requête exacte C'est l'algorithme de recherche, puisque tous les attributs sont spécifiés. Requête partielle Considérer tous les indices pour les attributs non spécifiés Requête à intervalle Déterminer un ensemble d’indice dans chaque dimension MTH: Types de requêtes

54 i1 i3 i2 Arbres digitaux Fonction de mapping MTH: Requête exacte

55 Parcours d’un tableau à (d-q) dimensions i2 i1 := * i3 := * Spécification de q valeurs MTH: Requête partielle

56 Sous tableau d-dimensionnel R2 R1 R3 Intervalle pour chaque dimension MTH: Requête par intervalle

57 Fonction de mapping utilise un index : d tableaux contenant les bases et facteurs multiplicatifs Très bonnes performances d’accès. Facteur de chargement de l’ordre de 40%.(extension du fichier par des segments de plus en plus grands) Inconvénients : d-arbres digitaux en mémoire (sensibilité de la méthode) MTH: Synthèse

58 Arbres B Multidimensionnels (MBT)

59 Utilise un index permettant d'indexer tous les attributs du fichier. L'index est un arbre m-aire ou chaque nœud est un B arbre. Les nœuds internes au même niveau dans l'index correspondent aux B arbres indexant des valeurs différentes d'un même attribut. Le nœud racine correspond au B arbre contenant toutes les valeurs relatives à l'attribut 1. MBT : Structure générale

60 Chaque valeur V 1, dans cet arbre, pointe l'un des nœuds fils du niveau prochain ( B arbre de niveau 2) contenant les valeurs de A 2 apparaissant avec V 1 dans le fichier. Ces valeurs de A 2 ( B arbre de niveau 2 associé à V 1 ) forme ce qu'on appelle l'ensemble filial de V 1 au niveau 2. De même, chaque valeur de V 2 de cet ensemble pointe l'un des nœuds fils (B arbre au niveau 3) contenant toutes les valeurs apparaissant avec V 1 et V 2 dans le fichier. Ce processus continue jusqu'à ce que un nœud feuille est atteint, contenant ainsi toutes les adresses telles que : A 1 = V 1 & A 2 = V 2 &......& A n = V n MBT : Structure générale

61 Nœud = (K 1 F 1 P 1 ) (K 2 F 2 P 2 ) (K 3 F 3 P 3 ).....(K h-1, F h-1, P h-1 ) K j : valeur d'attribut P j : pointeur dans le même sous arbre contenant les valeurs entre K j et K j+1. F j : point l'ensemble filial de K j dans le niveau prochain. MBT : Structure générale Nœuds feuilles = pages d'accession contenant chacune des pointeurs vers les articles du fichier. Ces pages sont liées ( liste horizontale ). Si l'une de ces pages déborde, une liste orthogonale pour cette page est créée.

62 La racine de chaque B arbre contient 3 pointeurs additionnels : Left, Right et Next : – Left : pointeur du B arbre le plus à gauche du niveau prochain de son ensemble filial. – Next : pointeur au B arbre suivant du même niveau – Right : pointeur du B arbre le plus à droite du niveau prochain de son ensemble filial. Level(i) donnant le premier B arbre dans le niveau i. But : accéder directement à un niveau i quelconque de l'index ( utilisé dans les requêtes à intervalle) Informations additionnelles MBT : Structure générale

63

64 a2b0 a1b3 a2b4 a1b2 a3b0 a1b5 a1b4 a1b1 201 22101 001 Fichier de données Exemple : fichier avec les clés : a 1 b 1, a 1 b 2, a 1 b 3, a 1 b 4, a 1 b 5, a 2 b 0, a 2 b 4, a 3 b 0 {b 1, b 2, b 3, b 4, b 5 } est l'ensemble filial de a 1. {b 0, b 4 } est l'ensemble filial de a 2. MBT : Exemple d’un MBT

65 1. Trouver le plus petit j tel que la combinaison a 1, a 2, …a j n’existe pas encore. 2. a j est inséré dans l'ensemble filial de a j-1. 3. Pour k:=j+1, n – Insertion d’un nouvel B- arbre contenant a k – Mise à jour du pointeur Next dans Pred(F k ) Insertion de MBT : Insertion a1 aj-1 aj aj+1 an Next Right

66 1. Trouver j tel que F j,…F n ne soient formés que d’une seule valeur chacun 2. Supprimer a j de F j-1. 3. Pour k:=j, n – Libérer F k – Mise à jour de Next dans Pred(F k ) Suppression de a1 aj-1 aj aj+1 an Next Right MBT : Suppression

67 Chaque attribut est recherché dans le B- arbre correspondant. a1 a2 an-1 an …………………… MBT : Requête exacte

68 MBT : Requête partielle

69 F_ptr Recherche de 2 valeurs dans des listes d’arbres à chaque niveau du répertoire. MBT : Requête par intervalle

70 Performances logarithmiques pour toutes les opérations. Facteur de chargement au voisinage de 70% Algorithmes complexes MBT : Synthèse


Télécharger ppt "Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz"

Présentations similaires


Annonces Google