Chapitre 6 hachage statique

Click here to load reader

  • date post

    24-Jul-2015
  • Category

    Education

  • view

    104
  • download

    0

Embed Size (px)

Transcript of Chapitre 6 hachage statique

  • CHAPITRE VI:

    HACHAGE STATIQUE

    Universit Saad Dahlab de Blida

    Facult des Sciences

    Dpartement dInformatique

    Licence dInformatique

    Semestre 4 (2me anne)

    Algorithmique et Structures de Donnes

    Mme AROUSSI

    2014-2015

    Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

  • Introduction

    Principe du hachage

    Terminologie

    Fonctions de Hachage

    Mthodes de rsolution de collisions

    Estimation des dbordements

    Conclusion

    2

    PLAN DU CHAPITRE V

  • 3

    Problmatique: Supposons que l'on veuille ranger

    des donnes (enregistrements) qui arrivent dans un

    ordre quelconque dans un tableau.

    Solutions Possibles: Il existe, en gnral, deux faons

    de les ranger :

    1. Si le tableau est non ordonn alors

    Recherche est squentielle O(n) Lent

    Insertion se fait la fin du tableau O(1) Rapide

    INTRODUCTION

  • 4

    Solutions Possibles: Il existe, en gnral, deux faons

    de les ranger :

    1. Si le tableau est non ordonn alors

    Recherche est squentielle O(n) Lent

    Insertion se fait la fin du tableau O(1) Rapide

    2. Si le tableau est ordonn alors

    Recherche est dichotomique O(Log2(n)) Rapide

    Insertion provoque un dcalage des lments du tableau O(n)

    Lent

    INTRODUCTION

  • 5

    Une troisime possibilit de ranger une donne dans un

    tableau :

    Ranger la donne x un emplacement y calcul par une

    fonction h tel que y = h(x)

    On parle ici de table de rangement dispers ou technique de

    HACHAGE ( en anglais "Hashing" ).

    Dans ce type de rangement, que ce soit pour insrer ou

    rechercher une donne, on procdera toujours aussi rapidement (

    O(c) )

    INTRODUCTION

  • 6

    PRINCIPE

    x2

    x4

    x8

    x6

    x5

    x1

    x3

    x7

    x3 x8

    x5

    x2

    x1 x7

    x4

    x6

    0

    1

    2

    3

    4

    5

    6

    ..

    N-1

    ..

    ..

    Table de

    Hachage TH

    h(x)

    Donnes stocker

    Rangement par

    calcul d'adresse

    La fonction h doit

    retourner des valeurs

    comprises entre 0 et N-1

    Le calcul d'adresse permet de stocker des

    donnes (x) dans une table (TH) de

    taille N, en utilisant une fonction (h)

    x5 ?

  • 7

    La fonction h est appel fonction de hachage.

    Ladresse primaire (h(x)) dune donne x est le rsultat

    retourn par la fonction de hachage h

    Les synonymes sont les donnes qui ont la mme adresse

    primaire, i.e. x1 et x2 sont des synonymes ssi h(x1) = h(x2). On

    dit aussi que x1 et x2 sont en collisions.

    On parle de dbordement lorsquil y a une donne qui nest

    pas dans son adresse primaire. On dit aussi qu'elle est range

    dans une adresse secondaire.

    Ladresse secondaire est dtermin par une mthode donne,

    on parle de mthode de rsolution de collisions

    TERMINOLOGIE

  • 8

    PRINCIPE

    x2

    x4

    x8

    x6

    x1

    x3

    x7

    x3 x8

    x5

    x2

    x1 x7

    x4

    x6

    0

    1

    2

    3

    4

    5

    6

    ..

    N-1

    ..

    ..

    Table de

    Hachage T

    h(x)

    Donnes stocker

    Rangement par

    calcul d'adresse

    Pour utiliser une technique de hachage, on doit

    donc dfinir:

    1. une fonction de hachage h

    2. une mthode de rsolution des collisions

    x5 ?

  • 9

    Il sagit de trouver une fonction h tels que 0 h(x) < N qui

    rduit au maximum le nombre de collisions.

    L'idal, c'est d'avoir une fonction de hachage bijective c'est dire

    une fonction qui attribue pour chaque donne insrer un

    nouvel emplacement dans le tableau.

    Le pire des cas, c'est lorsque toute donne est hache en une

    mme adresse.

    Une solution acceptable est une solution o certaines donnes

    partagent la mme adresse (h est surjective).

    FONCTIONS DE HACHAGE

  • 10

    Il existe plusieurs fonctions de hachage, les plus utilises:

    1. La fonction de division

    2. La fonction dite du milieu du carr middle square

    3. La fonction dite du transformation radix

    FONCTIONS DE HACHAGE

  • 11

    1. La fonction de division: h(x) = x MOD N

    Elle retourne le reste de la division par N o N est la taille de la

    table

    Cest une fonction facile et rapide calculer mais sa qualit

    dpend de la valeur de N.

    Il est dmontr que :

    c'est trs mauvais de choisir N une puissance de 2.

    N premier constitue gnralement un bon choix.

    FONCTIONS DE HACHAGE

  • 12

    1. La fonction de division: h(x) = x MOD N

    Exemple: calculer la fonction de hachage des donnes

    suivantes:

    FONCTIONS DE HACHAGE

    X N = 10 N = 11

    5 5 5

    55 5 collision 0

    23 3 1

    453 3 collision 2

    Pas de collisions dans le cas o N=11 car N est un

    nombre premier

  • 13

    2. La fonction du milieu du carr middle square

    On lve la donne x au carr x2 et on prend les chiffres du milieu

    Cette mthode donne de bons rsultats si le nombre au carr na

    pas de zros.

    Exemple: calculer la fonction de hachage des donnes suivantes :

    FONCTIONS DE HACHAGE

    X X2 N = 10 N = 100

    500 250000 0 0

    12 144 4 14 ou 44

    453 205209 5 ou 2 52

  • 14

    3. La fonction de transformation radix : h(x) = (x)b MOD N

    On convertit la donne x dans une base de numration b et

    on prend le reste de la division sur N .

    Exemple: calculer la fonction de hachage des donnes suivantes

    dans le cas o b = 11 et N = 10 ou 100 :

    FONCTIONS DE HACHAGE

    X10 X11 N = 10 N = 100

    12 11 1 11

    453 382 2 82

  • 15

    En conclusion, il ny a pas de fonction de hachage

    universelle.

    Cependant, une bonne fonction doit tre:

    rapide calculer

    rpartit uniformment les lments

    Elle dpend donc:

    de la machine

    des lments

    Mais aucune fonction nvite les collisions, quil va falloir

    traiter.

    FONCTIONS DE HACHAGE

  • 16

    Exercice 1: Soit E = {a, b, c, d, e, f, g, h} un ensemble

    denregistrement. On veut insrer ces enregistrements dans une

    table de hachage de 10 cases selon leur cl:

    1. Calculer ladresse primaire de chaque enregistrement dans les cas

    o la fonction de hachage est une fonction :

    a. De division, i.e : h(x) = x MOD N

    b. Du milieu du carr, i.e on lve la donne x au carr x2 et on

    prend le chiffre du milieu

    c. De transformation radix, i.e : (x)b MOD N et b = 11

    FONCTION DE HACHAGE

    Enregistrement a b c d e f g h

    Cl 5 51 23 453 500 12 38 42

  • 17

    Exercice 1: Soit E = {a, b, c, d, e, f, g, h} un ensemble

    denregistrement. On veut insrer ces enregistrements dans une

    table de hachage de 10 cases selon leur cl:

    1. Calculer ladresse primaire de chaque enregistrement

    FONCTIONS DE HACHAGE

    Enregistrement a b c d e f g h

    Cl ou x 5 51 23 453 500 12 38 42

    x MOD N 5 1 3 3 0 2 8 2

    Milieu du

    carr

    2 6 2 5 0 4 4 7

    5 0 2 6

    (x)11 MOD N 5 7 1 2 5 1 5 9

  • 18

    Lors de l'insertion de x, si l'adresse primaire h(x) est dj

    utilise par une autre donne, la mthode de rsolution

    de collision permet de trouver un autre emplacement

    (libre) pour x.

    MTHODES DE RSOLUTION DE COLLISIONS

  • 19

    Pour rsoudre les collisions, deux stratgies se

    prsentent:

    a. Les mthodes directes ou le hachage par calcul de

    lemplacement:

    1. Essai linaire

    2. Double hachage

    b. Les mthodes indirectes ou le hachage par chainage:

    3. Chainage spare

    4. Chainage interne

    MTHODES DE RSOLUTION DE COLLISIONS

  • 20

    1. Essai linaire:

    Sil se produit une collision sur la case h(x), on essaie les

    cases qui la prcdent : h(x)-1, h(x)-2, h(x)-3,..., 0, N-1,

    N-2, , jusqu' trouver une case vide.

    La rencontre d'une case vide indique que la donne

    n'existe pas.

    Il faudra sacrifier une case vide dans la table de hachage

    pour que la squence de test soit finie.

    MTHODES DE RSOLUTION DE COLLISIONS

  • 21

    1. Essai linaire: Exercice 1 (Question2. a):

    MTHODES DE RSOLUTION DE COLLISIONS

    Enregistrement a b c d e f g j

    h (x) 5 1 3 3 0 2 8 2

    Indice Vide enregistrement

    0 V

    1 V

    2 V

    3 V

    4 V

    5 V

    6 V

    7 V

    8 V

    9 V

    Etat initial de Table de Hachage

    Indice Vide enregistrement

    0 V

    1 F b

    2 V

    3 F c

    4 V

    5 F a

    6 V

    7 V

    8 V

    9 V

    Aprs linsertion de a, b et c

  • 22

    1. Essai linaire: Exercice 1 (Question2. a):

    MTHODES DE RSOLUTION DE COLLISIONS

    Enregistrement a b c d e f g j

    h (x) 5 1 3 3 0 2 8 2

    Indice Vide enregistrement

    0 V

    1 F b

    2 F d

    3 F c

    4 V

    5 F a

    6 V

    7 V

    8 V

    9