AVL Baum

In der Informatik ist ein AVL Baum ein selbstbalancierender binärer Suchbaum, und es war die erste derartige zu erfindende Datenstruktur. In einem AVL Baum unterscheiden sich die Höhen der zwei Kindersubbäume jedes Knotens durch an meisten ein. Lookup, Einfügung und Auswischen alle nehmen O (loggen n), Zeit sowohl mit dem Durchschnitt als auch mit den Grenzfällen, wo n die Zahl von Knoten im Baum vor der Operation ist. Einfügungen und Auswischen können verlangen, dass der Baum durch eine oder mehr Baumfolgen wiedererwogen wird.

Der AVL Baum wird nach seinen zwei sowjetischen Erfindern, G. M. Adelson-Velskii und E. M. Landis genannt, der ihn in ihrer 1962-Zeitung "Ein Algorithmus für die Organisation der Information veröffentlicht hat."

AVL Bäume sind häufig im Vergleich zu rot-schwarzen Bäumen, weil sie denselben Satz von Operationen unterstützen, und weil rot-schwarze Bäume auch O nehmen (loggen Sie n) die Zeit für die grundlegenden Operationen. Weil AVL Bäume mehr starr erwogen werden, sind sie schneller als rot-schwarze Bäume für lookup intensive Anwendungen. Jedoch sind rot-schwarze Bäume für die Einfügung und Eliminierung schneller..

Operationen

Grundlegende Operationen eines AVL Baums sind mit dem Ausführen derselben Handlungen verbunden, wie auf einem unausgeglichenen binären Suchbaum ausgeführt würde, aber Modifizierungen wird vorangegangen oder von einer oder mehr Operationen genannt Baumfolgen gefolgt, die helfen, das Höhe-Gleichgewicht der Subbäume wieder herzustellen.

Suche

Lookup in einem AVL Baum wird genau wie in jedem unausgeglichenen binären Suchbaum durchgeführt. Wegen des Höhe-Ausgleichens des Baums nimmt ein lookup O (loggen Sie n) Zeit. Keine speziellen Handlungen müssen genommen werden, und die Struktur des Baums wird durch lookups nicht modifiziert. (Das soll im Gegensatz Baum lookups ausbreiten, die wirklich die Struktur ihres Baums modifizieren.)

Wenn jeder Knoten zusätzlich die Größe seines Subbaums registriert (einschließlich sich und seiner Nachkommen), dann können die Knoten durch den Index in O wiederbekommen werden (loggen Sie n) Zeit ebenso.

Sobald ein Knoten in einem erwogenen Baum gefunden worden ist, können die folgenden oder vorherigen Knoten in der amortisierten unveränderlichen Zeit erforscht werden. Einige Beispiele, diese "nahe gelegenen" Knoten zu erforschen, verlangen das Überqueren bis zu 2×log (n) Verbindungen (wenn besonders sie sich vom niedrigstwertigen Blatt des linken Subbaums der Wurzel zum leftmost Blatt des richtigen Subbaums der Wurzel bewegen). Jedoch würde das Erforschen aller n Knoten des Baums auf diese Weise jede Verbindung genau zweimal verwenden: Ein Traversal, um in den Subbaum einzugehen, hat an diesem Knoten und einem anderen eingewurzelt, um den Subbaum dieses Knotens zu verlassen, es erforscht. Und da es N1-Verbindungen zu jedem Baum gibt, wie man findet, sind die amortisierten Kosten 2× (n1)/n, oder etwa 2.

Einfügung

Nach dem Einfügen eines Knotens ist es notwendig, jeden der Vorfahren des Knotens für die Konsistenz mit den Regeln von AVL zu überprüfen. Für jeden überprüften Knoten, wenn der Gleichgewicht-Faktor 1, 0, oder +1 dann keine Folgen bleibt, sind notwendig. Jedoch, wenn Gleichgewicht-Faktor weniger als-1 oder größer wird als +1, ist der an diesem Knoten eingewurzelte Subbaum unausgeglichen. Wenn Einfügungen serienmäßig durchgeführt werden, nach jeder Einfügung, am grössten Teil von einen der folgenden Fälle muss aufgelöst werden, um den kompletten Baum zu den Regeln von AVL wieder herzustellen.

Es gibt vier Fälle, die betrachtet werden müssen, von denen zwei zu den anderen zwei symmetrisch sind. Lassen Sie P die Wurzel des unausgeglichenen Subbaums, mit R und L Bezeichnung der richtigen und linken Kinder von P beziehungsweise sein.

Richtig-richtiger Fall und Recht-linker Fall:

  • Wenn der Gleichgewicht-Faktor von P-2 dann ist, überwiegt der richtige Subbaum den linken Subbaum des gegebenen Knotens, und der Gleichgewicht-Faktor des richtigen Kindes (R) muss überprüft werden. Die linke Folge mit P als die Wurzel ist notwendig.
  • Wenn der Gleichgewicht-Faktor von R-1 ist, ist eine einzelne linke Folge (mit P als die Wurzel) (Richtig-richtiger Fall) erforderlich.
  • Wenn der Gleichgewicht-Faktor von R +1 ist, sind zwei verschiedene Folgen erforderlich. Die erste Folge ist eine richtige Folge mit R als die Wurzel. Das zweite ist eine linke Folge mit P als die Wurzel (Recht-linker Fall).

