Module AlgoAv Structures de donn´
ees avanc´
ees – page 1/10
Structures de donn´
ees avanc´
ees
TD Semaines 1 – 3
Version du 20 septembre 2012
1 Rappels : notations asymptotiques
Exercice 1 – Notations de Landau
1. Rappeler les d´
efinitions des notations de Landau, O,et Θ, pour les fonctions `
a valeur dans R
+.
2. Montrer que si fO(g), alors O(f)O(g), et O(max(f, g)) = O(g),
o`
umax(f, g)v´
erifie : xR, max(f, g)(x) = max(f(x), g(x)).
3. Montrer que O(f+g) = O(max(f, g)).
4. Montrer que : n
X
p=1
pk= Θ(nk+1).
Exercice 2 – Complexit´
e dans le pire des cas
1. Si je prouve que la complexit´
e dans le pire des cas d’un algorithme est en O(n2), est-il possible qu’il soit en O(n)
sur certaines donn´
ees ?
2. Si je prouve que la complexit´
e dans le pire des cas d’un algorithme est en O(n2), est-il possible qu’il soit en O(n)
sur toutes les donn´
ees ?
3. Si je prouve que la complexit´
e dans le pire des cas d’un algorithme est en Θ(n2), est-il possible qu’il soit en O(n)
sur certaines donn´
ees ?
4. Si je prouve que la complexit´
e dans le pire des cas d’un algorithme est en Θ(n2), est-il possible qu’il soit en O(n)
sur toutes les donn´
ees ?
Exercice 3 – Classement de fonctions
Sur une ´
echelle croissante, classer les fonctions suivantes selon leur comportement asymptotique : c’est-`
a-dire g(n)suit
f(n)si f(n) = O(g(n)).
f1(n)=2n f2(n)=2nf3(n) = log(n)f4(n) = n3
3
f5(n) = n!f6(n) = log(n)2f7(n) = nnf8(n) = n2
f9(n) = n+ log(n)f10(n) = n f11(n) = log(n2)f12(n) = en
f13(n) = n f14(n) = plog(n)f15(n)=2log2(n)f16(n) = nlog(n)
c
2011-2012 (by UPMC/Master STL/AlgoAv) 20 septembre 2012
Module AlgoAv Structures de donn´
ees avanc´
ees – page 2/10
2 Coˆ
ut amorti
Dans l’analyse de structure de donn´
ees, on s’int´
eresse `
a des s´
equences d’op´
erations. ´
Etudier le coˆ
ut pire-cas s´
epar´
e de
chacune des op´
erations est souvent trop pessimiste, car cela ne tient pas compte des r´
epercussions que chaque op´
eration
a sur la structure de donn´
ees. On s’int´
eresse donc au coˆ
ut amorti d’une suite de nop´
erations, qui est le coˆ
ut moyen d’une
op´
eration dans le pire des cas, et l’on se sert pour cela de deux m´
ethodes :
la m´
ethode par agr´
egat consiste `
amajorer le coˆ
ut de toute suite de nop´
erations effectu´
ees sur la structure, et `
a
diviser le coˆ
ut total ainsi obtenu par le nombre nd’op´
erations ;
la m´
ethode du potentiel consiste `
a introduire une fonction φ(Di)qui associe `
a l’´
etat Dide la structure de donn´
ees
apr`
es la i-i`
eme op´
eration un nombre r´
eel ; le coˆ
ut amorti ˆcide la i-i`
eme op´
eration est alors le coˆ
ut r´
eel ci, moins
la diff´
erence de potentiel dˆ
ue `
a l’op´
eration
ˆci=ci+φ(Di)φ(Di1); (1)
ainsi (puisque les φ(Di)s’annulent deux `
a deux dans la somme), le coˆ
ut amorti total est
n
X
i=1
ˆci= n
X
i=1
ci!+φ(Dn)φ(D0). (2)
Exercice 4 – Coˆ
ut amorti (piles avec multi-d´
epilement)
On consid`
ere les deux op´
erations fondamentales sur les piles, Empiler(S,x) et D´
epiler(S), auxquelles on ajoute
l’op´
eration MultiD´
epiler(S,k) qui retire les kpremiers objets du sommet de la pile si la pile contient au moins k
objets et vide la pile sinon.
1. Calculer le coˆ
ut amorti d’une op´
eration en utilisant la m´
ethode par agr´
egat.
2. Mˆ
eme question en utilisant la m´
ethode du potentiel.
Exercice 5 – Coˆ
ut amorti (piles avec multi-d´
epilement et multi-empilement)
Aux trois op´
erations pr´
ec´
edentes, Empiler(S,x),D´
epiler(S) et MultiD´
epiler(S,k), d´
efinies sur les piles,
on ajoute l’op´
eration MultiEmpiler(S,x1,x1,x2,. . .,xk), qui permet d’empiler les objets x1, x2, . . . , xksur la
pile. On distingue deux implantations diff´
erentes de cette pile qui induisent chacune une restriction suppl´
ementaire sur
l’op´
eration MultiEmpiler :
(a) le nombre d’objets que l’on peut empiler en une op´
eration est born´
e par une constante c;
(b) le nombre d’objets que l’on peut empiler `
a chaque fois est inf´
erieur ou ´
egal au nombre d’objets de la pile S, not´
e
|S|.
Il s’agit de calculer le coˆ
ut amorti d’une op´
eration dans le cas (a), puis dans le cas (b).
1. En utilisant la m´
ethode par agr´
egat.
2. En utilisant la m´
ethode du potentiel.
c
2011-2012 (by UPMC/Master STL/AlgoAv) 20 septembre 2012
Module AlgoAv Structures de donn´
ees avanc´
ees – page 3/10
Exercice 6 – Coˆ
ut amorti (tableaux dynamiques)
Une s´
equence de nop´
erations est effectu´
ee sur une structure de donn´
ees. La i-`
eme op´
eration coˆ
ute isi iest une puissance
de 2 et 1 sinon.
1. En utilisant la m´
ethode par agr´
egat, montrer que le coˆ
ut amorti par op´
eration est en O(1).
2. M´
ethode du potentiel.
Id´
ee : le potentiel croˆ
ıt pour chaque op´
eration peu coˆ
uteuse (i.e. lorsque in’est pas une puissance de 2) et retombe
`
a 0 pour chaque op´
eration coˆ
uteuse (i.e. lorsque iest une puissance de 2).
(a) Essai 1. Le potentiel croˆ
ıt de 1 pour chaque op´
eration peu coˆ
uteuse. Autrement dit :
φ(i) =
0si i= 0
φ(i1) + 1 si in’est pas une puissance de 2
0si iest une puissance de 2
Calculer le coˆ
ut amorti en utilisant cette fonction de potentiel. Le r´
esultat est-il satisfaisant ?
(b) Essai 2. Le potentiel croˆ
ıt de 2 pour chaque op´
eration peu coˆ
uteuse. Autrement dit :
φ(i) =
0si i= 0
φ(i1) + 2 si in’est pas une puissance de 2
0si iest une puissance de 2
Calculer le coˆ
ut amorti en utilisant cette fonction de potentiel. Le r´
esultat est-il satisfaisant ?
3. Donner un exemple d’une suite d’op´
erations ayant comme coˆ
ut le coˆ
ut d´
ecrit dans cet exercice (pr´
eciser la structure
de donn´
ees).
Chercher ´
eventuellement un exemple de coˆ
ut moyen facile a calculer puis faire un coˆ
ut amorti qu’on esp`
ere diff´
erent.
Exercice 7 – Coˆ
ut amorti (incr´
ementation d’un compteur)
Soit kun entier positif. On consid`
ere les entiers naturels inf´
erieur `
a2k.´
Etant donn´
e un tel entier x, son ´
ecriture en binaire
peut ˆ
etre stock´
ee dans un tableau A[0..k 1] ne contenant que des 0 et des 1 (le bit de poids le plus faible est stock´
e dans
A[0]). On d´
efinit l’op´
eration Incr´
ementer(A) comme suit :
Incr´
ementer(A)
i<-0;
tantque i<ketA[i]=1faire
A[i] <- 0
i <- i+1
fintantque
si i<kalors
A[i] <- 1
finsi
fin
1. Quel est l’effet de Incr´
ementer sur le tableau A?
2. Le coˆ
ut r´
eel de l’op´
eration Incr´
ementer est le nombre de bits qui changent. On consid`
ere une suite de nincr´
e-
mentations `
a partir de 0 (on suppose n < 2k). Calculer le coˆ
ut amorti de l’op´
eration Incr´
ementer :
(a) en utilisant la m´
ethode par agr´
egat ;
(b) en utilisant la m´
ethode du potentiel (une fois la fonction de potentiel choisie, il est conseill´
e de faire un tableau
coˆ
ut r´
eel/variation de potentiel/coˆ
ut amorti pour les premi`
eres incr´
ementations d’un compteur `
a 4 bits).
c
2011-2012 (by UPMC/Master STL/AlgoAv) 20 septembre 2012
Module AlgoAv Structures de donn´
ees avanc´
ees – page 4/10
3 Files de Fibonacci
Exercice 8 – D´
efinitions et propri´
et´
es des arbres binomiaux
On rappelle deux d´
efinitions ´
equivalentes des arbres binomiaux, qui ont ´
et´
e introduits dans le premier cours.
D´
efinition 1.
B0est l’arbre r´
eduit `
a un seul nœud ;
´
etant donn´
es deux arbres binomiaux Bk1, on obtient Bken faisant de l’un des Bk1le premier fils `
a la racine de
l’autre Bk1.
D´
efinition 2.
B0est l’arbre r´
eduit `
a un seul nœud ;
Bkest l’arbre dont la racine `
akfils : Bk1, ..., B0.
B0=
Bk= (, Bk1, . . . , B0)
Bk=
####
#
Bk1
Bk2. . .
c
c
c
c
c
B0
1. Prouver d’abord que ces deux d´
efinitions sont ´
equivalentes (un arbre obtenu `
a partir de la premi`
ere d´
efinition satisfait
la seconde d´
efinition, et vice-versa).
2. Montrer ensuite chacune de ces propri´
et´
es portant sur les arbres binomiaux en choisissant `
a chaque fois la d´
efinition
qui semble la plus pratique :
(a) Bka2knœuds ;
(b) la hauteur de Bkest k;
(c) il y a Ci
knœuds 1`
a la profondeur i(i= 0, . . . , k) ;
(d) la racine de Bkest de degr´
ek, sup´
erieur au degr´
e de n’importe quel autre nœud de Bk.
Conclusion. Comme la propri´
et´
e (d) remarque que le degr´
e (`
a la racine) de Bkest k, la propri´
et´
e (a) permet de conclure
que les arbres binomiaux ont une taille exponentielle en leur degr´
e; les propri´
et´
es (a) et (b) ensemble montrent que les
arbres binomiaux ont une hauteur logarithmique en leur taille. Ces deux constatations expriment le caract`
ere bien
´
equilibr´
es de ces arbres.
1. Ci
k, aussi not´
e, k
i, est un coefficient binomial d´
efini par Ci
k=
n!
k!(nk)! ;Ci
kcorrespond aussi au nombre de fac¸on de choisir k´
el´
ements
parmi n.
c
2011-2012 (by UPMC/Master STL/AlgoAv) 20 septembre 2012
Module AlgoAv Structures de donn´
ees avanc´
ees – page 5/10
Exercice 9 – Files binomiales relˆ
ach´
ees
Par d´
efinition, une file binomiale est compos´
ee de tournois binomiaux de tailles toutes diff´
erentes. `
A cause de cette
contrainte sur les tailles, l’union de deux files binomiales de tailles respectives net ma une complexit´
e en O(log(n+m))
et l’insertion d’un nouvel ´
el´
ement dans une file binomiale de taille na une complexit´
e en O(log(n)). On souhaite
maintenant avoir une structure plus souple dans laquelle on pourra r´
ealiser l’union et l’insertion en O(1), en reportant
les op´
erations coˆ
uteuses sur la suppression du minimum. Cela est possible en supprimant la contrainte sur les tailles.
1. (a) Rappeler les tailles des arbres binomiaux qui forment une file binomiale de taille n, et les degr´
es des diff´
erentes
racines. Quelle est la composition d’une file binomiale de taille 143 ?
(b) On pose D(n) = blog2(n)c.
Montrer que le degr´
e maximum d’un nœud d’une file binomiale de taille nest D(n).
On appelle file binomiale relˆ
ach´
ee une suite de tournois binomiaux de tailles quelconques.
Un exemple de file binomiale relˆ
ach´
ee : (B3, B1, B2, B1, B1, B2, B4, B0, B0, B0).
2. Montrer que le degr´
e maximum d’un nœud d’une file binomiale relˆ
ach´
ee est aussi D(n).
´
Etant donn´
es une file binomiale relˆ
ach´
ee Het un nœud xquelconque de H:
min(H)d´
esigne la racine de l’arbre qui contient la plus petite cl´
e (si Hest vide alors min(H) = nil)
taille (H)d´
esigne le nombre de nœuds dans la file H
pere (x)est le p`
ere de x(si xest une racine alors pere (x) = nil)
fils (x)est l’un des fils de x(si xest une feuille alors fils (x) = nil)
pred (x)est le fr`
ere gauche de xet succ (x)est son fr`
ere droit (si xest une racine alors pred (x)et succ (x)
sont des racines, si xest fils unique alors pred (x) = succ (x) = x)
degre (x)est le nombre de fils de x
clef (x)est la valeur de la cl´
ex
On peut s’appuyer sur une structure de donn´
ees qui permet de lire et modifier ces valeurs en temps constants. De plus on
dispose de la proc´
edure Cr´
eerFBRVide de cr´
eation d’une file binomiale relˆ
ach´
ee vide.
3. ´
Ecrire les proc´
edures
(a) Concat´
enerFBR d’union de deux files binomiales relˆ
ach´
ees (en une file binomiale relˆ
ach´
ee). Quelle est la
complexit´
e ?
(b) Ins´
ererFBR d’insertion d’une nouvelle valeur vdans une file binomiale relˆ
ach´
ee. Quelle est la complexit´
e ?
4. (a) ´
Ecrire une proc´
edure Consolider qui transforme une file binomiale relˆ
ach´
ee en une file binomiale (avec
contrainte sur les tailles).
(b) On note a(H)le nombre d’arbres d’une file binomiale relˆ
ach´
ee H.
Montrer que le coˆ
ut de la proc´
edure Consolider appliqu´
ee `
a une file Hde taille nest inf´
erieur ou ´
egal `
a
α(a(H) + D(n)) o`
uαest une constante (qui ne d´
epend pas de H).
5. ´
Ecrire une proc´
edure ExtraireMinFBR qui extrait le minimum d’une file binomiale relˆ
ach´
ee non vide tout en la
consolidant. La file obtenue apr`
es extraction du minimum est donc une file binomiale (avec contrainte sur les tailles).
Remarquer que lorsqu’on supprime des nœuds dans une file H, il se peut que min(H)ne soit plus positionn´
e sur la
racine de l’arbre de plus petite cl´
e. C’est pourquoi on consid`
ere qu’on dispose d’une proc´
edure MettreAJourMin
qui remet `
a jour min(H).
6. En utilisant la m´
ethode du potentiel, calculer le coˆ
ut amorti de la proc´
edure ExtraireMinFBR d’extraction du
minimum d’une file binomiale relˆ
ach´
ee.
Indication : prendre une fonction de potentiel proportionnelle au nombre d’arbres de la file initiale.
c
2011-2012 (by UPMC/Master STL/AlgoAv) 20 septembre 2012
1 / 10 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 !