Tous les arbres rouge-noir ne sont pas équilibrés?

30

Intuitivement, les "arbres équilibrés" devraient être des arbres où les sous-arbres gauche et droit de chaque nœud doivent avoir "approximativement le même" nombre de nœuds.

Bien sûr, lorsque nous parlons d'équilibrage des arbres rouge-noir * (voir définition à la fin), nous voulons en fait dire qu'ils sont équilibrés en hauteur et en ce sens, ils sont équilibrés.

Supposons que nous essayons de formaliser l'intuition ci-dessus comme suit:

Définition: Un arbre binaire est appelé μ équilibré, avec 0μ12 , si pour chaque nœudN, l'inégalité

μ|NL|+1|N|+11-μ

détient et pour chaque , il y a un nœud pour lequel l'instruction ci-dessus échoue. est le nombre de nœuds dans le sous-arbre gauche de etest le nombre de nœuds sous l'arbre avec comme racine (y compris la racine).| N L | N | N | Nμ>μ|NL|N|N|N

Je pense que ces arbres sont appelés arbres à poids équilibré dans certaines publications sur ce sujet.

On peut montrer que si un arbre binaire à n nœuds est μ équilibré (pour une constante μ>0 ), alors la hauteur de l'arbre est O(logn) , maintenant ainsi les belles propriétés de recherche.

La question est donc:

Existe-t-il des μ>0 tels que chaque arbre rouge-noir suffisamment grand soit équilibré en μ ?


La définition des arbres rouge-noir que nous utilisons (tirée de Introduction to Algorithms de Cormen et al):

Un arbre de recherche binaire, où chaque nœud est coloré en rouge ou en noir et

  • La racine est noire
  • Tous les nœuds NULL sont noirs
  • Si un nœud est rouge, ses deux enfants sont noirs.
  • Pour chaque nœud, tous les chemins allant de ce nœud aux nœuds NULL descendants ont le même nombre de nœuds noirs.

Remarque: nous ne comptons pas les nœuds NULL dans la définition de -balanced ci-dessus. (Même si je crois que cela n'a pas d'importance si nous le faisons).μ

Aryabhata
la source
@Aryabhata: quel est le caractère unique ( ) de votre montage? Je suis d'accord avec le fait que 1μ>μ équilibré implique113 équilibré. Je ne pense pas que vous devriez trouver leμexactpour prouver que la hauteur estO(logn). Suis-je en train de manquer quelque chose? 14 μO(logn)
jmad
De plus, vous avez besoin d' une déclaration négative pour fournir une chaîne avec un arbre contre - pour chaque . N'importe quelle chaîne infinie qui ne diminue pas en taille de nœud serait suffisante, n'est-ce pas? nN
Raphael
@jmad: Sans l' édition , chaque arbre est trivialement 0- équilibré et nous n'avons donc pas de réponse triviale à la question. Je voulais éviter ça. μ0
Aryabhata
@Raphael: Je ne comprends pas. La taille du nœud de l' arbre est n . Vous dites que peu importe l'arbre que nous choisissons pour R B n et que μ n0 ? Cela ne me semble pas évident, et c'est de cela qu'il s'agit! nthnRBnμn0
Aryabhata
1
Une version antérieure de cette question affirmait que le temps d'exécution d'un algorithme récursif sur un arbre rouge-noir qui effectue une quantité linéaire de travail à chaque étape n'est pas nécessairement O(nbûchen) . Cette affirmation était incorrecte; l'équilibre en hauteur implique que la profondeur d'un arbre rouge-noir à nœuds est O ( log n )nO(bûchen) . Ainsi, si vous effectuez un travail à chaque niveau de l'arborescence, le travail total est O ( n log n ) . O(n)O(nbûchen)
JeffE

Réponses:

31

Allégation : les arbres rouge-noir peuvent être arbitrairement déséquilibrés en μ .

Idée de preuve : remplissez le sous-arbre droit avec autant de nœuds que possible et le gauche avec le moins de nœuds possible pour un nombre donné k de nœuds noirs sur chaque chemin racine-feuille.

Preuve : Définissez une séquence Tk d'arbres rouge-noir pour que Tk ait k nœuds noirs sur chaque chemin de la racine à n'importe quelle feuille (virtuelle). Définissez Tk=B(Lk,Rk) avec

  • Rk l'arbre complet de hauteur2k-1 avec le premier, le troisième, ... niveau de couleur rouge, les autres noirs, et
  • Lk l'arbre complet de hauteurk-1 avec tous les nœuds colorés en noir.

Clairement, tous les Tk sont des arbres rouge-noir.

Par exemple, ce sont respectivement T1 , T2 et T3 :


T_1
[ source ]


T_2
[ source ]


T_3
[ source ]


Vérifions maintenant l'impression visuelle du côté droit étant énorme par rapport à la gauche. Je ne compterai pas les feuilles virtuelles; ils n'ont pas d'impact sur le résultat.

Le sous-arbre gauche de Tk est complet et a toujours la hauteur k-1 et contient donc 2k-1 nœuds. Le sous-arbre droit, en revanche, est complet et a une hauteur de2k-1 et contient donc22k-1 nœuds. Maintenant, lavaleur d'équilibreμ pour la racine est

2k2k+22k=11+2kk0

ce qui prouve qu'il n'y a pas μ>0 comme demandé.

Raphael
la source
14

Non . Considérons un arbre rouge-noir avec la structure spéciale suivante.

  • Le sous-arbre gauche est un arbre binaire complet de profondeur , dans lequel chaque nœud est noir.
  • Le sous-arbre droit est un arbre binaire complet avec une profondeur de , dans lequel chaque nœud à une profondeur impaire est rouge et chaque nœud à une profondeur paire est noir.2

Il est simple de vérifier qu'il s'agit d'un arbre rouge-noir valide. Mais le nombre de nœuds dans le sous-arbre droit ( 22+1-1 ) est à peu près le carré du nombre de nœuds dans le sous-arbre gauche ( ).2+1-1

JeffE
la source
+1: Merci! Mais le nombre de nœuds est de . Pouvons-nous peut-être les «garnir» suffisamment pour obtenir un arbre d'une taille donnée n22+1+2+1-1n ? (Il semble que cela devrait être possible).
Aryabhata
1
Vous avez déjà un contre-exemple pour une infinité de , alors pourquoi s'embêter?. Mais je suppose que si vous le vouliez, vous pourriez ajouter plus de nœuds rouges au sous-arbre gauche, ou retirer des nœuds rouges du sous-arbre droit. n
JeffE
@JeffE: Fondamentalement, la chaîne de contre-exemples serait alors un sous-ensemble «dense», plutôt qu'un sous-ensemble «clairsemé». Je vais peut-être changer la formulation de la question.
Aryabhata