Nach links linker Fall und Nach links richtiger Fall:

  • Wenn der Gleichgewicht-Faktor von P 2 ist, dann überwiegt der linke Subbaum den richtigen Subbaum des gegebenen Knotens, und der Gleichgewicht-Faktor des linken Kindes (L) muss überprüft werden. Die richtige Folge mit P als die Wurzel ist notwendig.
  • Wenn der Gleichgewicht-Faktor von L +1 ist, ist eine einzelne richtige Folge (mit P als die Wurzel) (Nach links linker Fall) erforderlich.
  • Wenn der Gleichgewicht-Faktor von L-1 ist, sind zwei verschiedene Folgen erforderlich. Die erste Folge ist eine linke Folge mit L als die Wurzel. Das zweite ist eine richtige Folge mit P als die Wurzel (Nach links richtiger Fall).

Auswischen

Wenn der Knoten ein Blatt ist oder nur ein Kind hat, entfernen Sie ihn.

Ersetzen Sie es sonst durch irgendeinen das größte in seinem linken Subbaum (inorder Vorgänger) oder das kleinste in seinem richtigen Subbaum (inorder Nachfolger), und entfernen Sie diesen Knoten.

Der Knoten, der als ein Ersatz gefunden wurde, hat höchstens einen Subbaum. Nach dem Auswischen, gehen Sie den Weg zurück unterstützen den Baum (Elternteil des Ersatzes) zur Wurzel, die Gleichgewicht-Faktoren, wie erforderlich, anpassend.

Als mit allen binären Bäumen, ein Knoten, um Nachfolger ganz links Kind seines richtigen Subbaums, und ein Knoten ist, um Vorgänger das niedrigstwertige Kind seines linken Subbaums ist. In jedem Fall wird dieser Knoten Null oder Kinder haben. Löschen Sie es gemäß einem der zwei einfacheren Fälle oben.

Zusätzlich zum Ausgleichen, das oben für Einfügungen beschrieben ist, wenn der Gleichgewicht-Faktor für den Baum 2 und dieser des linken Subbaums ist, ist 0, eine richtige Folge muss auf P durchgeführt werden. Der Spiegel dieses Falls ist auch notwendig.

Das Zurückverfolgen kann anhalten, wenn der Gleichgewicht-Faktor 1 oder +1 anzeigende wird, dass die Höhe dieses Subbaums unverändert geblieben ist.

Wenn der Gleichgewicht-Faktor 0 dann wird, hat die Höhe des Subbaums durch einen abgenommen, und das Zurückverfolgen muss weitergehen.

Wenn der Gleichgewicht-Faktor 2 oder +2 dann wird, ist der Subbaum unausgeglichen und muss rotieren gelassen werden, um ihn zu befestigen.

Wenn die Folge den Gleichgewicht-Faktor des Subbaums an 0 dann verlässt, muss das Zurückverfolgen zur Wurzel weitergehen, seitdem die Höhe dieses Subbaums durch einen abgenommen hat.

Das ist im Gegensatz zu einer Einfügung, wo eine Folge, die auf einen Gleichgewicht-Faktor 0 hinausläuft, angezeigt hat, dass die Höhe des Subbaums unverändert geblieben ist.

Die erforderliche Zeit ist O (loggen Sie n) für lookup, plus ein Maximum von O (loggen n), Folgen unterwegs zurück zur Wurzel, so kann die Operation in O vollendet werden (loggen n), Zeit.

Vergleich zu anderen Strukturen

Sowohl AVL Bäume als auch rot-schwarze Bäume selbsterwägen binäre Suchbäume, so sind sie mathematisch sehr ähnlich. Die Operationen, um die Bäume zu erwägen, sind verschieden, aber beide kommen in O vor (loggen Sie n) Zeit. Der echte Unterschied zwischen den zwei ist die Begrenzungshöhe.

Für einen Baum der Größe:

  • Eine Höhe eines AVL Baums ist ausschließlich weniger als:
:

wo das goldene Verhältnis ist.

AVL Bäume werden mehr starr erwogen als rot-schwarze Bäume, zu langsamerer Einfügung und Eliminierung, aber schnellerer Wiederauffindung führend.

Siehe auch

Weiterführende Literatur

  • Donald Knuth. Die Kunst der Computerprogrammierung, Bands 3: Sortierend und Suche, die Dritte Ausgabe. Addison-Wesley, 1997. Internationale Standardbuchnummer 0-201-89685-0. Seiten 458-475 des Abschnitts 6.2.3: Erwogene Bäume.

Links


Apple III / Zusammensetzung von Aliphatic
Impressum & Datenschutz