58 | | par sa clé, en essayant d'éviter de parcourir l'ensemble de tous les éléments de |
59 | | cet ensemble en effectivement séquenciellement une comparaison sur la valeur de |
60 | | la clé pour chaque élément de l'ensemble. |
61 | | |
62 | | On accède donc à un élément à partir de sa clé. Les deux principales actions |
63 | | sont l'ajout d'un élément (add) et la recherche d'un élément (get). |
| 58 | par sa clé. |
| 59 | |
| 60 | Pour représenter un ensemble de couple (clé, valeur) la méthode la plus simple |
| 61 | consiste à les réunir dans une liste chainée. |
| 62 | La recherche d'un élément se fait alors par un parcours de la liste, donc de |
| 63 | l'ensemble des éléments. |
| 64 | Cette solution n'est évidemment pas satisfaisante si le nombre d'élément est |
| 65 | grand. |
| 66 | |
| 67 | Pour accélérer la recherche, on créé un tableau de listes chainées. Le nombre de |
| 68 | cases de ce tableau doit être de l'ordre de grandeur du nombre maximal d'éléments |
| 69 | que l'on souhaite gérer. Si on veut gérer 1000 éléments, il faut un tableau |
| 70 | d'environ 1000 cases. |
| 71 | On définit ensuite une fonction, que l'on nomme fonction de hachage, donnant |
| 72 | un index de case à partir de la clé d'un élément. |
| 73 | Un élément doit être rangé dans la liste chainée associée à la case définie par la fonction de hachage |
| 74 | appliquée sur la clé de cet élément. |
| 75 | |
| 76 | Pour que cette méthode soit efficace, il faut que les éléments se répartissent |
| 77 | aussi uniformément que possible dans les différentes cases de la table. |
| 78 | Il existe plusieurs méthodes de calcul de l'index, nous vous |
| 79 | donnons celle proposé par Donald Knuth. |
| 80 | Dans la pratique, il n'est pas possible d'éviter les collisions. |
| 81 | Cela signifie que deux éléments de clés différentes peuvent avoir |
| 82 | le même index de hachage. |
| 83 | |
| 84 | En résumé, pour ranger 1000 éléments, on fabrique un tableau de 1000 listes chainées avec l'espoir |
| 85 | que la plupart des listes ne contiendront qu'un seul élément et qu'il n'y aura |
| 86 | qu'un tout petit nombre de listes contenant plus d'un élément. |
| 87 | |
| 88 | La propriété principale d'une table de hachage est que si la taille de la table |
| 89 | est du même ordre de grandeur que le nombre d'éléments présents, le temps de |
| 90 | recherche est en O(1), c'est à dire indépendant du nombre d'éléments, (même pour |
| 91 | un million d'éléments). |
| 92 | |
| 93 | Les deux principales actions sont l'ajout d'un élément (add) et la recherche d'un élément (get). |