Stellen Sie sich einen rot-schwarzen Baum vor. Gibt es immer eine Sequenz von Einfügungen und Löschungen, die es schafft?

41

Nehmen wir die folgende Definition eines rot-schwarzen Baums an:

  1. Es ist ein binärer Suchbaum.
  2. Jeder Knoten ist entweder rot oder schwarz gefärbt. Die Wurzel ist schwarz.
  3. Zwei durch eine Kante verbundene Knoten können nicht gleichzeitig rot sein.
  4. Hier sollte eine gute Definition eines NIL-Blattes sein, wie im Wiki. Das NIL-Blatt ist schwarz gefärbt.
  5. Ein Pfad von der Wurzel zu einem beliebigen NIL-Blatt enthält die gleiche Anzahl schwarzer Knoten.


Frage

Angenommen, Sie haben die Operationen insertund deletefür den rot-schwarzen Baum implementiert . Wenn Sie nun einen gültigen rot-schwarzen Baum erhalten, gibt es immer eine Folge von insertund deleteOperationen, die ihn aufbauen?


Motivation

Diese Frage wird durch diese Frage und die Diskussion aus dieser Frage motiviert .

Persönlich glaube ich, dass, wenn Sie sich einen gültigen rot-schwarzen Baum vorstellen, der nur aus schwarzen Knoten besteht (was impliziert, dass Sie sich einen perfekt ausbalancierten Baum vorstellen), es eine Folge von insertund deleteOperationen gibt, die ihn aufbauen. Jedoch,

  1. Ich weiß nicht, wie ich das genau beweisen soll
  2. Ich interessiere mich auch für den allgemeineren Fall
alisianoi
quelle
Ihre Frage klingt ein bisschen kreisförmig ... jede Menge von Einfüge- und Löschoperationen erzeugt einen rot-schwarzen Baum ... buchstäblich alles, da rot-schwarz nur eine Definition ist. Beschränkt sich Ihre Frage auf einen rein schwarzen Baum?
JOX
2
Nein, ich glaube du verstehst das falsch. Natürlich erzeugt jede Menge von Einfügungen und Löschungen einen rot-schwarzen Baum. Die Frage ist: Ist ein Baum, der zur Definition passt, durch eine Abfolge von Einfügungen und Löschungen konstruierbar? Können Sie eine Abfolge von Einfügungen und Löschungen erstellen, wenn Sie einen Baum erhalten haben?
Alisianoi
2
@ all3fox Ja, du hast recht. Es gibt einen Algorithmus, der die Operation verwendet insertund deleteeinen gültigen rot-schwarzen Baum erstellt, der nur aus schwarzen Knoten besteht . Es verwendet Einfügungen / Löschungen, um einen Baum der Höhe zu erstellen . Zuerst können wir mit Einfügungen einen perfekt ausbalancierten rot-schwarzen Baum in der Breite zuerst erstellen , dann mit -Einfügungen und der gleichen Anzahl von Löschungen, in die er neu gestrichen wird ein ganz schwarzer Baum. Der Trick dabei ist, mal die unterste rote Schicht des Baumes nach oben zu schieben, bis sie die Wurzel erreicht. h 2 h + 1 - 1 h 2 h - 1 h(h+2)2h-1h2h+1-1h2h-1h
Anton Trunov
1
@ AntonTrunov danke, ich verstehe das irgendwie. Wie wäre es aber mit einem allgemeinen rot-schwarzen Baum? Was denkst du, ist es möglich, einen gegebenen Rot-Schwarz-Baum mit insertund deleteOperationen zu konstruieren ?
Alisianoi
2
a) Die Antwort hängt von der genauen Umsetzung von insertund ab delete. Für diese Vorgänge gibt es möglicherweise mehrere Möglichkeiten. b) Da RB-Bäume im Wesentlichen B-Bäume der Ordnung 4 sind, kann man dort nach Inspiration suchen. Die Details können sich als schwierig erweisen, da die Zuordnung von RB zu B (und / oder umgekehrt) nicht eindeutig ist.
Raphael

