Das Kefk Network Wiki befindet sich im Testbetrieb.


Fibonacci-Baum

Aus Kefk.

Wechseln zu: Navigation, Suche

Ein Fibonacci-Baum ist eine Datenstruktur in der Informatik. Er stellt einen Spezialfall eines AVL-Baums dar. Der Name deutet an, dass Fibonacci-Bäume analog zu den Fibonacci-Zahlen rekursiv definiert sind.

Löscht man einen beliebigen Knoten eines Fibonacci–Baums, so sinkt die Knotenzahl unter das Minimum, das für die entsprechende bisherige Baumhöhe galt. Dies bedeutet, dass es auf jeden Fall zu einer Höhenverminderung kommt, entweder durch Blattlöschung (z.B. der 1 im Beispiel unten) oder durch Entstehen von Störstellen und ein oder mehrerer anschliessender Rotationen.

Im Prinzip kann es beim Löschen dazu kommen, dass eine Rotation zur Behebung einer Störstelle, in der darüberliegenden Ebene eine neue Störstelle verursacht. Da die Höhe im AVL–Baum logarithmisch zur Knotenzahl n ist, kann also auch log(n) mal eine Rotation erforderlich sein. Die Rotationsoperationen selbst lassen sich in konstantem Aufwand ausführen, womit sich insgesamt als Komplexität für das Löschen im AVL–Baum wiederum log(n) ergibt.

Die Basis des Logarithmus ist wie bei den Fibonacci–Zahlen die Zahl g=(1+\sqrt{5})/2 des goldenen Schnittes und damit ca. 1,61. Idealerweise ist für einen Binärbaum natürlich die Basis 2, die Gewährleistung schärferer Balancierungskriterien als der Höhenausgeglichenheit ist aber so aufwendig, dass im Mittel die Operationen für solche Bäume aufwendiger sind.
Bild:Fibonacci-baum.png
Fibonacci-Baum der Stufe 4

Rekursive Definition

  • Der Fibonacci-Baum der Stufe 0 ist der leere Baum.
  • Der Fibonacci-Baum der Stufe 1 ist ein Baum, der nur aus einem Knoten besteht.
  • Ein Fibonacci-Baum der Stufe n (mit n ≥ 2) besteht aus einer Wurzel, deren linker Sohn ein Fibonacci-Baum der Stufe n - 1 und deren rechter Sohn ein Fibonacci-Baum der Stufe n - 2 ist.

Eigenschaften

  • Der Fibonacci-Baum der Stufe n (mit n > 0) hat die Höhe n - 1.
  • Ist kn die Anzahl der Knoten des Fibonacci-Baums der Stufe n, dann gilt
    k0 = 0
    k1 = 1
    kn = 1 + kn - 1 + kn - 2 (n ≥ 2)
  • Ist bn die Anzahl der Blattknoten des Fibonacci-Baums der Stufe n, dann gilt
    b0 = 0
    b1 = 1
    bn = bn - 1 + bn - 2 (n ≥ 2)
  • Mit Hilfe der Bezeichnung fn für die n-te Fibonacci-Zahl lassen sich diese Größen auch so ausdrücken:
    kn = fn + 2 - 1
    bn = fn
  • Zu einer gegebenen Höhe entspricht ein Fibonacci-Baum einem AVL-Baum mit minimaler Knotenanzahl, er ist also am schlechtesten ausgeglichen.

Siehe auch

Fibonacci-Heap

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Fibonacci-Baum, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge