| 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). |