Lecture 15 Flashcards

(36 cards)

1
Q

Drei grundlegende Invarianten eines binären Suchbaums (BST)?

A

Schlüssel-Invariante (alle Schlüssel eindeutig), Grad-Invariante (d(v) ≤ 2), Suchbaum-Invariante (links ≤ key < rechts).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Bei externen BSTs kommt welche Zusatzbedingung hinzu?

A

Für jedes Listenelement e existiert genau ein Baumknoten v mit key(e)=key(v)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Warum wird ein Dummy-Element ∞ als Blatt eingefügt?

A

Damit locate(k) auch für k > max stets ein Blatt liefert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

locate-Strategie im BST?

A

Ab Wurzel: links, falls key(v) ≥ k; sonst rechts – bis Blatt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Worst-Case-Höhe eines unge­balancierten BST?

A

Θ(n) – z. B. bei sortierter Einfügefolge entartet der Baum zur Liste.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Insert in externem BST – wesentliche Schritte?

A

locate → neues Blatt + Splitter-Knoten einfügen, wenn key(e) eindeutig kleiner als key(e′).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Remove im externen BST – Kerngedanke?

A

locate → Element aus Liste + Vaterknoten entfernen; ggf. Schlüssel im verbleibenden Kind ersetzen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Warum brauchen wir balancierte Suchbäume?

A

Um die Θ(n)-Höhe (und damit Operationen) im Worst-Case auf Θ(log n) zu begrenzen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Zwei vorgestellte Balance-Ansätze?

A

AVL-Bäume (lockern Balance), (a,b)-Bäume (lockern Grad).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Warum entstehen Fibonacci-Zahlen beim Worst-Case-AVL?

A

Bei jeder Stufe hat ein Kind Höhe h−1, das andere h−2 ⇒ F_h = F_{h−1}+F_{h−2}.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Rotationsarten beim AVL-Insert?

A

Einfachrotation (LL, RR) bei gleichem Vorzeichen; Doppelrotation (LR, RL) bei verschiedenen Vorzeichen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was entscheidet, ob nach Insert weiter nach oben balanciert wird?

A

Neue Höhendifferenz des aktuellen Knotens: 0→Stop, ±1→eine Ebene weiter, ±2→Rotation nötig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

remove in AVL – wichtigste Unterschiede zum Insert-Fall?

A

Höhendifferenz kann kleiner werden; evtl. mehrere Rotationen auf nachfolgenden Ebenen nötig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Laufzeit locate/insert/remove im AVL?

A

O(log n) – höchstens eine Rotation pro Ebene

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Definition eines (a,b)-Baums (zwei Invarianten)?

A

Form: alle Blätter gleiche Tiefe. Grad: a ≤ d(v) ≤ b (außer Wurzel 2…b).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Erlaubter Wertebereich für a,b?

A

a ≥ 2, b ≥ 2a − 1

17
Q

Tiefe eines (a,b)-Baums maximal?

A

≤ 1 + ⌈log_a ((n+1)/2)⌉

18
Q

Rolle der Split-Schlüssel in einem (a,b)-Knoten?

A

Trennen die Teilbäume: für k in T_i und k′ in T_{i+1}: k ≤ s_i < k′.

19
Q

locate im (a,b)-Baum – Komplexität?

A

Θ(log n) aufgrund begrenzter Tiefe.

20
Q

insert(e) – wann wird gesplittet?

A

Wenn nach Einfügen d(v) > b: Knoten teilen, mittleren Schlüssel ins Elternteil hochschieben; evtl. kaskadierend bis zur Wurzel.

21
Q

Welche Knotengrade entstehen beim Split?

A

⌈(b+1)/2⌉ und ⌊(b+1)/2⌋ – beide ≥ a wegen b ≥ 2a−1.

22
Q

remove(k) – drei mögliche Fälle bei Unterlauf d(v)<a?

A

(1) Stehlen von Nachbar mit Grad > a; (2) Merge zweier Nachbarn; (3) eventuell Wurzel verschmelzen (Grad < 2).

23
Q

Was passiert, wenn bei remove die Wurzel Grad < 2 erreicht?

A

Wurzel wird entfernt, ihr einziges Kind wird neue Wurzel.

24
Q

Vorteil des Stehlens gegenüber Mergen?

A

Vermeidet Abstieg ins nächste Level und reduziert Schlüssel-Moves.

25
Laufzeit insert/remove im (a,b)-Baum?
O(log n) – höchstens ein Split/Merge pro Ebene
26
Warum eignet sich (a,b)-Baum für Festplatten?
Hoher Knotengrad → geringe Tiefe → weniger Blocktransfers; alle Split-Keys eines Knotens liegen in einem Block.
27
Beispielparameter eines B-Baums (Festplatte)?
a ≈ 50, b ≈ 100 (Block mit 4 KB & 32-Bit-Keys). (Ableitung wird im Skript erwähnt.)
28
Was garantiert Grad-Invariante beim Insert?
b ≥ 2a−1 ⇒ nach Split beide Kinder mindestens Grad a.
29
Wieso kann ein Split die Baumtiefe höchstens um 1 erhöhen?
Nur wenn die Wurzel gesplittet wird; alle anderen Splits verschieben Schlüssel nach oben, aber Baumhöhe bleibt konstant.
30
locate-Pfad in Beispiel-(2,4)-Baum für k=9?
28 → 19 → Liste (10 …); liefert 10 als erstes ≥ 9.
31
Insert(8) in (2,4)-Baum: Wo erscheinen neue Schlüssel?
In Blattliste {5, 8, 10}; Split erzeugt neue Elternschlüssel 8 & 14.
32
Nach welchen Kriterien wird beim Remove welcher Nachbar gewählt?
Zuerst Nachbar mit Grad >a; existiert keiner → Merge mit beliebigem Nachbarn.
33
Zeitliche Komplexität der Rotations- und Split-Operationen selbst?
O(1) – nur konstante Zeiger/Schlüssel werden verschoben.
34
Was stellt die Form-Invariante beim Insert sicher?
Neues Blatt wird immer auf derselben Ebene wie existierende Blätter eingefügt; Split der Wurzel erhöht alle Pfade um genau 1.
35
Wie viele Schlüssel speichert ein innerer (a,b)-Knoten?
d(v) − 1 Split-Schlüssel.
36
Warum kann locate/insert/remove auf AVL trotz Rotation O(log n) bleiben?
Jede Rotation braucht O(1); Pfadlänge bis zur Wurzel ist O(log n).