Algorithmique TD6
L3 Informatique – ENS Cachan
25 octobre 2012
Exercice 1 Dans l’adressage ouvert, le sondage quadratique est d´efini comme suit :
h(k, i)=(h0(k) + c1·i+c2·i2) mod m,
o`u c1, c2sont des constantes, et mest la taille de la table de hachage.
Montrer qu’avec c1=c2=1
2et m= 2p,i7→ h(k, i) est une permutation pour tout k.
Exercice 2 1. Calculer la hauteur moyenne d’un ABR construit al´eatoirement.
Univers : Permutations de taille navec distribution uniforme.
Hauteur : Pour une permutation σ, hauteur de l’arbre obtenu par insertions
successives de σ(1), ..., σ(n).
(Indication : inspirez-vous de l’analyse du tri rapide).
2. Calculer le coˆut moyen d’une recherche fructueuse.
Exercice 3 Arbres AVL (Extrait Partiel 2006)
Un AVL est un arbre binaire de recherche (ABR) tel que pour chaque nœud de l’arbre, la diff´erence de hauteur
entre le sous-arbre gauche et le sous-arbre droit est d’au plus 1.
1. Soit nle nombre de nœuds et hla hauteur d’un AVL (la hauteur d’un arbre r´eduit `a sa racine est 1). Montrer
que Fh+2 1n2h1 o`u Fkest le k-i`eme nombre de Fibonacci avec F0= 0, F1= 1 et Fk+2 =Fk+1 +Fk
pour k0. Montrer que ces bornes sont atteintes.
Montrer que pour k0 on a Fk+2 φko`u φ= (1 + 5)/2.
En d´eduire que log2(n+1) hlogφ(n+1) et que la recherche dans un AVL se fait au pire en temps O(log(n)).
Pour les algorithmes, un nœud xd’un AVL sera repr´esent´e par une structure comportant
une cl´e, not´ee x·cle d’un type totalement ordonn´e (par exemple de type entier) ;
un sous-arbre gauche, not´e x·get un sous-arbre droit, not´e x·d;
la hauteur de l’arbre, not´ee x·h.
L’arbre vide est not´e NULL. On notera h(x) la hauteur d’un arbre xavec h(NULL) = 0. On notera n(x) le nombre
de nœuds d’un arbre x.
2. Le but de cette question est d’´ecrire une proedure ´equilibrer(x) pour transformer en AVL en temps constant
un ABR de racine xen supposant que ses deux sous-arbres sont des AVL et que la diff´erence de hauteur entre
les deux sous-arbres est d’au plus 2.
Proposer un r´equilibrage dans le cas o`u h(a·g)h(a·d) = 2. On pourra distinguer les cas h(a·g·g)h(a·g·d)
et h(a·g·g)< h(a·g·d). Illustrer les transformations sur des dessins. ´
Ecrire la proc´edure ´equilibrer(x).
3. ´
Ecrire un algorithme pour ins´erer une cl´e cdans un AVL xen temps au pire O(1+h(x)). Si x0est l’arbre obtenu,
comparer h(x0) et h(x). Justifier la correction de l’algorithme (on ne demande pas une preuve de programme).
Montrer que cet algorithme engendre au plus un r´e´equilibrage.
4. ´
Ecrire un algorithme pour supprimer une cl´e cdans un AVL xen temps au pire O(1 + h(x)). Justifier la
correction de l’algorithme (on ne demande pas une preuve de programme). Combien de r´equilibrages peuvent
ˆetre ecessaires ?
1
5. ´
Ecrire un algorithme qui r´ealise la fusion de deux AVL xet yet d’une cl´e cen supposant que toutes les cl´es
de xsont strictement inf´erieures `a cet que toutes les cl´es de ysont strictement sup´erieures `a c. Cet algorithme
devra fonctionner en temps O(1 + |h(x)h(y)|). Justifier.
6. ´
Ecrire un algorithme qui r´ealise la scission d’un AVL xen deux AVL yet zcontenant respectivement les cl´es
de xinf´erieures ou ´egales `a cpour yet strictement sup´erieures `a cpour z. Cet algorithme devra fonctionner en
temps O(1 + |h(x)|). Justifier.
Exercice 4(Arbres a-b). Les arbres a-b sont des arbres dont toutes les feuilles ont mˆeme profondeur, et le nombre de
fils d’un noeud varie entre aet b. On fixe a2 et b2a1. Un arbre aberifie les conditions suivantes :
1. Les feuilles ont toutes la mˆeme profondeur,
2. la racine a au moins 2 et au plus bfils,
3. les autres noeuds ont au moins aet au plus bfils.
Pour un sommet x, on note par d(x) le nombre de fils de x. On note par Ai(x) le i-`eme sous-arbre de x. Chaque
sommet xcontient d(x)balises, c-`a-d des cl´es k1< . . . < kd(x)1, avec la propri´et´e suivante : les cl´es des feuilles de
Ai(x) sont inf´erieures ou ´egales `a kipour i= 1 . . . d(x)1 ; et les cl´es des feuilles de Ai(x) sont strictement sup´erieures
`a ki1pour i= 2 . . . d(x). On notera ki(x) la i-`eme balise du sommet x.
1. Donner une borne sur la hauteur des arbres ab. Donner la complexit´e de la recherche d’un ´el´ement.
2. On consid`ere l’insertion des ´el´ements dans ces arbres. Montrer que une insertion peut violer les propri´et´es des
arbres ab.
3. Donner une proc´edure en O(log(n)) qui r´etablit ces propri´et´es apr`es une insertion.
4. D´efinir la suppression d’un ´el´ement en temps O(log(n)).
5. On se restreint aux arbres 2 4. On dit qu’un arbre est partiellement ´equilibr´e si au plus un sommet serifie
d(s) = 1 ou d(s) = 5, alors que pour les autres sommets s0, on a d(s0)∈ {2,3,4}.
On pose e(s) = min(d(s)2,4d(s)), l’´equilibre du sommet s. On obtient :
e(s) =
1 si d(s) = 1 ou d(s) = 5
0 si d(s) = 2 ou d(s) = 4
1 sid(s)=3.
L’´equilibre d’un arbre Aest alors la somme des ´equilibres de chaque sommet.
En utilisant ces d´efinitions, montrer que le coˆut amorti du r´e´equilibrage pour une suite d’insertion et de sup-
pression est constant.
Exercice 3 Soit Ul’ensemble des n-uplets dont les valeurs sont tir´ees de Zpet soit B=Zpavec ppremier. D´efinir
la fonction de hachage hb:U7→ Bpour bZpsur un n-uplet en entr´ee (a1, a1, . . . , an1) dans U, sous la forme
hb((a0, a1, . . . , an1)) =
n1
X
j=0
ajbj,
et soit H={hb|bZp}. Montrer que Hest ((n1)/p)-universelle.
Exercice 4 On dit qu’une famille Hde fonctions de hachage reliant un ensemble fini U`a un ensemble fini Best
-universelle si, pour toute paire d’´el´ements distincts ket lde U,
Pr(h(k) = h(l)) ,
o`u la probabilit´e est d´efini par le tirage al´eatoire uniform de la fonction de hachage hdans la fammille H. Montrer
qu’une telle famille doit v´erifier :
1
|B|1
|U|.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !