Structures de données et algorithmes

Quelle description d'une collision dans une table de hachage est correcte ?

  1. ALe fait de pouvoir retrouver la clé d'origine à partir de sa valeur de hachage
  2. BLe fait que des clés différentes donnent la même valeur de hachage (la même position de stockage)
  3. CLe fait qu'une même clé donne une valeur de hachage différente à chaque exécution du programme
Afficher la réponse et l'explication

Réponse : B. Le fait que des clés différentes donnent la même valeur de hachage (la même position de stockage)

Une table de hachage calcule une position de stockage à partir de la clé au moyen d'une fonction de hachage, ce qui permet la recherche, l'insertion et la suppression en O(1) en moyenne. Comme il existe beaucoup plus de clés possibles que d'emplacements dans la table, il est impossible d'éviter que des clés différentes tombent sur la même position (collision). On traite donc les collisions par des méthodes comme le chaînage, qui relie en liste les éléments d'une même position, ou l'adressage ouvert, qui cherche une autre position libre. Une même clé doit toujours donner la même valeur de hachage, sinon la recherche échouerait ; quant à la possibilité de retrouver la clé à partir de la valeur de hachage, c'est une propriété qui compte pour l'usage cryptographique, pas une collision.

S'entraîner sur ce thème Retour au thème

Autres questions sur Structures de données et algorithmes

  1. On range dans cet ordre les clés 10, 17, 24 et 3 dans une table de hachage de taille 7 (positions 0 à 6) avec la fonction de hachage h(k) = k mod 7. Les collisions sont résolues par sondage linéaire, qui avance d'une position à la fois (en revenant de 6 à 0) pour trouver un emplacement libre. À quelle position la clé 3 est-elle rangée ?
  2. Quelle comparaison du chaînage (relier par une liste chaînée les éléments d'une même position) et de l'adressage ouvert (chercher une autre position libre dans la table), comme méthodes de résolution des collisions d'une table de hachage, est correcte ? Le facteur de charge est le nombre d'éléments stockés divisé par la taille de la table.
  3. Quelle condition est nécessaire pour utiliser la recherche dichotomique, qui compare la cible à l'élément du milieu et réduit de moitié l'intervalle de recherche à chaque fois ?
  4. On effectue une recherche dichotomique parmi 1000 valeurs distinctes triées par ordre croissant. Si une comparaison indique si les valeurs sont égales, plus petites ou plus grandes, quel est le nombre maximal de comparaisons, en comptant les recherches réussies comme infructueuses ?
  5. Une recherche dichotomique cherche 38 dans le tableau croissant a[0] à a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60. L'intervalle de recherche commence avec lo = 0 et hi = 9, et la position du milieu vaut (lo + hi) ÷ 2 arrondi à l'entier inférieur. Quelle liste donne, dans l'ordre, les éléments comparés à 38 ?