1 / 16

Chapitre V. Tables de hachage

Chapitre V. Tables de hachage. Adressage direct et dispersé Tables de hachage. Tables de hachage. Adressage direct Supposons un ensemble dynamique des éléments munis des clés. Les clés sont prises dans l’univers U={0,1,…m-1}. Deux éléments ne peuvent pas partager la même clé.

talia
Download Presentation

Chapitre V. Tables de hachage

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. Chapitre V. Tables de hachage Adressage direct et dispersé Tables de hachage

  2. Tables de hachage • Adressage direct • Supposons un ensemble dynamique des éléments munis des clés. • Les clés sont prises dans l’univers U={0,1,…m-1}. Deux éléments ne peuvent pas partager la même clé. • Pour représenter l’ensemble dynamique, on utilise un tableau « table à adressage direct » T[0, …,m-1] : • - Chaque position correspond à une clé dans l’univers U.

  3. Tables d’adressage direct données clé U 0 3 1 1 0 K clés réelles 1 2 2 2 7 4 3 5 4 4 6 5 6 La cellule T[k] pointe sur l’élément d’ensemble ayant pour clé k Si l’ensemble ne contient aucun élément de clé k alors T[k]=nil 7 7

  4. Adressage direct • Les opérations de recherche, de suppression, d’insertion sont de O(1) • Rechercher (T,k) • Retourner T[k] • Insérer(T,x) • T[clé(x)]:=x • Supprimer(T,x) • T[clé(x)]:=nil • Exemple : stockage des données dans un tableau T[0,…,M] des entiers. nil= -1

  5. Adressage direct • Inconvénients : • 1)si card(K)<<card(U), alors la majeure partie de T est allouée inutilement. • 2) Si card (U) est très grand – il est difficile de maintenir physiquement • T[0, …, card(U)] • Exemple : nombre de mots de la langue française ayant 5 caractères. • Table de hachage.

  6. Table de hachage(1) • Fonction d’hachage : associe à chaque clé un entier compris entre 0 et m-1 • Pour tout clé x, h(x) appelée valeur de hachage primaire, donne l’indice de la place de x dans un tableau T de m éléments. • L’objectif : répartition uniforme, en terme de probabilité :

  7. 0 1 2 3 4 5 6 Fonctions de hachage(1) • Hachage par division • Exemple : K={1,8,4,7,49}, m=7 49 7 8 1 collision primaire : deux clés sont hachées dans la même case collision modulo : 4 mais

  8. Collisions primaires • Exemple : Si m est paire (taille de tableau), toutes les clés paires vont dans des indices paires du tableau et toutes les clés impaires – dans les indices impaires. Si la répartition des clés selon leur parité n’est pas uniforme – le remplissage n’est pas uniforme, les collisions primaires sont plus probables • Choix de m : nombre premier.

  9. Fonctions de hachage (2) • Hachage par multiplication. • Etant donnée un nombre réel • signifie qu’on garde la partie décimale • La taille de tableau est sans importance, mais • La valeur de est importante • Exemple :

  10. Méthodes de résolution des collisions • Méthode indirectes – méthodes par chainage U K3 K clés réelles K1 K0 K4 K1 K2 K7 K4 K5 clé K6 K2 K7

  11. Méthodes par chaînage • Les opérations de recherche, de suppression, d’insertion • Rechercher (T,k) • Recherche un élément de clé k dans la liste T[h(k)] • Insérer(T,x) • Insère x en tête de la liste T[h(clé(x))] • Supprimer(T,x) • Supprime x de la liste T[h(clé(x))]

  12. Méthodes par chaînage(2) • Analyse de complexité • Le temps l’exécution de l’insertion O(1) dans le pire de cas (insertion dans la tête). • Recherche et suppression : complexité de la recherche séquentielle dans les listes • Facteur de remplissage - nombre moyen des éléments dans chaque liste • Dans le cas de hachage uniforme simple (chaque élément a la même probabilité d’être haché dans la même case), une recherche négative prend en moyenne un temps en

  13. Méthodes directes(1) • Principe :les données sont rangées dans le tableau – même et non pas dans des listes dynamiques. • Résolution des collisions par calcul à l’intérieur du tableau. • Principe des essais successifs • Algorithme • Essai 1 : indice(x)= h(x) – hachage primaireSi collision alors essai2(x) • Si collision alors essai3(x) • etc.. Jusqu’à épuiser toutes les possibilités.

  14. Méthodes directes(2) • Hachage linéaire : • Si il y a une collision à l’indice v on essaie la case d’indice v+1,… • Si on est à la fin du tableau (v=m), on recommence au début • Fin de placement : soit on a trouvé une case vide soit les m essai ont été infructueux.

  15. 0 1 2 3 4 5 6 Hachage linéaire e8 • Soient les éléments : • e1,e2,e3,e4,e5,e6,e7,e8,e9 • leurs valeurs de hachage : • 6, 4, 7, 4, 8, 2, 5, 9, 8 e9 e6 e2 e4 e1 7 e3 8 e5 e7 9

  16. Hachage linéaire • Fonction Rechercher_HL(x:Element, t: tab): entier • Var i, v : entiers; • trouve : booléen • Début • i:=1,v:=h(x) • Si vide (T,v) alors retourner -1; • sinon • Si T[v]=x alors retourner v; • sinon • i:=1, trouve := faux; • TQ (trouve=faux et i<m et vide(T,v)=faux) • …..{ Complétez!} • FTQ • FSi • FSi • Si trouve=vrai alors retourner V; • sinon retourner -1; • FSi • Fin Rechercher_HL

More Related