• Aucun résultat trouvé

TD11 : Structures de donn´ ees al´ eatoires 1 Tables de hachage

N/A
N/A
Protected

Academic year: 2022

Partager "TD11 : Structures de donn´ ees al´ eatoires 1 Tables de hachage"

Copied!
2
0
0

Texte intégral

(1)

Algorithmique avanc´ ee 2018-2019

TD11 : Structures de donn´ ees al´ eatoires 1 Tables de hachage

Un dictionnaire est une structure de donn´ ees dont la fr´ equence de modifications est tr` es faible devant la fr´ equence des consultations. Par exemple, les correcteurs orthographiques des traitements de texte ont recours ` a un dictionnaire.

Dans la suite, on s’int´ eresse ´ a des dictionnaires implement´ es par des tables de hachage. Dans la mesure o` u les donn´ ees du dictionnaire sont pratiquement inchang´ ees durant une longue p´ eriode, il est int´ eressant de choisir la fonction de hachage parmi un ensemble de fonctions de telle sorte qu’il n’y ait pas de collisions.

Supposons par la suite que les identifiants sont n valeurs num´ eriques comprises entre 0 et p − 1, avec p premier. Nous d´ esirons stocker ce dictionnaire dans une table de hachage ` a m entr´ ees, avec m ≤ p.

La fonction de hachage que nous recherchons se trouve parmi l’ensemble H = {h a,b | 0 < a < p∧0 ≤ b < p}

o` u h a,b (x) = ((ax + b mod p) mod m) + 1

On identifiera dans la suite la fonction h a,b ` a la paire (a, b).

Question 1 : Soient i et j deux identifiants diff´ erents et h a,b ∈ H . Montrer que ai + b 6≡ aj + b mod p.

Question 2 : Soient i et j deux identifiants diff´ erents. Montrer que

∀0 ≤ u 6= v < p, ∃!h a,b ∈ H t.q. (ai + b ≡ u mod p) ∧ (aj + b ≡ v mod p)

Question 3 : On suppose toujours i 6= j. Montrer que |{h a,b | h a,b (i) = h a,b (j)}| ≤ p(p−1) m . Question 4 : En d´ eduire que q = P

i<i

0

|{(a, b) | h a,b (i) = h a,b (i 0 )}| le nombre total des collisions v´ erifie q ≤ n(n−1) 2 p(p−1) m .

Question 5 : Soit m = n 2 . Montrer que |H 0 | < 1 2 |H |, o` u H 0 est le sous-ensemble de fonctions qui produisent au moins une collision.

Question 6 : Donner un algorithme probabiliste pour trouver une fonction de hachage sans collisions.

Analyser l’algorithme en temps et en espace.

La table de hachage pr´ ec´ edente a n 2 entr´ ees. Nous allons obtenir un meilleur r´ esultat avec un double hachage. Le double hachage op` ere de la fa¸ con suivante :

— Chaque entr´ ee de la table de hachage primaire est une r´ ef´ erence vers une table de hachage secon- daire.

— Chaque table de hachage secondaire poss` ede sa fonction de hachage propre. On note h i la fonction de hachage associ´ ee ` a l’entr´ ee i de la table primaire et m i la taille de la table de l’entr´ ee i.

— Lorsqu’un nouvel identifiant id est ajout´ e ` a la table on calcule i = h(id) puis j = h i (id) afin de d´ eterminer dans quelle entr´ ee de la table de hachage r´ ef´ erenc´ ee depuis l’entr´ ee i, il doit ˆ etre ins´ er´ e.

L’insertion se fait comme pour une table de hachage simple.

— La recherche et la suppression suivent un sch´ ema similaire.

Question 7 : Soit H 00 ⊆ H le sous-ensemble des fonctions de hachage qui produisent au moins n colli- sions. Montrer que, lorsque m = n, |H 00 | ≤ 1 2 |H|.

Question 8 : On choisit une fonction h / ∈ H 00 comme fonction de hachage primaire. Notons n i le nombre d’identifiants id du dictionnaire t.q. h(id) = i. En d´ eduire que P

i

n

i

(n

i

−1) 2 < n.

Question 9 : Comment peut-on choisir les fonctions de hachage secondaires ? Quelle est la taille de cette table de hachage ?

1

(2)

Algorithmique avanc´ ee 2018-2019

2 Arbres binaires de recherche

Un arbre binaire de recherche (ABR) est un arbre binaire dans lequel chaque nœud n poss` ede un identifiant id et tel que

