Adloun

informatique (MP2I/MPI) · Chapitre 10 · Exercice de TD

Problème — Combien de nœuds faut-il pour être haut ?

Arbres · niveau 3 (difficile)

Énoncé

On dit qu'un arbre binaire est équilibré en hauteur si, en chacun de ses nœuds, les hauteurs des deux fils diffèrent d'au plus .

  • Donner une relation de récurrence pour , le nombre minimal de nœuds d'un tel arbre de hauteur .
  • Calculer et l'exprimer avec la suite de Fibonacci.
  • En déduire une majoration de la hauteur en fonction du nombre de nœuds, et la vérifier.
  • Pourquoi ce résultat est-il celui qui justifie tout le chapitre suivant ?

Corrigé

1. La récurrence. Un arbre équilibré de hauteur et de taille minimale a une racine, un fils de hauteur — il en faut un pour atteindre la hauteur — et un second fils dont la hauteur est au moins , par la contrainte d'équilibre. Pour minimiser, on prend exactement , et chacun des deux fils est lui-même minimal. D'où

La convention du cours rend l'initialisation limpide : est l'arbre vide, et non un cas particulier. Avec la convention , il faudrait ici une exception.

2. Les valeurs, calculées, et la forme close :

On reconnaît les nombres de Fibonacci diminués de , et l'identité

a été vérifiée pour de à , avec . Par exemple et .

Preuve. Par récurrence forte. et . Puis

3. La majoration de la hauteur. Un arbre équilibré de hauteur et de taille vérifie , donc . Comme avec , on obtient en passant au logarithme

Cette borne a été vérifiée numériquement pour de à , c'est-à-dire jusqu'à nœuds : elle tient, avec un écart maximal de .

Le chiffre à retenir est . Un arbre équilibré en hauteur est au plus plus haut que l'arbre parfait de même taille. La comparaison, obtenue en cherchant le plus grand tel que , est frappante :

hauteur d'un arbre parfaithauteur maximale d'un équilibré

Contre une hauteur de pour un peigne de même taille.

4. Pourquoi ce résultat gouverne le chapitre suivant. Le cours a établi deux choses : la hauteur est comprise entre et , et toute recherche coûte . Il en découlait une question sans réponse : comment garantir qu'on est du bon côté ?

Ce problème donne la réponse, et elle est du meilleur genre : une contrainte purement locale — en chaque nœud, les hauteurs des fils diffèrent d'au plus — suffit à garantir une propriété globale, . On peut donc maintenir l'équilibre en ne regardant, à chaque insertion, que le voisinage du chemin parcouru : c'est ce que feront les arbres bicolores du chapitre chap:tas.

L'arbre qui sature la borne mérite d'être connu : c'est l'arbre de Fibonacci, défini par . Il est le pire cas de tous les algorithmes d'arbres équilibrés, et c'est donc le premier arbre sur lequel on les teste — une application directe de la méthode du chapitre chap:discipline : ne pas tester au hasard, tester aux frontières.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre