Adloun

Probleme – Combien de nœuds faut-il pour être haut ?

Exercice · niveau 3 (difficile) · informatique (MP2I/MPI), chapitre 10 — Arbres

É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 .

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.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.