Löschen in B-Bäumen - FB2

Werbung
Datenstrukturen Teil 5
B-Bäume
Löschen in B-Bäumen
Algorithmen Teil 1
Komplexität
Löschen in B-Bäumen
Löschen in B-Bäumen
●
Löschen in B-Bäumen ist komplexer als
z.B. in AVL-Bäumen
●
Löschen im Blatt muß das B-BaumKriterium erhalten
●
Prinzipbedingt muß sehr genau zwischen
einem Löschvorgang in einem Blatt und
einem inneren Knoten unterschieden
werden
●
Die Mindestanzahl an Schlüsseln muß
erhalten bleiben
●
Ist die Anzahl der Schlüssel im Knoten, in
dem der zu löschende Wert gefunden
wurde > k, dann ist das Löschen trivial
●
Wert wird gelöscht, nachfolgende Werte
mit Kindern rücken auf
●
Löschvorgang im inneren Knoten ist hier
das Problem, da ein zu löschender Eintrag
ja auch Indikator für seine nachfolgenden
Kinder ist
Löschen in B-Bäumen
●
Löschen erzeugt Unterlauf im Knoten
●
Generell müssen Schlüssel aus dem
betroffenen Knoten und einem
Nachbarknoten neu „verteilt“ werden, um
B-Baum-Kriterium zu erhalten
●
Dabei sind zwei Fälle denkbar
–
Rotation: Kann durchgeführt werden, wenn
Nachbarknoten danach mehr als k Knoten
behält
–
Mischen: Muß genommen werden, wenn
durch Rotation im Nachbarknoten ein
Unterlauf entstünde
Löschen in B-Bäumen
●
Löschen in B-Bäumen
●
Im vorigen Beispiel wurde über den
benötigten Schlüssel hinaus ein weiterer
Schlüssel rotiert
●
Dies kann zum Ausgleichen der Blätter
genutzt werden
●
Ein nachfolgender Löschvorgang im
gleichen Blatt macht so ein weiteres
Rotieren unnötig
Beispiel für Rotation, 33 soll gelöscht
werden
Löschen in B-Bäumen
●
Beispiel für Mischen, im linken Knoten ist
der Schlüssel schon entfernt
Löschen in B-Bäumen
●
Löschen in B-Bäumen
Löschen im inneren Knoten
–
Der Wert kann nicht direkt gelöscht werden,
da er Indikator für die an ihm „hängenden“
Unterbäume ist
–
Er wird „getauscht“ gegen
●
●
Den symmetrischen Vorgänger oder
Den symmetrischen Nachfolger
–
Sym. Vorgänger ist der größte Blattknoten im
linken Unterbaum bzw. der größte Wert in
diesem Blattknoten
–
Sym Nachfolger ist der kleinste Blattknoten im
rechten Unterbaum, bzw. der kleinste Wert
Löschen in B-Bäumen
●
Die Entscheidung, ob Nachfolger oder
Vorgänger hängt von der Schlüsselanzahl
in der Blättern ab
●
Gibt es nicht genügend Schlüssel für eine
Entscheidung, werden Vorgänger und
Nachfolger gemischt
●
Löschung wird dann mit dem neuen
Knoten ausgeführt
B-Baum Beispiel
Komplexität
●
Algorithmen Teil 1
Komplexität
●
Effizienzbestimmung von (kritischen)
Algorithmen
–
Rechenzeit
–
belegter Speicher
–
Eingabe/Ausgabe (mit Wirkung auf Laufzeit)
–
Hauptspeicherzugriffe
–
Externer Speicher (um Faktor 104 - 105 langsamer)
Faktoren
–
Leistungsfähigkeit der Hardware
–
Qualität des vom Compiler generierten Codes
–
Eingabe (Anzahl der Eingabewerte n)
–
Zeitkomplexität des Algorithmus ==> Laufzeit als Funktion
der Eingabegröße ausgedrückt: T(n)
Komplexität
Komplexität
●
●
●
Komplexitätstheorie befaßt sich mit
–
Zeitkomplexität (Aufwand an Rechenzeit)
–
Speicherkomplexität (Aufwand an Speicherplatz)
Abstraktes Maschinenmodell
zugrundeliegend
–
Turingmaschine, Random-Access-Machine
–
Elementaroperationen (z.B. Zuweisung, Vergleich,
arithmetische Operationen, Arrayzugriff)
–
Nicht-elementare Operationen (z.B. Schleife,
Prozeduraufruf)
Komplexitätsklasse und asymptotisches
Verhalten
–
von abstrakter Eingabegrößen abhängig
Komplexität
Komplexität
Komplexität
Komplexität
Komplexität
Komplexität
Komplexität
Herunterladen