From 2c03f8ba7a169b83108d2799c1ad8d693ef374c9 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Fri, 21 Feb 2025 09:09:54 +0100 Subject: [PATCH] added exs --- slides/cours_14.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/slides/cours_14.md b/slides/cours_14.md index 3d47804..b57bb9b 100644 --- a/slides/cours_14.md +++ b/slides/cours_14.md @@ -187,6 +187,8 @@ bool binary_get2(int n, key_value_t table[n], key_t key, value_t *value) { # Transformation de clé (hashing) +\footnotesize + ## Problématique: Numéro AVS (13 chiffres) * Format: 106.3123.8492.13 @@ -572,3 +574,36 @@ Avantages: * 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*} +* La fonction de hachage est donc $h(k)=(h(k)+h_2(k)) \% 13$ en cas de + collision. + +# 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. +$$ -- GitLab