From 18818f34d642c44d2ed3f056e95a0915cd0dbd61 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Tue, 11 Jan 2022 19:44:06 +0100 Subject: [PATCH] added exercises --- slides/cours_13.md | 93 +++++++++++++++++++++++++++++++++++++++ slides/figs/fig_hash.png | Bin 0 -> 18046 bytes 2 files changed, 93 insertions(+) create mode 100644 slides/figs/fig_hash.png diff --git a/slides/cours_13.md b/slides/cours_13.md index 45b0982..d3d4d0c 100644 --- a/slides/cours_13.md +++ b/slides/cours_13.md @@ -515,8 +515,101 @@ J_3 = 109 Delta = 2 d_3 = 7 / J_4 = 116 +-------------------------------------- J_{i+1} = J_i + d_i, d_{i+1} = d_i + Delta, d_0 = 1, i > 0. ``` +# Méthode de chaînage + +## Comment ça marche? + +* Chaque index de la table contient un pointeur vers une liste chaînée + contenant les paires clés-valeurs. + +## Un petit dessin + +``` + + + + + + + + + + + +``` + +# Méthode de chaînage + +## Exemple + +On hash avec la fonction `h(key) = key % 11` (`key` est le numéro de la lettre +de l'alphabet) + +``` + U | N | E | X | E | M | P | L | E | D | E | T | A | B | L | E + 10 | 3 | 5 | 2 | 5 | 2 | 5 | 1 | 5 | 4 | 5 | 9 | 1 | 2 | 1 | 5 +``` + +## Comment on représente ça? (à vous) + +. . . + +{width=80%} + +# Méthode de chaînage + +Avantages: + +* Si les clés sont grandes l'économie de place est importante (les places vides + sont `NULL`). +* La gestion des collisions est conceptuellement simple. +* Pas de problème de regroupement (clustering). + +# Exercice 1 + +* Construire une table à partir de la liste de clés suivante: + ``` + R, E, C, O, U, P, A, N, T + ``` + +* On suppose que la table est initialement vide, de taille $n = 13$. +* Utiliser la fonction $h1(k)= k \mod 13$ où k est la $k$-ème lettre de l'alphabet et un traitement séquentiel des collisions. + +# Exercice 2 + +* Reprendre l'exercice 1 et utiliser la technique de double hachage pour traiter + les collisions avec + +\begin{align*} +h_1(k)&=k\mod 13,\\ +h_2(k)=1+(k\mod 11). +\end{align*} + + +# Exercice 3 + +* Stocker les numéros de téléphones internes d'une entreprise suivants dans un +tableau de 10 positions. +* Les numéros sont compris entre 100 et 299. +* Soit $N$ le numéro de téléphone, la fonction de hachage est +$$ +h(N)=N\mod 10. +$$ +* La fonction de gestion des collisions est +$$ +C_1(N,i)=(h(N)+3\cdot i)\mod 10. +$$ +* Placer 145, 167, 110, 175, 210, 215 (mettre son état à occupé). +* Supprimer 175 (rechercher 175, et mettre son état à supprimé). +* Rechercher 35. +* Les cases ni supprimées, ni occupées sont vides. +* Expliquer se qui se passe si on utilise? +$$ +C_1(N,i)=(h(N)+5\cdot i)\mod 10. +$$ diff --git a/slides/figs/fig_hash.png b/slides/figs/fig_hash.png new file mode 100644 index 0000000000000000000000000000000000000000..92e82b5949e733c846b92a3d6daa7601db740a4e GIT binary patch literal 18046 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 literal 0 HcmV?d00001 -- GitLab