IN 101 - Cours 1025 novembre 2011pr´esent´e parMatthieu FiniaszUn probleme concretLa recherche en tableLe probl`eme : retrouver une information `a partir d’une clef qui luiest associ´ee.Par exemple :dictionnaire : mot_ d´efinition,annuaire : nom_ adresse, t´el´ephone,biblioth`eque : num´ero_ ouvrage.Il faut les fonctionnalit´es suivantes :recherche,insertion,suppression.Quelle structure de donn´ees utiliser?_1Le probleme de larecherche en tableNotationsLes clefs forment un ensemble de m ´el´ements index´es de 0 `a m−110 47pour des mots de 10 lettres : m = 26 ≈ 2 .On veut g´erer n paires de la forme (clef,information)jamais deux clefs identiques,n≤ m mais en g´en´eral n≪ m.Nous allons voir plusieurs solutions. On s’int´eresse `a :la complexit´e spatiale du stockage,la´e temporelle de chaque op´erationinsertion, recherche, suppression._2Table a adressage direct0 1 2 3 4 5 6 m-1info info info2 3 6On utilise un tableau tab de taille mcomplexit´e spatiale en(m).en fait m×taille info ou m+n×taille info avec des pointeurs.Recherche return tab[clef];_complexit´e(1).Insertion tab[clef] = info;_complexit´e(1).Suppression tab[clef] = NULL;_complexit´e(1).3Table a adressage direct0 1 2 3 4 5 6 m-1info info info2 3 6On utilise un tableau tab de taille mcomplexit´e spatiale en(m).en fait m×taille info ou m+n×taille info avec des pointeurs.47mots de 10 lettres : m = 2mˆeme avec un seul bit d’information 16 To de stockage.. ...
_; On utilise un tableau<de taille complexiet spatiale en(a). en faita outaille infoa+
n
Recherche\A_a\U _;<0=lAL]( _ complexiet(1).
Insertion__;<0 lAL] , iUL[( = complexiet(1).
Suppression complexiet
_
_;<0=lAL] , UNL( (1).
a
taille
CEFSMEELcMddEPMLicMIe
info avec des pointeurs.
3
On utilise un tableau_;<de taillea complexiet spatiale en(a). en faitataille info oua+
n
mots de 10 lettres :a= 247 me^meavecunseulbitd’information
Unecomplexietspatialeen
CEFSMEELcMddEPMLicMIe
taille info avec des pointeurs.
_
16 To de stockage...
(a.ee)raetsribleelisatiqunpra
4
AMIRMcIRMMdbfMUeiMSSM
On utilise un tableau_;<de taillenet on ajoute leselments dans l’ordred’arreive.L’indicepltpaerimseesacere`.erbil complexiet spatiale en(n)_on ne peut pas faire moins.
Recherche_parcours de_;<usj’`quroat uver la clef complexiet(n).
Insertion__;<0p] , !=lAL"UL[)( i complexiet(1).
Suppression_p,iucrehacaldsegeecher complexiet(n).
recherche peralable (
n:)5
AMIRMcIRMMdbfMUeiMSSM
leau_;e taillenet on ajoute leselments dans On utilise un tab<d l’ordred’arreive.L’indiceppaltimersebrlie.re`eseca complexiet spatiale en(_on ne peut pas faire moins.
n:)
Larechercheesticitroplente cettetechniquen’estbonnequesil’onnefaitqu’inesrerdes elments sans les lire avecdescomparaisonscomplexesceladevienttropcuo^teux.
Lacomplexietdelarechercheestbonne, l’insertionesttropch`ere_trier l’ensemble d’un seul coup. onrendl’insertion/suppressionlogarithmiqueavecdesABR.
8
CEFSM LM
Onednitunefonction de hachageTde [0,asn0,[]1ad on utilise un tableau_;<de taillek, chaque(clef,information)vadanslacase_;<0T!=lAL]) _octnsietnulelef,de(c.rmatiionnf)o chaque case ient