Changes between Version 22 and Version 23 of CaoCourseTme2


Ignore:
Timestamp:
Feb 16, 2007, 8:04:24 PM (18 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme2

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