Lecture 16 Flashcards
(27 cards)
Welche Form-Invariante muss bei remove in einem (a,b)-Baum erhalten bleiben?
Alle Blätter behalten dieselbe Tiefe; nur wenn die alte Wurzel verschwindet, verringert sich die Blatttiefe um 1.
Welche Fälle garantiert die Grad-Invariante bei remove?
- Merge von Knoten Grad a−1 & a ergibt Grad ≤ b.
- Stehlen: Nachbar Grad > a gibt eine Kante ab → beide Grade in [a,b].
- Nach Wurzel-Löschung ist Grad des letzten Kindes ≥ a.
Warum gilt die Grad-Invariante bei remove, wenn b ≥ 2a − 1?
Nach Verschmelzen zweier Knoten liegt ihr gemeinsamer Grad höchstens bei b.
Was besagt der Ω(n log n)-Satz für (2,3)-Bäume?
Es existiert eine Folge von n insert/remove, die Ω(n log n) Splits + Merges verursacht.
Welche Bedingung verbessert diese Schranke zu O(n)?
Erweiterte Bedingung b ≥ 2a (also mehr Spielraum nach oben) für allgemeine (a,b)-Bäume.
Welches Analysewerkzeug beweist die O(n)-Grenze?
Amortisierte Analyse (Details folgen erst später im Kurs).
Vergleiche Asymptotik: (a,b)- vs. AVL-Baum (locate/insert/remove).
Beide Θ(log n) bzw. O(log n); (a,b) eignet sich besser für blockbasierten Zugriff.
Laufzeit der min()/max()-Operation auf dem (a,b)-Baum?
O(1) – direkte Nutzung der first/last-Zeiger der Blattliste.
Wie beantwortet man eine Range Query [x,y]?
locate(x) + Listendurchlauf bis key > y ⇒ O(log n + Ausgabegröße).
Warum ist locate(x) Teil der Range-Query-Zeit?
Liefert Startposition in logarithmischer Zeit; danach kostet jeder ausgegebene Schlüssel O(1).
Was sind die beiden Strukturoperationen auf (a,b)-Bäumen, die neu eingeführt werden?
Konkatenation (join) und Aufspaltung (split).
Bedingung für die Konkatenation zweier (a,b)-Bäume T₁, T₂?
Alle Schlüssel in T₁ ≤ alle Schlüssel in T₂.
Erster Schritt bei der Konkatenation (T₁ + T₂)?
Dummy-∞ aus T₁ entfernen; evtl. Unterlauf des Vaterknotens behandeln (wie remove).
Wie verbindet man die beiden Bäume anschließend?
Wurzel des kleineren Baums mit äußerstem Knoten gleicher Höhe im größeren Baum verschmelzen; Überlauf wird wie insert repariert.
Grundidee der Aufspaltung an Schlüssel k?
Teile Pfad zur Blattposition k; splitte jeden Pfadknoten in linke/rechte Hälften → erhalte O(log n) Teilbäume; verkette sie zu zwei neuen (a,b)-Bäumen.
Welche Teilsequenzen entstehen in der Aufspaltung?
Links: alle Schlüssel < k; Rechts: alle Schlüssel ≥ k.
Warum genügt es, nur Knoten auf dem Pfad zu splitten?
Alle anderen Knoten liegen vollständig in einer der beiden Hälften.
Laufzeit der Aufspaltung?
O(log n) – ≤ log n Splits + ≤ log n Konkatenationen, zusammen O(log n).
Bei der Aufspaltung: Was passiert mit Knoten ohne Kinder?
Sie werden verworfen; nur nicht-leere Teilbäume bleiben als Wurzeln bestehen.
Warum sind die Höhen der linken (bzw. rechten) Teilbäume streng monoton fallend (steigend)?
Jeder nächste Knoten auf dem Pfad liegt eine Ebene tiefer → garantiert abnehmende bzw. zunehmende Höhe.
Wie nutzt man diese Höheneigenschaft in der Laufzeitanalyse?
Addiert Differenzen hi − hi+1 zu einer Teleskopsumme ⇒ O(log n).
Welcher Spezialfall der Aufspaltung wird in der Folie demonstriert?
Split eines (2,4)-Baums bei Schlüssel 11.
Was ist nach dem Split das kleinste Element im rechten Baum?
Der Split-Schlüssel selbst (y in der Foliennotation).
Warum wird vor der Konkatenation ein neuer Dummy-∞ eingefügt?
Damit jeder Teilbaum wieder die Blatt-Dummy-Eigenschaft besitzt.