Algorithmen und Datenstrukturen – Übung 7 - FB2

Werbung
Algorithmen und Datenstrukturen – Übung 7
Aufgabe 1
Stellen Sie jeweils einen Algorithmus (in Pseudo-Code) auf, um in einem B-Baum...
a) Den kleinsten enthaltenen Schlüssel zu finden.
b) Den größten enthaltenen Schlüssel zu finden.
c) Eine gegebene Menge von Schlüsseln so einzufügen, so daß die Anzahl von Knoten
maximiert wird (also der Baum minimal gefüllt ist).
d) Wie sollte ein B-Baum befüllt sein, um vor allem lesende Zugriffe zu beschleunigen?
e) Wie sollte ein B-Baum befüllt sein, um die nächsten schreibenden Zugriffe zu
beschleunigen?
f) Wie kann man das Erstellen eines B-Baumes zu einer gegebenen, sortierten
Datenmenge beschleunigen?
Lösungsvorschlag:
a) Der Schlüssel steht ganz links im Baum, man muss sich also nur am jeweils linkesten
Zeiger entlanghangeln:
Knoten akt = Wurzel
Solange akt.Zeiger
[0] != null
akt = akt.Zeiger [0]
Ergebnis = akt.Schlüssel [0]
b) Der Schlüssel steht ganz rechts im Baum, man muss sich also am jeweils rechtesten,
existenten Zeiger jedes Knotens entlanghangeln und dann den rechtesten Schlüssel aus
dem aufgefundenen Knoten entnehmen.
Knoten akt = Wurzel
FOR (n = 0; akt.Zeiger
[n] != null; n++)
Solange n > 0
akt = akt.Zeiger [n - 1]
FOR (n = 0; akt.Zeiger
[n] != null; n++)
FOR (n = 0; akt.Schlüssel [n] != null; n++)
Ergebnis = akt.Schlüssel [n - 1]
c) Wenn man die Schlüssel vorsortiert einfügt, dann wird jeder Schlüssel immer an die
rechteste Position gesetzt, das heißt, dort werden die Knoten gefüllt, nach dem Split bleibt
der linke Split-Knoten unberührt, also minimal gefüllt usw.
Sortiere Schlüssel
FOR (alle Schlüssel) Einfügen in B-Baum
d) Die Höhe bestimmt die Anzahl der Plattenzugriffe, also die zeitkritischen Operationen.
Daher sollte der Baum möglichst dicht besetzt sein.
e) Der Aufwand für schreibende Zugriffe wird im wesentlichen durch die Notwendigkeit für
eine Reorganisation beeinflusst. Daher sollte der Baum möglichst wenig dicht besetzt sein
f) Durch Bulk-loading: Statt einen Schlüssel nach dem anderen einzufügen, sortiert man
die Schlüsselmenge mit einem effizienten Sortieralgorithmus vor, legt einen entsprechend
dimensionierten, leeren Mehrwegbaum an und füllt ihn knotenweise, so dass sich ein BBaum ergibt.
Herunterladen