Antworten:

2

Die Einfüge- und Löschvorgänge in einem Rot-Schwarz-Baum umfassen den Ausgleich, der zum Beibehalten der Rot-Schwarz-Eigenschaften erforderlich ist.

Das Problem bei nicht (links- oder rechts-) geneigten rotschwarzen Bäumen besteht darin, dass es mehrere Möglichkeiten gibt, die Rotschwarzheit nach dem grundlegenden Löschen oder Einfügen wiederherzustellen.
Es ist nicht das Einfügen oder Löschen, das den Baum transformiert, sondern das anschließende Neuausgleichen und Drehen, um die rote Schwärze des Baums zu erhalten / wiederherzustellen.

Die Grundbeschreibung des rot-schwarzen Baumes schreibt nicht vor, welche der möglichen Routen zu nehmen sind.
Es kann sein, dass es nicht möglich ist, herauszufinden, wie ein gegebener rot-schwarzer Baum genau rekonstruiert werden kann, da das Neuausgleichen nicht deterministisch sein muss.

Dies wurde mit nach links geneigten rot-schwarzen Bäumen "gelöst".
Es gibt nur eine Möglichkeit, den Abgleich durchzuführen. So kann jeder schiefe rot-schwarze Baum mit Einfügungen und Löschungen rekonstruiert werden, da die Neuausrichtung / Rotation auf eine spezifisch deterministische Weise erfolgt.

Dies bedeutet nicht, dass linke RB-Bäume besser oder effizienter sind, was sie einerseits durch die Verwendung deterministischer Ausgleichsregeln gewinnen, andererseits durch komplexeren Ausgleichscode verlieren.

Laut @ Antons Kommentar:
Es gibt einen Algorithmus, der die Operation Einfügen und Löschen verwendet, um einen gültigen rot-schwarzen Baum zu erstellen, der nur aus schwarzen Knoten besteht. Es verwendet Einfügungen / Löschungen, um einen Baum der Höhe zu erstellen . Zuerst können wir einen perfekt ausbalancierten rot-schwarzen Baum mit Einfügungen erstellen , dann mit Einfügungen und der gleichen Anzahl von Löschungen, in die er neu gezeichnet wird ein ganz schwarzer Baum. Der Trick dabei ist, mal die unterste rote Schicht des Baumes nach oben zu schieben, bis sie die Wurzel erreicht.h 2 h + 1 - 1 h 2 h - 1 h(h+2)2h-1h2h+1-1h2h-1h

Ich denke, ein vollständiger Auswuchtalgorithmus wie Day-Stout-Warren wäre jedoch effizienter.

Johan
quelle
1
Mit den Operationen insertund deleteaus dem CLRS-Buch können Sie einen gültigen RB-Baum erstellen, der nur aus schwarzen Knoten besteht . Der Trick besteht darin, mehr Knoten als nötig einzufügen und dann überzählige zu löschen. Der Algorithmus wird rot Knoten beseitigen.
Anton Trunov
@AntonTrunov, hast du einen Link für diesen Algorithmus, wäre es schön, ihn in die Antwort aufzunehmen. Ich kann es mit meinem Google-Fu nicht finden.
Johan
1
Leider habe ich keinen Link. Ich habe damals versucht, die Frage zu beantworten, und einen Algorithmus für den Sonderfall aller schwarzen RB-Bäume entwickelt. Ich habe es in diesem Kommentar beschrieben, aber keinen Beweis geliefert.
Anton Trunov
Was meinst du mit "Dies wurde 'gelöst' mit links geneigten rot-schwarzen Bäumen." Sogar ein linksgerichteter rot-schwarzer Baum hat mehrere Möglichkeiten, die gleichen Gegenstände zu speichern.
user239558