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