1 / 21

Structures de données avancées : Concepts du Multidimensionnel

Structures de données avancées : Concepts du Multidimensionnel. D. E ZEGOUR Institut National d ’Informatique. Concept du multidimensionnel. Les méthodes traditionnelles Utilisent les listes inversées Autant d'indexes secondaires que d'attributs Coûteuses pour les grands fichiers

Download Presentation

Structures de données avancées : Concepts du Multidimensionnel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique

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

  3. Concept du multidimensionnel Terminologie • Article = ( k1, k2, ...kd) • d attributs A1, A2, ......, Ad , d est la dimension • Généralement, une clé primaire (k1) et d-1 clés secondaires (k2, K3, ...Kd) • Ki appartient à un domaine Di • Article = point de l'espace d-dimensionnel D1 X D2 X....XDd

  4. Concept du multidimensionnel Terminologie • 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.

  5. Concept du multidimensionnel Représentation d'un tableau statique • Déclaration : A(a1:b1; a2:b2; ......an:bn)  • Ordre de rangement des sous tableaux A(i, *, *, ..., *) : A(a1, *, *, ..., *), A(a1+1, *, *, ..., *), A(a1+2, *, *, ..., *), ........., A(b1, *, *, ..., *)

  6. Concept du multidimensionnel Représentation d'un tableau statique • 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, *, *, ..., *) Et ainsi de suite ... • Donc rangement de la matrice ligne par ligne. Ce sont les derniers indices qui varient le plus rapidement.

  7. Concept du multidimensionnel Exemple pour un tableau A(3, 2, 3)

  8. Concept du multidimensionnel Adresse d'un élément A(i1, i2 .., in) ? Posons di = bi - ai + 1 Adr de A(i1, *, *, ....) : AD1 = Base + (i1-a1) d2d2...dn Adr de A(i1, i2, *, ...., *) : AD2 = AD1 + (i2-a2)d3d4...dn Adr de A(i1, i2, ...in) : ADn = Base + (i1-a1)d2d3..dn + (i2-a2)d3d4...dn + ....+(in-1-an-1)dn + (in-an) Partie constante : Base -(a1i=2,ndi+ a2i=3,n di+...+an-1dn + an) Partie variable : ini=2,n di + i2i=3,ndi + ...+ in-1dn + in

  9. Concept du multidimensionnel Adresse d'un élément A(i1, i2 .., in) ? Si a1 = a2 = ...... = an = 0, l‘adresse de A(i1, i2, ...in) est i1d2d3..dn + i2d3d4...dn + ....+in-1dn + in Ou bien : j=1,n ( ij . i=j+1,n di )

  10. Concept du multidimensionnel Tableaux extensibles : définition, notations • Tableau A[0:U1, 0:U2, ....,0:Uk ], Ui variable • A[j1, j2, ...jk] représente un élément du tableau. • Chaque ji est dans l'intervalle [0..Ui] • Le tableau est représenté en mémoire de manière contiguë M[0..V] • V = i=1,k [ ( Ui + 1) ] - 1 • L'état initial Ui est 0 pour tout i dans {1, 2, ...,k) • A[0, 0, ...] a comme image M[0]. 

  11. Concept du multidimensionnel Tableaux extensibles : fonction d’allocation • Un schéma d'allocation du tableau A est une fonction bijective Loc : Nk ---> N telle que (i) Loc(<0, 0, 0>) = 0 (ii) Loc(<a1, a2,...ak>) < Loc(<b1, b2, ...bk>) ssi pour i  k , at = bt pour 1  t < i et ai < bi sinon

  12. Concept du multidimensionnel Représentation d’un tableau extensible à K dimensions (KDEA : K-Dimensional Extensible Array ) Utilisation d’un tableau d'index : IXA[0:X, 1..K, 1..K) • Première dimension : évolution des indices • Deuxième dimension : 1 tableau par dimension • Troisième dimension : base et facteur multiplicatif pour chaque dimension X = Max (U1, U2, ....,Uk ) Remarque : IXA peut être vu comme K distinct 2-dimensionnel tableaux  Bi [0..Ui , 1..k] avec i=1, k.

  13. Concept du multidimensionnel Exemple • Mécanisme d'expansion dans le cas d'un 2DEA a travers les changements d'état suivants: • ( U1, U2 ) = (0, 0), (0, 1), (0, 2), (1, 2), (2, 2), (2, 3), (3, 3), (3, 4)

  14. Concept du multidimensionnel Illustration du principe d'expansion : • Ajouter une colonne au tableau qui occupe 4 X 5 = 20 éléments, adressé de 0 à 19. • La nouvelle colonne doit occuper 4 éléments à partir de l'Adresse 20. • L‘adresse d'un élément A(i, j) de cette colonne est calculée en ajoutant l'indice ligne (i) à 20 cad A(i, j) = 20 + i (Ex:A(2, 5) = 22 ) • Nous devons donc enregistrer le fait que l'Adresse début de chaque élément de la colonne 5 est 20. On range donc 20 dans B2[5,2]. B1 B2 • De la même façon, si nous ajoutons la 5ième ligne, nous enregistrons l'Adresse début 24 dans B1[4, 1].

  15. Concept du multidimensionnel 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). • Donc il suffit de prendre le Max entre B2(5,2) et B1 (1,1). B1 B2

  16. Concept du multidimensionnel Procédure d'allocation Étendre(t) : t index, t =1, k • 1. Étendre Bt[0:Ut, 1..K] à Bt[0:Ut + 1, 1..K ] • 2. Ut<--- Ut + 1 • 3. Bt[Ut+1,t] := (Ut+1)* r=1, k et r # t.(Ur+ 1) [base] Bt(Ut+1, q] := r=q+1, ..., k et r # t ( Ur + 1) [facteurs multiplicatifs] q=1, K et q <> t.

  17. Concept du multidimensionnel Fonction d'accès: Adresse de A(j1, j2, ..., jk ) ? • 1. Déterminer l'indice t tel que Bt[jt, t] := Max { Bi[ji, i], i=1, ..,K } • 2. Adresse :=Bt[jt,t]+ r = 1, ...,K et r # t ( Bt[jt, r] * jr )

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

  19. Concept du multidimensionnel Exemple 2 k=3; E=1, 2, 3, 1, 2, 3, 1, 2, 3 • Contenu des tables : • B1: 1 : 0 1 8 27 2 : 1 1 2 3 3 : 1 1 1 1 • B2: 1 : 1 1 2 3 2 : 0 2 12 36 3 : 1 1 1 1 • B3: 1 : 1 2 3 4 2 : 1 1 1 1 3 : 0 4 18 48

  20. Concept du multidimensionnel Calcul des adresses • Adr(0,0,0)=0 Adr(0,0,1)=4 Adr(0,0,2)=18 Adr(0,0,3)=48 Adr(0,1,0)=2 Adr(0,1,1)=5 • Adr(0,1,2)=19 Adr(0,1,3)=49 Adr(0,2,0)=12 Adr(0,2,1)=13 Adr(0,2,2)=20 Adr(0,2,3)=50 • Adr(0,3,0)=36 Adr(0,3,1)=37 Adr(0,3,2)=38 Adr(0,3,3)=51 Adr(1,0,0)=1 Adr(1,0,1)=6 • Adr(1,0,2)=21 Adr(1,0,3)=52 Adr(1,1,0)=3 Adr(1,1,1)=7 Adr(1,1,2)=22 Adr(1,1,3)=53 • Adr(1,2,0)=14 Adr(1,2,1)=15 Adr(1,2,2)=23 Adr(1,2,3)=54 Adr(1,3,0)=39 Adr(1,3,1)=40 • Adr(1,3,2)=41 Adr(1,3,3)=55 Adr(2,0,0)=8 Adr(2,0,1)=9 Adr(2,0,2)=24 Adr(2,0,3)=56

  21. Concept du multidimensionnel • Adr(2,1,0)=10 Adr(2,1,1)=11 Adr(2,1,2)=25 Adr(2,1,3)=57 Adr(2,2,0)=16 Adr(2,2,1)=17 • Adr(2,2,2)=26 Adr(2,2,3)=58 Adr(2,3,0)=42 Adr(2,3,1)=43 Adr(2,3,2)=44 Adr(2,3,3)=59 • Adr(3,0,0)=27 Adr(3,0,1)=28 Adr(3,0,2)=29 Adr(3,0,3)=60 Adr(3,1,0)=30 Adr(3,1,1)=31 • Adr(3,1,2)=32 Adr(3,1,3)=61 Adr(3,2,0)=33 Adr(3,2,1)=34 Adr(3,2,2)=35 Adr(3,2,3)=62 • Adr(3,3,0)=45 Adr(3,3,1)=46 Adr(3,3,2)=47 Adr(3,3,3)=63

More Related