• Aucun résultat trouvé

Arbres binaires de recherche optimaux

N/A
N/A
Protected

Academic year: 2022

Partager "Arbres binaires de recherche optimaux"

Copied!
2
0
0

Texte intégral

(1)

Arbres binaires de recherche optimaux

Référence : Cormen, p.357 de la seconde édition 2011-2012

On s’intéresse ici à optimiser les arbres binaires de recherche quand on connait la probabilité pour chaque clef d’être recherchée.

On se donne nclefs distinctes triées dans l’ordre croissantk1 <· · ·< kn, où pour touti, ki a une probabilité pid’être recherchée.

On rajoute aussin+ 1 clefs factices d0, . . . , dn représentant les recherches qui ne sont aucun deski.

d0représente toutes les valeurs inférieures àk1,dn celle supérieures àkn, etdi celles comprises entreki etki+1. On se donne de plus une probabilitéqi que la recherche soit dans di.

Les nœuds internes de l’arbre seront leski, et les feuilles lesdi.

On a donc n

X

i=1

pi+

n

X

i=0

qi= 1.

Le coût moyen d’une recherche dans notre arbre sera 1 +

n

X

i=1

Prof(ki)pi+

n

X

i=0

Prof(di)qi.

Un arbre binaire de recherche sera ditoptimal si ce coût moyen est minimal. On abrège en "ABRO".

La recherche d’un ABRO en listant tous les arbres possibles a une complexité bien trop grande, on va donc essayer un algorithme de programmation dynamique.

On remarque pour cela que tout sous-arbre de notre arbre doit être optimal : sinon, on le remplace par un optimal, faisant ainsi baisser le coût total.

Le sous-problème à résoudre est donc, étant donnés i > 1 et i−1 6 j 6 n un ABRO contenant les clefs ki, . . . , kj.

Soite[i, j] le coût d’un arbre contenantki, . . . , kj.

Sij =i−1, alors il n’y a que la clef facticedi1 dans l’arbre : le coût moyen estqi1.

Sinon,j>i. On choisit un nœudkr,i6r6j, et on construit l’arbre de racinekr. Le sous-arbre gauche dekr

contiendra les clefski, . . . , kr1, et le sous arbre droit les clefskr+1, . . . , kj.

Quand on fait "descendre" un sous-arbre, on augmente la profondeur de ce sous-arbre de 1, on donc on augmente le coût de

w(i, j) =

j

X

k=i

pk+

j

X

k=i1

qk.

On obtient donc la formule :

1

(2)

e[i, j] =pr+e[i, r−1] +w(i, r−1) +e[r+ 1, j] +w(r+ 1, j).

On remarque que

w(i, j) =w(i, r−1) +pr+w(r+ 1, j), et donc

e[i, j] =e[i, r−1] +e[r+ 1, j] +w(i, j).

Cette formule est valide si on a choisi la bonne racine pour notre sous-arbre. On optimise donc :

e[i, j] =

qi1 sij =i−1 mini6r6je[i, r−1] +e[r+ 1, j] +w(i, j) sii6j

Pour garder une trace de notre construction, on définitracine[i, j] comme l’indice de la racine optimale pour le sous-arbre contenantki, . . . , kj.

On va maintenant utiliser la programmation dynamique pour calculere[1, n].

Remarque– Plutôt que de calculer tous lesw(i, j) à chaque fois, on crée un tableau défini par w(i, i−1) =qi1

w(i, j) =w(i, j−1) +pj+qj

On a donc l’algorithme suivant : Algorithm 1ABRO

Préconditions: p, q probabilités,nnombre de clefs pouri= 1 àn+ 1 faire

e[i, i−1]←qi1

w[i, i−1]←qi1

ruop

pour= 1 ànfaire

pouri= 1 àn+ 1faire ji+−1

e[i, j]← ∞

w[i, j]w[i, j−1] +pj+qj

pourr=iàj faire

te[i, r−1] +e[r+ 1, j] +w[i, j]

sit < e[i, j]alors e[i, j]t racine[i, j]r is

ruop ruop ruop

retourner eet racine

Les trois boucles imbriquées nous donnent une complexité enO(n3).

2

Références

Documents relatifs

Le crit`ere BIC (Bayesian Information Criteria) pour arbre que nous avons introduit dans Rit- schard et Zighed (2003, 2004) pour comparer la qualit´e de la description des

• Les intervalles sont stockés dans un arbre binaire de recherche. • La clé utilisée pour comparer les nœuds est l'extrémité gauche

Professeur de Botanique à l’Uni- versité de Montpellier, Francis Hallé est spécialiste de l’architec- ture des arbres et de l’écologie des forêts

Le probl` eme de cet exercice consiste ` a d´ eterminer le nombre de points du plan contenus dans un rectangle donn´ e.. Ce genre de situation apparait tr` es souvent dans les

Dans le cas de points p-q-i alignés (orientation 0), le point le plus éloigné de P est conservé (dans le tableau donné en exemple ci-dessous, c'est la différence des distances PQ

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

La profondeur du nœud ou d’une feuille d’un arbre hétérogène est le nombre d’arêtes du plus court chemin reliant ce nœud ou cette feuille à la racineB. On supposera que β

Pour obtenir un arbre équilibré (gauche, droite), il faut choisir la ville qui va constituer la racine celle qui a un rang de 100. Précisez pourquoi il est nécessaire que la