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