1 / 12

Hachage Linéaire

Hachage Linéaire. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz email: d_zegour@esi.dz. Hachage Linéaire. Introduction. Hachage classique limité aux données statiques  domaines d’utilisation restreints.

Download Presentation

Hachage Linéaire

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. Hachage Linéaire Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz email: d_zegour@esi.dz

  2. Hachage Linéaire • Introduction • Hachage classique limité aux données statiques  domaines d’utilisation • restreints. • La plupart des applications utilisent les données dynamiques  maintenir • Un bon accès aux données ( insertions et suppressions fréquentes)

  3. Hachage Linéaire • Du hachage classique au hachage dynamique • Le hachage classique (au sens de KNUTH) suppose que la fonction de • Hachage est statique. Toute recherche de données est basée sur la même fonction dont le nombre d'adresses possibles est constant. • Toute collision conduit à la création d'un débordement  dégradation des • performances d'accès. Pour le hachage dynamique : - Une insertion ou une suppression peut commencer par une fonction de hachage et terminer par une autre. - En plus, l'espace des adresses possibles n'est plus limité.

  4. Hachage Linéaire • Présentation Utilise une famille de fonctions de hachage : h0, h1, h2, … hi(d) = d mod 2iN Propriété importante hi+1(d) = hi(d) hi+1(d) = hi(d) + 2iN Au départ : une table de N cases. 1 case = b données + 1 pointeur vers une liste de données

  5. Hachage Linéaire Situation initiale 0 1 2 N-1 P Paramètres du fichier : Niveau (i) et P (Prochaine case à éclater) Au départ: i=0 (Niveau ) P=0 ( Prochaine case à éclater)

  6. Hachage Linéaire Cas d’éclatement 0 1 2 m 2iN-1 P Collision sur une case m La donnée est rangée en débordement selon chaînage séparé : une liste linéaire chaînée de données Eclatement de la case P (avec les données en débordement) avec la fonction hi+1

  7. Hachage Linéaire Cas d’éclatement 0 1 2 m1 2iN-1 2iN P Une nouvelle case est rajoutée P  P +1 (prochaine case à éclater )

  8. Hachage Linéaire Principe d’éclatement A chaque collision sur une case m : Si m<> P : ranger la donnée en débordement (case m) Fsi Éclater la case P P  P + 1 Si P = 2iN P  0 i i + 1 Indice de la dernière case rajoutée = 2iN + P Indice de la prochaine case à rajouter = 2iN + P + 1

  9. Hachage Linéaire Recherche d’une donnée d • m  hi(d) • Si m < P • m  hi+1(d) • Fsi Rechercher la donnée dans la case m • Si d n’est pas dans m et m Pleine: • rechercher dans la liste des débordements

  10. Hachage Linéaire Implémentation N Niveau 0 2N Niveau 1 4N Niveau 2 8N Niveau 3 . . .

  11. Hachage Linéaire Implémentation Table Taille :M Correspondance: Indice dans Table = m Div M Déplacement dans le maillon = m Mod M . . .

  12. Hachage Linéaire Performances De l’ordre d’une comparaison pour recherche une donnée quelque soit la taille du fichier Données dynamiques Pas d’ordre

More Related