— chaque nœud du sous-arbre gauche de n a un identifiant inf´ erieur ` a id

— chaque nœud du sous-arbre droit de n a un identifiant sup´ erieur ` a id

Pour appr´ ecier l’int´ erˆ et des arbres, il faut proc´ eder ` a une analyse probabiliste de la profondeur des nœuds, vue comme une variable al´ eatoire. L’hypoth` ese probabiliste que nous faisons est :

L’arbre est obtenu par ajout successif de n nœuds, o` u le nœud ` a ajouter est ` a chaque fois choisi de mani` ere ´ equiprobable parmi les nœuds restants.

Dans la suite nous notons les identifiants des n nœuds par id 1 < . . . < id n . De plus pour 1 ≤ i < j ≤ n :

— X i,j d´ esigne la v.a. qui vaut 1 si id i et id j ont ´ et´ e compar´ es et 0 sinon.

— p(i) d´ esigne la v.a. correspondant ` a la profondeur de id i (on suppose que la profondeur de la racine est 1, la profondeur de ses fils est 2 et ainsi de suite).

— p m = n 1 P n

i=1 p(i) d´ esigne la v.a. correspondant ` a la profondeur moyenne d’un identifiant dans un arbre al´ eatoire.

— p max = max({p(i) | 1 ≤ i ≤ n}) d´ esigne la v.a. correspondant ` a la profondeur d’un arbre al´ eatoire.

Question 1 : Soit 1 ≤ i < j ≤ n. Montrer que les identifiants id i et id j seront compar´ es si et seulement si l’un des deux est le premier ` a ˆ etre ins´ er´ e parmi l’ensemble des identifiants compris entre id i et id j (i.e.

parmi ID(i, j) = {id i , id i+1 , . . . , id j−1 , id j }).

Question 2 : Montrer que p m = 1 + n 1 P

i<j X i,j . Question 3 : Calculer E (X i,j ).

Question 4 : Montrer que E (p m ) = −3 + 2(1 + n 1 ) P n k=1

1 k .

Question 5 : Montrer que 2(1 + n 1 ) ln(n + 1) − 3 ≤ E (p m ) ≤ 2(1 + n 1 )(1 + ln(n)) − 3.

Question 6 : Quelle est la complexit´ e d’une recherche fructueuse (en supposant que les identifiants sont recherch´ es avec la mˆ eme probabilit´ e) ?

Question 7 : Dans ce qui suit, on note p n la v.a. p max d’un arbre obtenu par ajout al´ eatoire de n identifiants et f n = 2 p

n

la profondeur exponentielle de l’arbre. Notons f n,i la v.a. repr´ esentant la profondeur exponentielle sachant que le premier identifiant ins´ er´ e est id i . Montrer que

f n,i = 2 1+M ax(p

i−1

,p

n−i

) et que

f n,i ≤ 2(f i−1 + f n−i ) .

Question 8 : Montrer que E (f n ) ≤ n 4 P n−1 i=0 E (f i ).

Question 9 : Conclure que ∀n, E (f n ) ≤ n 3 + 1.

Question 10 : Conclure que une borne pour ∀n > 1, E (p n ) ≤ 6.log(n).

2

Références

Documents relatifs

// renvoie un arbre de racine e ayant l et r pour fils gauche et droit Element root(BTree bt); // renvoie l’´ el´ ement ` a la racine de l’arbre BTree leftChild(BTree bt); // renvoie

L’opération estVide teste si la file avec priorité est vide ou pas, l’opération ajouter insère dans la file un nouvel élément avec sa priorité, l’opération premier

Écrivez maintenant la méthode de tri fusion, qui divise la liste en deux listes de taille égale, trie les sous-listes récursivement puis les fusionnent avec la méthode

Les pre- mières division d’un arbre sont utilisées pour construire une variable synthétique intégrée à une régression logistique afin de sélectionner les quelques

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

[r]

Complexit´ e des op´ erations pr´ ec´ edentes Pour un arbre binaire de taille n,. la complexit´ e dans le pire des

d- En supposant qu’il existe une fonction point/2 qui permette de dessiner un point de coordonn´ ees (x, y), d´ efinir une fonction qui dessine la repr´ esentation graphique