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: 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é.


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


+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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.