Effiziente Algorithmen und Datenstrukturen I Kapitel 3 Suchstrukturen

  • Slides: 192
Download presentation
Effiziente Algorithmen und Datenstrukturen I Kapitel 3: Suchstrukturen Christian Scheideler WS 2008 12/26/2021 Kapitel

Effiziente Algorithmen und Datenstrukturen I Kapitel 3: Suchstrukturen Christian Scheideler WS 2008 12/26/2021 Kapitel 3 1

Suchstruktur 8 4 11 20 18 3 12/26/2021 Kapitel 3 2

Suchstruktur 8 4 11 20 18 3 12/26/2021 Kapitel 3 2

Suchstruktur insert(15) 8 4 11 20 15 12/26/2021 18 3 Kapitel 3 3

Suchstruktur insert(15) 8 4 11 20 15 12/26/2021 18 3 Kapitel 3 3

Suchstruktur delete(20) 8 4 11 20 15 12/26/2021 18 3 Kapitel 3 4

Suchstruktur delete(20) 8 4 11 20 15 12/26/2021 18 3 Kapitel 3 4

Suchstruktur search(7) ergibt 8 (nächsten Nachfolger) 8 4 15 12/26/2021 11 18 3 Kapitel

Suchstruktur search(7) ergibt 8 (nächsten Nachfolger) 8 4 15 12/26/2021 11 18 3 Kapitel 3 5

Suchstruktur S: Menge von Elementen Jedes Element e identifiziert über key(e). Operationen: • S.

Suchstruktur S: Menge von Elementen Jedes Element e identifiziert über key(e). Operationen: • S. insert(e: Element): S: =S [ {e} • S. delete(k: Key): S: =Sn{e}, wobei e das Element ist mit key(e)=k • S. search(k: Key): gib e 2 S aus mit minimalem key(e) so dass key(e)>=k 12/26/2021 Kapitel 3 6

Statische Suchstruktur 1. Speichere Elemente in sortiertem Feld. search(12) 1 3 5 10 14

Statische Suchstruktur 1. Speichere Elemente in sortiertem Feld. search(12) 1 3 5 10 14 19 28 31 58 60 82 85 89 94 98 search: über binäre Suche ( O(log n) Zeit ) 12/26/2021 Kapitel 3 7

Binäre Suche Eingabe: Zahl x und ein sortiertes Feld A[1], …, A[n] Binäre Suche

Binäre Suche Eingabe: Zahl x und ein sortiertes Feld A[1], …, A[n] Binäre Suche Algorithmus: l: =1; r: =n while l < r do m: =(r+l) div 2 if A[m] = x then return m if A[m] < x then l: =m+1 else r: =m return l 12/26/2021 Kapitel 3 8

Dynamische Suchstruktur insert und delete Operationen: Sortiertes Feld schwierig zu aktualisieren! 15 1 3

Dynamische Suchstruktur insert und delete Operationen: Sortiertes Feld schwierig zu aktualisieren! 15 1 3 5 10 14 19 28 31 58 60 82 85 Worst case: (n) Zeit 12/26/2021 Kapitel 3 9

Suchstruktur 2. Sortierte Liste (mit 1 -Element) 1 3 … 19 1 Problem: insert,

Suchstruktur 2. Sortierte Liste (mit 1 -Element) 1 3 … 19 1 Problem: insert, delete und search kosten im worst case (n) Zeit Einsicht: Wenn search effizient zu implementieren wäre, dann auch alle anderen Operationen 12/26/2021 Kapitel 3 10

Suchstruktur Idee: füge Navigationsstruktur hinzu, die search effizient macht Navigationsstruktur 1 12/26/2021 3 …

Suchstruktur Idee: füge Navigationsstruktur hinzu, die search effizient macht Navigationsstruktur 1 12/26/2021 3 … Kapitel 3 19 1 11

Binärer Suchbaum (ideal) search(12) 10 3 19 1 1 12/26/2021 5 3 5 14

Binärer Suchbaum (ideal) search(12) 10 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 12

Binärer Suchbaum-Regel: k T 1 Für alle Schlüssel k´ in T 1 und k´´

Binärer Suchbaum-Regel: k T 1 Für alle Schlüssel k´ in T 1 und k´´ in T 2: k´ < k´´ T 2 Damit search Operation einfach zu implementieren. 12/26/2021 Kapitel 3 13

search(k) Operation k Für alle Schlüssel k´ in T 1 und k´´ in T

search(k) Operation k Für alle Schlüssel k´ in T 1 und k´´ in T 2: k´ < k´´ T 1 T 2 Suchstrategie: • Starte in Wurzel des Suchbaums • Für jeden erreichten Knoten v: – Falls key(v) > k, gehe zum linken Kind von v, sonst gehe zum rechten Kind 12/26/2021 Kapitel 3 14

Binärer Suchbaum Formell: für einen Baumknoten v sei • key(v) der Schlüssel in v

Binärer Suchbaum Formell: für einen Baumknoten v sei • key(v) der Schlüssel in v • d(v) die Anzahl Kinder von v • Suchbaum-Regel: (s. o. ) • Grad-Regel: Alle Baumknoten haben zwei Kinder (sofern #Elemente >1) • Schlüssel-Regel: Für jedes Element e in der Liste gibt es genau einen Baumknoten v mit key(v)=key(e). 12/26/2021 Kapitel 3 15

Search(9) 10 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel

Search(9) 10 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 16

Insert und Delete Operationen Strategie: • insert(e): Erst search(key(e)) bis Element e´ in Liste

Insert und Delete Operationen Strategie: • insert(e): Erst search(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e), füge e vor e´ ein und ein neues Suchbaumblatt für e und e´ mit key(e), so dass Suchbaum-Regel erfüllt. • delete(k): Erst search(k) bis ein Element e in Liste erreicht. Falls key(e)=k, lösche e aus Liste und Vater v von e aus Suchbaum, und setze in dem Baumknoten w mit key(w)=k: key(w): =key(v) 12/26/2021 Kapitel 3 17

Insert(5) 10 1 14 28 1 12/26/2021 10 14 Kapitel 3 28 1 18

Insert(5) 10 1 14 28 1 12/26/2021 10 14 Kapitel 3 28 1 18

Insert(5) 10 1 14 5 1 12/26/2021 5 28 10 14 Kapitel 3 28

Insert(5) 10 1 14 5 1 12/26/2021 5 28 10 14 Kapitel 3 28 1 19

Insert(12) 10 1 14 5 1 12/26/2021 5 28 10 14 Kapitel 3 28

Insert(12) 10 1 14 5 1 12/26/2021 5 28 10 14 Kapitel 3 28 1 20

Insert(12) 10 1 14 5 1 12/26/2021 5 12 10 12 Kapitel 3 28

Insert(12) 10 1 14 5 1 12/26/2021 5 12 10 12 Kapitel 3 28 14 28 1 21

Delete(1) 10 1 14 5 1 12/26/2021 5 12 10 12 Kapitel 3 28

Delete(1) 10 1 14 5 1 12/26/2021 5 12 10 12 Kapitel 3 28 14 28 1 22

Delete(1) 10 14 5 5 12/26/2021 12 10 12 Kapitel 3 28 14 28

Delete(1) 10 14 5 5 12/26/2021 12 10 12 Kapitel 3 28 14 28 1 23

Delete(14) 10 14 5 5 12/26/2021 12 10 12 Kapitel 3 28 14 28

Delete(14) 10 14 5 5 12/26/2021 12 10 12 Kapitel 3 28 14 28 1 24

Delete(14) 10 12 5 5 12/26/2021 28 10 12 Kapitel 3 28 1 25

Delete(14) 10 12 5 5 12/26/2021 28 10 12 Kapitel 3 28 1 25

Binärbaum Problem: Binärbaum kann entarten! Beispiel: Zahlen werden in sortierter Folge eingefügt Search benötigt

Binärbaum Problem: Binärbaum kann entarten! Beispiel: Zahlen werden in sortierter Folge eingefügt Search benötigt (n) Zeit im worst case 1 3 5 10 14 19 28 1 12/26/2021 3 5 10 14 19 Kapitel 3 28 1 26

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit hoher Wkeit gut balanciert) • (a, b)-Baum (garantiert gut balanciert) • Rot-Schwarz-Baum (konstanter Reorganisationsaufwand) • Gewichtsbalancierter Baum (kompakt einbettbar in Feld) 12/26/2021 Kapitel 3 27

Splay-Baum Üblicherweise: Implementierung als interner Suchbaum (d. h. Elemente direkt integriert in Baum und

Splay-Baum Üblicherweise: Implementierung als interner Suchbaum (d. h. Elemente direkt integriert in Baum und nicht in extra Liste) Hier: Implementierung als externer Suchbaum (wie beim Binärbaum oben) 12/26/2021 Kapitel 3 28

Splay-Baum search(19) 10 In Baum Zeiger auf Listenelement 3 19 1 1 12/26/2021 5

Splay-Baum search(19) 10 In Baum Zeiger auf Listenelement 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 29

Splay-Baum Ideen: 1. Im Baum Zeiger auf Listenelemente 2. Bewege Schlüssel von zugegriffenem Element

Splay-Baum Ideen: 1. Im Baum Zeiger auf Listenelemente 2. Bewege Schlüssel von zugegriffenem Element immer zur Wurzel 2. Idee: über Splay-Operation 12/26/2021 Kapitel 3 30

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1 a.

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1 a. x ist Kind der Wurzel: x y zig x A C A 12/26/2021 y B B Kapitel 3 C 31

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1 b.

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1 b. x ist Kind der Wurzel: y x zig x y A C B 12/26/2021 A C Kapitel 3 B 32

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2 a. x hat Vater und Großvater rechts:

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2 a. x hat Vater und Großvater rechts: x z y y x D C A 12/26/2021 zig-zig B z A B C Kapitel 3 D 33

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2 b. x hat Vater und Großvater links:

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2 b. x hat Vater und Großvater links: z x y y x A z zig-zig D B C C 12/26/2021 D A Kapitel 3 B 34

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3 a. x hat Vater links, Großvater rechts:

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3 a. x hat Vater links, Großvater rechts: z x y x D zig-zag y z A B 12/26/2021 C A Kapitel 3 B C D 35

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3 b. x hat Vater rechts, Großvater links:

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3 b. x hat Vater rechts, Großvater links: z x y A x zig-zag z y D B 12/26/2021 C A Kapitel 3 B C D 36

Splay-Operation Beispiel: zig-zag Operation (3 a) 10 3 19 x 1 1 12/26/2021 5

Splay-Operation Beispiel: zig-zag Operation (3 a) 10 3 19 x 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 37

Splay-Operation 5 10 3 19 1 1 12/26/2021 14 3 5 10 14 Kapitel

Splay-Operation 5 10 3 19 1 1 12/26/2021 14 3 5 10 14 Kapitel 3 28 19 28 1 38

Splay-Operation Beispiele: x x zig-zig, zig-zag, zig 12/26/2021 zig-zig, zig-zag, zig-zig, zig Kapitel 3

Splay-Operation Beispiele: x x zig-zig, zig-zag, zig 12/26/2021 zig-zig, zig-zag, zig-zig, zig Kapitel 3 39

Splay-Operation Baum kann im worst-case immer noch sehr unbalanciert werden! Aber amortisierte Kosten sind

Splay-Operation Baum kann im worst-case immer noch sehr unbalanciert werden! Aber amortisierte Kosten sind sehr niedrig. 1 3 5 10 14 19 28 1 12/26/2021 3 5 10 14 Kapitel 3 19 28 1 40

Splay-Operation search(k)-Operation: (exakte Suche) • Laufe von Wurzel startend nach unten, bis k im

Splay-Operation search(k)-Operation: (exakte Suche) • Laufe von Wurzel startend nach unten, bis k im Baumknoten gefunden (Abkürzung zur Liste) oder bei Liste angekommen • k in Baum: rufe splay(k) auf Amortisierte Analyse: m Splay-Operationen auf beliebigem Anfangsbaum mit n Elementen (m>n) 12/26/2021 Kapitel 3 41

Splay-Operation • Gewicht von Knoten x: w(x) • Baumgewicht von Baum T mit Wurzel

Splay-Operation • Gewicht von Knoten x: w(x) • Baumgewicht von Baum T mit Wurzel x: tw(x)= y 2 T w(y) • Rang von Knoten x: r(x) = log(tw(x)) • Potential von Baum T: (T) = x 2 T r(x) Lemma 3. 1: Sei T ein Splay-Baum mit Wurzel u und x ein Knoten in T. Die amortisierten Kosten für splay(x, T) sind max. 1+3(r(u)-r(x)). 12/26/2021 Kapitel 3 42

Splay-Operation Beweis von Lemma 3. 1: Induktion über die Folge der Rotationen. • r

Splay-Operation Beweis von Lemma 3. 1: Induktion über die Folge der Rotationen. • r und tw : Rang und Gewicht vor Rotation • r’ und tw’: Rang und Gewicht nach Rotation 1. Fall: x y zig y x A C Laufzeit (# Rot. ) B C A B Amortisierte Kosten: <= 1+r’(x)+r’(y)-r(x)-r(y) <= 1+r’(x)-r(x) da r’(y)<=r(y) <= 1+3(r’(x)-r(x)) da r’(x)>=r(x) Änderung von 12/26/2021 Kapitel 3 43

Splay-Operation 2. Fall: x z y y x D C A zig-zig B A

Splay-Operation 2. Fall: x z y y x D C A zig-zig B A z B C D Amortisierte Kosten: <= 2+r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z) = 2+r’(y)+r’(z)-r(x)-r(y) da r’(x)=r(z) <= 2+r’(x)+r’(z)-2 r(x) da r’(x)>=r’(y) und r(y)>=r(x) 12/26/2021 Kapitel 3 44

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig A z B B C Behauptung: Es gilt, dass 2+r’(x)+r’(z)-2 r(x) <= 3(r’(x)-r(x)) d. h. r(x)+r’(z) <= 2(r’(x)-1) 12/26/2021 Kapitel 3 D r’(z) 45

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig B A z B C Behauptung: Es gilt, dass r(x)+r’(z) <= 2(r’(x)-1) Ersetzungen: r(x) ! log x , r’(z) ! log y , r’(x) ! log 1. Betrachte die Funktion f(x, y)=log x + log y. Zu zeigen: f(x, y) <= -2 für alle x, y>0 mit x+y<1. 12/26/2021 Kapitel 3 D r’(z) 46

Splay-Operation Lemma 3. 2: Die Funktion f(x, y)=log x + log y hat in

Splay-Operation Lemma 3. 2: Die Funktion f(x, y)=log x + log y hat in dem Bereich x, y>0 mit x+y<=1 im Punkt (½, ½) ihr Maximum. Beweis: • Da die Funktion log x streng monoton wachsend ist, kann sich das Maximum nur auf dem Geradensegment x+y=1, x, y>0, befinden. • Neues Maximierungsproblem: betrachte g(x) = log x + log (1 -x) • Einzige Nullstelle von g’(x) = 1/x - 1/(1 -x) ist x=1/2. • Für g’’(x)= -(1/x 2 + 1/(1 -x)2)) gilt g’’(1/2) < 0. • Also hat Funktion f im Punkt (½, ½) ihr Maximum. 12/26/2021 Kapitel 3 47

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig

Splay-Operation 2. Fall: r’(x) x z y y r(x) x D C A zig-zig B A z B C D Behauptung: Es gilt, dass r’(z) r(x)+r’(z) <= 2(r’(x)-1) Ersetzungen: r(x) ! log x , r’(z) ! log y , r’(x) ! log 1. Es folgt: f(x, y)=log x + log y < -2 für alle x, y>0 mit x+y<1. Die Behauptung ist also korrekt. 12/26/2021 Kapitel 3 48

Splay-Operation 3. Fall: z y x x D zig-zag y z A B C

Splay-Operation 3. Fall: z y x x D zig-zag y z A B C D Amortisierte Kosten: <= 2+r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z) <= 2+r’(y)+r’(z)-2 r(x) da r’(x)=r(z) und r(x)<=r(y) <= 2(r’(x)-r(x)) denn… 12/26/2021 Kapitel 3 49

Splay-Operation 3. Fall: z y x x D zig-zag y z A B C

Splay-Operation 3. Fall: z y x x D zig-zag y z A B C D …es gilt: 2+r’(y)+r’(z)-2 r(x) <= 2(r’(x)-r(x)) , 2 r’(x)-r’(y)-r’(z) >= 2 , r’(y)+r’(z) <= 2(r’(x)-1) analog zu Fall 2 12/26/2021 Kapitel 3 50

Splay-Operation Beweis von Lemma 3. 1: (Fortsetzung) Induktion über die Folge der Rotationen. •

Splay-Operation Beweis von Lemma 3. 1: (Fortsetzung) Induktion über die Folge der Rotationen. • r und tw : Rang und Gewicht vor Rotation • r’ und tw’: Rang und Gewicht nach Rotation • Für jede Rotation ergeben sich amortisierte Kosten von max. 1+3(r’(x)-r(x)) (Fall 1) bzw. 3(r’(x)-r(x)) (Fälle 2 und 3) • Aufsummierung der Kosten ergibt max. 1 + Rot. 3(r’(x)-r(x)) = 1+3(r(u)-r(x)) 12/26/2021 Kapitel 3 51

Splay-Operation • Baumgewicht von Baum T mit Wurzel x: tw(x)= y 2 T w(y)

Splay-Operation • Baumgewicht von Baum T mit Wurzel x: tw(x)= y 2 T w(y) • Rang von Knoten x: r(x) = log(tw(x)) • Potential von Baum T: (T) = x 2 T r(x) Lemma 3. 1: Sei T ein Splay-Baum mit Wurzel u und x ein Knoten in T. Die amortisierten Kosten für splay(x, T) sind max. 1+3(r(u)-r(x)) = 1+3¢log (tw(u)/tw(x)). Korollar 3. 3; Sei W= x w(x) und wi das Gewicht von ki in i-tem search. Für m search-Operationen sind die amortisierten Kosten O(m+3 i=1 m log (W/wi)). 12/26/2021 Kapitel 3 52

Splay-Baum Theorem 3. 4: Die Laufzeit für m search Operationen in einem n-elementigen Splay-Baum

Splay-Baum Theorem 3. 4: Die Laufzeit für m search Operationen in einem n-elementigen Splay-Baum T ist höchstens O(m+(m+n)log n). Beweis: • Sei w(x) = 1 für alle Schlüssel x in T. • Dann ist W=n und r(x)<= log W = log n für alle x in T. • Erinnerung: für eine Operationsfolge F ist die Laufzeit T(F) <= A(F) + (s 0) für amortisierte Kosten A und Anfangszustand s 0 • (s 0) = x 2 T r 0(x) <= n log n • Aus Korollar 3. 3 ergibt sich Theorem 3. 4. 12/26/2021 Kapitel 3 53

Splay-Baum Angenommen, wir haben eine Wahrscheinlichkeitsverteilung für die Suchanfragen. • p(x) : Wahrscheinlichkeit für

Splay-Baum Angenommen, wir haben eine Wahrscheinlichkeitsverteilung für die Suchanfragen. • p(x) : Wahrscheinlichkeit für Schlüssel x • H(p) = x p(x)¢log(1/p(x)) : Entropie von p Theorem 3. 5: Die Laufzeit für m search Operationen in einem n-elementigen Splay-Baum T ist höchstens O(m¢H(p) + n¢log n). Beweis: Folgt aus Theorem 3. 4 mit w(x) = n¢p(x) für alle x. Laufzeit (m¢H(p)) für jeden statischen Suchbaum! 12/26/2021 Kapitel 3 54

Splay-Baum Operationen Annahme: zwei Splay-Bäume T 1 und T 2 mit key(x)<key(y) für alle

Splay-Baum Operationen Annahme: zwei Splay-Bäume T 1 und T 2 mit key(x)<key(y) für alle x 2 T 1 und y 2 T 2. merge(T 1, T 2): T 1 T 2 x T’ 1 1 x T 2 T’ 1 T 2 search(x), x<1 max. in T 1 12/26/2021 Kapitel 3 55

Splay-Baum Operationen split(k, T): k bzw. Nachf(k) T T 1 T 2 >k search(k)

Splay-Baum Operationen split(k, T): k bzw. Nachf(k) T T 1 T 2 >k search(k) 12/26/2021 T 1 Kapitel 3 56

Splay-Baum Operationen insert(e): • insert wie im Binärbaum • splay-Operation, um key(e) in Wurzel

Splay-Baum Operationen insert(e): • insert wie im Binärbaum • splay-Operation, um key(e) in Wurzel zu verschieben delete(k): • führe search(k) aus (bringt k in die Wurzel) • entferne Wurzel und führe merge(T 1, T 2) der beiden Teilbäume durch 12/26/2021 Kapitel 3 57

Splay-Operationen • k-: größter Schlüssel in T kleiner als k • k+: kleinster Schlüssel

Splay-Operationen • k-: größter Schlüssel in T kleiner als k • k+: kleinster Schlüssel in T größer gleich k Theorem 3. 6: Die amortisierten Kosten der Operationen im Splay-Baum sind: • search(k): O(1+log(W/w(k+))) • split(k): O(1+log(W/w(k+))) • merge(T 1, T 2): O(1+log(W/w(kmax(T 1)))) • insert(e): O(1+log(W/w(key(e)))) • delete(k): O(1+log(W/w(k+))+log(W/w(k-))) 12/26/2021 Kapitel 3 58

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit hoher Wkeit gut balanciert) • (a, b)-Baum (garantiert gut balanciert) • Rot-Schwarz-Baum (konstanter Reorganisationsaufwand) • Gewichtsbalancierter Baum (kompakt einbettbar in Feld) 12/26/2021 Kapitel 3 59

Treaps • K={k 1, …, kn}: Menge von Schlüsseln • w(ki): Gewicht von Schlüssel

Treaps • K={k 1, …, kn}: Menge von Schlüsseln • w(ki): Gewicht von Schlüssel ki Ein Baum T zu K heißt Treap: • T ist ein binärer Suchbaum für K • T ist ein Heap bzgl. der Gewichte von K 12/26/2021 Kapitel 3 60

Treaps Beispiel: 10 3 1 1 12/26/2021 Gewichte in rot 5 5 2 19

Treaps Beispiel: 10 3 1 1 12/26/2021 Gewichte in rot 5 5 2 19 3 5 3 1 6 10 14 14 Kapitel 3 28 12 19 28 4 1 61

Treaps Search(k)-Operation: • wie im binären Suchbaum Insert(e)-Operation: • führe insert(e) wie im binären

Treaps Search(k)-Operation: • wie im binären Suchbaum Insert(e)-Operation: • führe insert(e) wie im binären Suchbaum aus • siftup-Operation, um Heap-Eigenschaft sicherzustellen 12/26/2021 Kapitel 3 62

Treaps Siftup-Operation für x: wird über Rotationen durchgeführt Fall 1: ( w’>w ) w’

Treaps Siftup-Operation für x: wird über Rotationen durchgeführt Fall 1: ( w’>w ) w’ w w y y x 12/26/2021 w’ A C A x B B Kapitel 3 C 63

Treaps Siftup-Operation für x: wird über Rotationen durchgeführt Fall 2: ( w’>w ) w’

Treaps Siftup-Operation für x: wird über Rotationen durchgeführt Fall 2: ( w’>w ) w’ w y x w’ w y A C B 12/26/2021 x A C Kapitel 3 B 64

Treaps Insert(10): 3 3 5 1 1 12/26/2021 2 19 6 5 3 14

Treaps Insert(10): 3 3 5 1 1 12/26/2021 2 19 6 5 3 14 12 5 14 Kapitel 3 19 28 28 4 1 65

Treaps Insert(10): 3 3 5 1 12/26/2021 6 5 14 12 1 1 2

Treaps Insert(10): 3 3 5 1 12/26/2021 6 5 14 12 1 1 2 19 3 5 10 28 4 10 14 Kapitel 3 19 28 1 66

Treaps Insert(10): 3 3 5 1 1 12/26/2021 2 19 6 10 5 1

Treaps Insert(10): 3 3 5 1 1 12/26/2021 2 19 6 10 5 1 28 14 12 3 5 10 14 Kapitel 3 19 28 4 1 67

Treaps Insert(10): 3 3 10 1 1 12/26/2021 5 2 19 1 6 5

Treaps Insert(10): 3 3 10 1 1 12/26/2021 5 2 19 1 6 5 3 5 14 10 14 Kapitel 3 28 12 19 28 4 1 68

Treaps Insert(10): 2 19 1 10 3 3 1 1 12/26/2021 5 6 5

Treaps Insert(10): 2 19 1 10 3 3 1 1 12/26/2021 5 6 5 3 5 14 10 14 Kapitel 3 28 12 19 28 4 1 69

Treaps Insert(10): 10 3 1 1 12/26/2021 5 5 2 19 3 5 3

Treaps Insert(10): 10 3 1 1 12/26/2021 5 5 2 19 3 5 3 1 6 10 14 14 Kapitel 3 28 12 19 28 4 1 70

Treaps Delete(k)-Operation: • Führe delete(k) wie im binären Suchbaum aus k k’ k •

Treaps Delete(k)-Operation: • Führe delete(k) wie im binären Suchbaum aus k k’ k • siftdown-Operation, um Heap-Eigenschaft für k’ zu reparieren (k’ im Teilbaum von k!) 12/26/2021 Kapitel 3 71

Treaps Siftdown-Operation für x: wird über Rotationen durchgeführt Fall 1: ( w’<w , w’

Treaps Siftdown-Operation für x: wird über Rotationen durchgeführt Fall 1: ( w’<w , w’ minimal für Kinder von x) w w’ w’ x x y 12/26/2021 w A C A y B B Kapitel 3 C 72

Treaps Siftdown-Operation für x: wird über Rotationen durchgeführt Fall 2: ( w’<w, w’ minimal

Treaps Siftdown-Operation für x: wird über Rotationen durchgeführt Fall 2: ( w’<w, w’ minimal für Kinder von x ) w w’ x y w w’ x A C B 12/26/2021 y A C Kapitel 3 B 73

Treaps Lemma 3. 7: Sei K={k 1, …, kn} eine geordnete Schlüsselmenge mit paarweise

Treaps Lemma 3. 7: Sei K={k 1, …, kn} eine geordnete Schlüsselmenge mit paarweise verschiedenen Gewichten w(ki). Dann ist im Treap T für K das Element kj genau dann Vorgänger von ki wenn gilt: w(kj) = min {w(k) | k 2 Ki, j} wobei Ki, j = {ki, …, kj}. Beweis: Übung. 12/26/2021 Kapitel 3 74

Treaps Lemma 3. 8: Angenommen, die Gewichte seien eine zufällige Permutation über {1, …,

Treaps Lemma 3. 8: Angenommen, die Gewichte seien eine zufällige Permutation über {1, …, n} definiert mit w(ki)= (i) für alle i. Dann gilt Pr[kj ist Vorgänger von ki] = 1 |j - i| + 1 Beweis: • Aus Symmetriegründen ist für jedes k 2 {i, …, j} Pr[ (k) ist minimal in { (i), …, (j)}] gleich • Also ist nach Lemma 3. 7 Pr[kj ist Vorgänger von ki] = 1/(|j-i|+1) 12/26/2021 Kapitel 3 75

Treaps • Sei Xi, j 2 {0, 1} eine binäre Zufallsvariable, die 1 ist

Treaps • Sei Xi, j 2 {0, 1} eine binäre Zufallsvariable, die 1 ist genau dann, wenn kj Vorgänger von ki ist. • Sei Li die Tiefe von Schlüssel ki im Treap T (Tiefe der Wurzel: 0) • Dann ist Li = j Xi, j Aus Lemma 3. 7 folgt: E[Li] = j E[Xi, j] = j Pr[kj ist Vorgänger von ki in T] = j 1/(|j-i|+1) < 2 ln n 12/26/2021 Kapitel 3 76

Treaps Aus der Rechnung folgt: Theorem 3. 9: Wenn die Schlüssel uniform zufällig Gewichte

Treaps Aus der Rechnung folgt: Theorem 3. 9: Wenn die Schlüssel uniform zufällig Gewichte aus einem genügend großen Bereich W wählen, so dass die Wkeit gleicher Gewichte vernachlässigbar ist, dann ist für jeden Schlüssel k im Treap T die erwartete Tiefe O(log n). Diese Aussage gilt auch mit hoher Wahrscheinlichkeit (mindestens 1 -1/nc für jede Konstante c>1), d. h. Treap T ist m. h. W. balanciert. 12/26/2021 Kapitel 3 77

Treaps Laufzeiten der Operationen: • search(k): O(log n) m. h. W. • insert(e): O(log

Treaps Laufzeiten der Operationen: • search(k): O(log n) m. h. W. • insert(e): O(log n) m. h. W. • delete(k): O(log n) m. h. W. (m. h. W. : mit hoher Wahrscheinlichkeit) 12/26/2021 Kapitel 3 78

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit hoher Wkeit gut balanciert) • (a, b)-Baum (garantiert gut balanciert) • Rot-Schwarz-Baum (konstanter Reorganisationsaufwand) • Gewichtsbalancierter Baum (kompakt einbettbar in Feld) 12/26/2021 Kapitel 3 79

(a, b)-Bäume Problem: Binärbaum kann entarten! Lösung: (a, b)-Baum Idee: • Alle Knoten v

(a, b)-Bäume Problem: Binärbaum kann entarten! Lösung: (a, b)-Baum Idee: • Alle Knoten v (außer Wurzel) haben Grad d(v) mit a<=d(v)<=b, wobei a>=2 und b>=2 a-1 ist • Alle Blätter in derselben Ebene 12/26/2021 Kapitel 3 80

(a, b)-Bäume Formell: für einen Baumknoten v sei • d(v) die Anzahl der Kinder

(a, b)-Bäume Formell: für einen Baumknoten v sei • d(v) die Anzahl der Kinder von v • t(v) die Tiefe von v (Wurzel hat Tiefe 0) • Form-Regel: Für alle Blätter v, w: t(v)=t(w) • Grad-Regel: Für alle inneren Knoten v außer Wurzel: d(v) 2 [a, b], für Wurzel r: d(r) 2 [2, b] (sofern #Elemente >1) 12/26/2021 Kapitel 3 81

(a, b)-Bäume Lemma 3. 10: Ein (a, b)-Baum für n Elemente hat Tiefe max.

(a, b)-Bäume Lemma 3. 10: Ein (a, b)-Baum für n Elemente hat Tiefe max. 1+bloga (n+1)/2 c Beweis: • Die Wurzel hat Grad >=2 und jeder andere innere Knoten hat Grad >=a. • Bei Tiefe t gibt es mindestens 2 at-1 Blätter • n+1>=2 at-1 , t<= 1+bloga (n+1)/2 c 12/26/2021 Kapitel 3 82

(a, b)-Bäume (a, b)-Suchbaum-Regel: s 1, s 2, …, sd-1 Für alle Schlüssel k

(a, b)-Bäume (a, b)-Suchbaum-Regel: s 1, s 2, …, sd-1 Für alle Schlüssel k in Ti und k´ in Ti+1: k <= si < k´ . . T 1 T 2 Td Damit search Operation einfach zu implementieren. 12/26/2021 Kapitel 3 83

Search(9) 10 19 14 1 3 5 1 12/26/2021 3 5 10 14 Kapitel

Search(9) 10 19 14 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 28 19 28 1 84

Insert(e) Operation Strategie: • Erst search(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e),

Insert(e) Operation Strategie: • Erst search(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e), füge e vor e´ ein, ansonsten stop. . 12/26/2021 e‘ Kapitel 3 . . . 1 85

Insert(e) Operation Strategie: • Erst search(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e),

Insert(e) Operation Strategie: • Erst search(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e), füge e vor e´ ein, ansonsten stop. . 12/26/2021 e Kapitel 3 e‘ . . . 1 86

Insert(e) Operation • Füge key(e) und Zeiger auf e in Baumknoten v über e´

Insert(e) Operation • Füge key(e) und Zeiger auf e in Baumknoten v über e´ ein. Falls Grad von v kleiner gleich b, dann fertig. v . . . 12/26/2021 x v …x z… y z e e’ . . . Kapitel 3 x …x y z… y z e e’ . . . 87

Insert(e) Operation • Falls Grad von v größer als b, dann teile v in

Insert(e) Operation • Falls Grad von v größer als b, dann teile v in zwei Knoten auf. (Beispiel: a=2, b=4) w x u u‘ y e 12/26/2021 …a u z… split v x …a z… u x e’ u‘ u‘ y e y z x Kapitel 3 u e’ u‘ y z 88

Insert(e) Operation • Falls Grad von w größer als b, dann teile w in

Insert(e) Operation • Falls Grad von w größer als b, dann teile w in zwei Knoten auf (usw, bis Grad <=b oder Wurzel aufgeteilt wurde) … y … split w 12/26/2021 w x x y z Kapitel 3 z 89

Insert(8) a=2, b=4 10 19 14 1 3 5 1 12/26/2021 3 5 10

Insert(8) a=2, b=4 10 19 14 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 28 19 28 1 90

Insert(8) a=2, b=4 10 19 14 1 3 5 8 1 12/26/2021 3 5

Insert(8) a=2, b=4 10 19 14 1 3 5 8 1 12/26/2021 3 5 8 10 Kapitel 3 14 28 19 28 1 91

Insert(8) a=2, b=4 1 1 12/26/2021 3 10 19 5 8 3 5 8

Insert(8) a=2, b=4 1 1 12/26/2021 3 10 19 5 8 3 5 8 14 10 Kapitel 3 14 28 19 28 1 92

Insert(6) a=2, b=4 1 1 12/26/2021 3 10 19 5 8 3 5 8

Insert(6) a=2, b=4 1 1 12/26/2021 3 10 19 5 8 3 5 8 14 10 Kapitel 3 14 28 19 28 1 93

Insert(6) a=2, b=4 3 10 19 1 1 12/26/2021 5 6 8 3 5

Insert(6) a=2, b=4 3 10 19 1 1 12/26/2021 5 6 8 3 5 6 8 Kapitel 3 . . . 14 10 14 19 94

Insert(7) a=2, b=4 3 10 19 1 1 12/26/2021 5 6 8 3 5

Insert(7) a=2, b=4 3 10 19 1 1 12/26/2021 5 6 8 3 5 6 8 Kapitel 3 . . . 14 10 14 19 95

Insert(7) a=2, b=4 1 1 12/26/2021 3 10 19 5 6 7 8 3

Insert(7) a=2, b=4 1 1 12/26/2021 3 10 19 5 6 7 8 3 5 6 7 Kapitel 3 14 8 10 14 . . . 19 96

Insert(7) a=2, b=4 1 1 12/26/2021 3 6 10 19 5 3 5 7

Insert(7) a=2, b=4 1 1 12/26/2021 3 6 10 19 5 3 5 7 8 6 7 Kapitel 3 8 14 10 14 . . . 19 97

Insert(7) a=2, b=4 6 3 1 1 12/26/2021 10 19 5 3 5 7

Insert(7) a=2, b=4 6 3 1 1 12/26/2021 10 19 5 3 5 7 8 6 7 Kapitel 3 8 14 10 14 . . . 19 98

Insert Operation • Form-Regel: Für alle Blätter v, w: t(v)=t(w) Erfüllt durch Insert! •

Insert Operation • Form-Regel: Für alle Blätter v, w: t(v)=t(w) Erfüllt durch Insert! • Grad-Regel: Für alle inneren Knoten v außer Wurzel: d(v) 2 [a, b], für Wurzel r: d(r) 2 [2, b] 1) Insert splittet Knoten mit Grad b+1 in Knoten mit Grad d(b+1)/2 e und b(b+1)/2 c. Wenn b>=2 a 1, dann beide Werte >=a. 2) Wenn Wurzel Grad b+1 erreicht, wird eine neue Wurzel mit Grad 2 erzeugt. 12/26/2021 Kapitel 3 99

Delete(k) Operation Strategie: • Erst search(k) bis Element e in Liste erreicht. Falls key(e)=k,

Delete(k) Operation Strategie: • Erst search(k) bis Element e in Liste erreicht. Falls key(e)=k, entferne e aus Liste, ansonsten stop. . 12/26/2021 e´ e Kapitel 3 e´´ . . . 1 100

Delete(k) Operation Strategie: • Erst search(k) bis Element e in Liste erreicht. Falls key(e)=k,

Delete(k) Operation Strategie: • Erst search(k) bis Element e in Liste erreicht. Falls key(e)=k, entferne e aus Liste, ansonsten stop. . 12/26/2021 e´ e´´ Kapitel 3 . . . 1 101

Delete(k) Operation • Entferne Zeiger auf e und Schlüssel k vom Baumknoten v über

Delete(k) Operation • Entferne Zeiger auf e und Schlüssel k vom Baumknoten v über e. (e rechtestes Kind: key Vertauschung wie bei Binärbaum!) Falls Grad von v größer gleich a, dann fertig. v . . . x v …x k y… k y . . . …x y… x y . . . e 12/26/2021 Kapitel 3 102

Delete(k) Operation • Falls Grad von v kleiner als a und direkter Nachbar von

Delete(k) Operation • Falls Grad von v kleiner als a und direkter Nachbar von v hat Grad >a, nimm Kante von diesem Nachbarn. (Beispiel: a=2, b=4) u k t u y t v k y r s x 12/26/2021 y r s t x Kapitel 3 r y r s s t 103

Delete(k) Operation • Falls Grad von v kleiner als a und kein direkter Nachbar

Delete(k) Operation • Falls Grad von v kleiner als a und kein direkter Nachbar von v hat Grad >a, merge v mit Nachbarn. (Beispiel: a=3, b=5) u y t u t v merge x x 12/26/2021 r s y r s x y r s t x Kapitel 3 y r s t 104

Delete(k) Operation • Veränderungen hoch bis Wurzel, und Wurzel hat Grad <2: entferne Wurzel.

Delete(k) Operation • Veränderungen hoch bis Wurzel, und Wurzel hat Grad <2: entferne Wurzel. x y z 12/26/2021 x y z Kapitel 3 105

Delete(10) a=2, b=4 10 19 14 1 3 5 1 12/26/2021 3 5 10

Delete(10) a=2, b=4 10 19 14 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 28 19 28 1 106

Delete(10) a=2, b=4 5 19 1 3 1 12/26/2021 3 14 5 14 Kapitel

Delete(10) a=2, b=4 5 19 1 3 1 12/26/2021 3 14 5 14 Kapitel 3 28 19 28 1 107

Delete(14) a=2, b=4 5 19 1 3 1 12/26/2021 3 14 5 14 Kapitel

Delete(14) a=2, b=4 5 19 1 3 1 12/26/2021 3 14 5 14 Kapitel 3 28 19 28 1 108

Delete(14) a=2, b=4 5 19 1 3 1 12/26/2021 3 28 5 19 Kapitel

Delete(14) a=2, b=4 5 19 1 3 1 12/26/2021 3 28 5 19 Kapitel 3 28 1 109

Delete(14) a=2, b=4 3 19 1 1 12/26/2021 3 5 5 28 19 Kapitel

Delete(14) a=2, b=4 3 19 1 1 12/26/2021 3 5 5 28 19 Kapitel 3 28 1 110

Delete(3) a=2, b=4 3 19 1 1 12/26/2021 3 5 5 28 19 Kapitel

Delete(3) a=2, b=4 3 19 1 1 12/26/2021 3 5 5 28 19 Kapitel 3 28 1 111

Delete(3) a=2, b=4 3 19 1 1 12/26/2021 5 5 28 19 Kapitel 3

Delete(3) a=2, b=4 3 19 1 1 12/26/2021 5 5 28 19 Kapitel 3 28 1 112

Delete(3) a=2, b=4 1 19 5 1 12/26/2021 5 28 19 Kapitel 3 28

Delete(3) a=2, b=4 1 19 5 1 12/26/2021 5 28 19 Kapitel 3 28 1 113

Delete(3) a=2, b=4 19 1 5 1 12/26/2021 5 28 19 Kapitel 3 28

Delete(3) a=2, b=4 19 1 5 1 12/26/2021 5 28 19 Kapitel 3 28 1 114

Delete(1) a=2, b=4 19 1 5 1 12/26/2021 5 28 19 Kapitel 3 28

Delete(1) a=2, b=4 19 1 5 1 12/26/2021 5 28 19 Kapitel 3 28 1 115

Delete(1) a=2, b=4 19 5 5 12/26/2021 28 19 Kapitel 3 28 1 116

Delete(1) a=2, b=4 19 5 5 12/26/2021 28 19 Kapitel 3 28 1 116

Delete(19) a=2, b=4 19 5 5 12/26/2021 28 19 Kapitel 3 28 1 117

Delete(19) a=2, b=4 19 5 5 12/26/2021 28 19 Kapitel 3 28 1 117

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 118

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 118

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 119

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 119

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 120

Delete(19) a=2, b=4 5 28 28 5 12/26/2021 Kapitel 3 1 120

Delete Operation • Form-Regel: Für alle Blätter v, w: t(v)=t(w) Erfüllt durch Delete! •

Delete Operation • Form-Regel: Für alle Blätter v, w: t(v)=t(w) Erfüllt durch Delete! • Grad-Regel: Für alle inneren Knoten v außer Wurzel: d(v) 2 [a, b], für Wurzel r: d(r) 2 [2, b] 1) Delete verschmilzt Knoten mit Grad a-1 mit Knoten mit Grad a. Wenn b>=2 a-1, dann hat resultierender Knoten Grad <=b. 2) Delete verschiebt Kante von Knoten mit Grad >a nach Knoten mit Grad a-1. Auch OK. 3) Wurzel gelöscht: Kinder vorher verschmolzen, Grad vom verbeibenden Kind >=a (und <=b), also auch OK. 12/26/2021 Kapitel 3 121

Mehr Operationen • min/max Operation: Listenenden bekannt: Zeit O(1). • Bereichsanfragen: Um alle Elemente

Mehr Operationen • min/max Operation: Listenenden bekannt: Zeit O(1). • Bereichsanfragen: Um alle Elemente im Bereich [x, y] zu suchen, führe search(x) aus und durchlaufe dann die Liste, bis ein Element >y gefunden wird. Zeit O(log n + Ausgabegröße). 12/26/2021 Kapitel 3 122

Mehr Operationen • Concatenate-Operation: Ziel: Verknüpfe zwei (a, b)-Bäume T 1 und T 2

Mehr Operationen • Concatenate-Operation: Ziel: Verknüpfe zwei (a, b)-Bäume T 1 und T 2 mit s 1 und s 2 Elementen zu (a, b)-Baum T (Schlüssel in T 1 <= Schlüssel in T 2) + T 1 12/26/2021 = T 2 T Kapitel 3 123

Mehr Operationen Concatenate-Operation: Fall 1: Höhe(T 1)=Höhe(T 2) evtl. noch ein split, falls Grad

Mehr Operationen Concatenate-Operation: Fall 1: Höhe(T 1)=Höhe(T 2) evtl. noch ein split, falls Grad zu hoch xky x T 1 … 12/26/2021 T 1 k k y … 1 Kapitel 3 1 124

Mehr Operationen Concatenate-Operation: Fall 2: Höhe(T 1)<Höhe(T 2): k… T 1 … 12/26/2021 k

Mehr Operationen Concatenate-Operation: Fall 2: Höhe(T 1)<Höhe(T 2): k… T 1 … 12/26/2021 k k 1 T 2 <a Kanten: wie delete-Op behandeln … Kapitel 3 >b Kanten: wie insert-Op behandeln … 125

Mehr Operationen Concatenate-Operation: Fall 2: Höhe(T 1)>Höhe(T 2): >b Kanten: wie insert-Op behandeln …k

Mehr Operationen Concatenate-Operation: Fall 2: Höhe(T 1)>Höhe(T 2): >b Kanten: wie insert-Op behandeln …k T 2 k … 12/26/2021 k 1 Kapitel 3 <a Kanten: T 1 wie delete-Op behandeln … … 126

Mehr Operationen • Cut-Operation: Ziel: Spalte (a, b)-Baum T in (a, b)-Bäume T 1

Mehr Operationen • Cut-Operation: Ziel: Spalte (a, b)-Baum T in (a, b)-Bäume T 1 und T 2 bei Schlüssel k auf. T … 12/26/2021 k T 1 k´ … … 1 Kapitel 3 T 2 k 1 k´ 1 127

Cut-Operation 1. Suche nach k Pfad nach k v 1 : Suchpfad v 2

Cut-Operation 1. Suche nach k Pfad nach k v 1 : Suchpfad v 2 v 3. . . vk … 12/26/2021 k k´ Kapitel 3 … 1 128

Cut-Operation 2. Aufspaltung entlang Suchpfad s 1 … si si+1 … sd-1 : Suchpfad

Cut-Operation 2. Aufspaltung entlang Suchpfad s 1 … si si+1 … sd-1 : Suchpfad s 1 … si si+1 … sd-1 links rechts k s 1 … k si … sd-1 links … 12/26/2021 s 1 … k k Kapitel 3 rechts si … sd-1 129

Cut-Operation 2. Abbruch bei Aufspaltung: Fall 1: Fall 2: s 1>k: Aufspaltung hier been-

Cut-Operation 2. Abbruch bei Aufspaltung: Fall 1: Fall 2: s 1>k: Aufspaltung hier been- s 1… den …. sd-1<k: Aufspaltung hier beenden k 12/26/2021 k Kapitel 3 130

Cut-Operation 3. Einfügung von 1 in linken Teilbaum . . k’ k . .

Cut-Operation 3. Einfügung von 1 in linken Teilbaum . . k’ k . . k’ s 1. . sd-1 … k 12/26/2021 s 1. . sd-1 k … k Kapitel 3 1 131

Cut-Operation 4. Gradreparatur in den beiden Teilbäumen Strategie: bottom-up entlang Suchpfad, um zu gültigen

Cut-Operation 4. Gradreparatur in den beiden Teilbäumen Strategie: bottom-up entlang Suchpfad, um zu gültigen (a, b)-Bäumen zurückzukehren. (Wie bei insert und delete Operationen. ) 12/26/2021 Kapitel 3 132

Cut(1) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5

Cut(1) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 17 28 19 28 1 133

Cut(1) 10 19 1 1 12/26/2021 3 3 14 17 5 5 10 14

Cut(1) 10 19 1 1 12/26/2021 3 3 14 17 5 5 10 14 Kapitel 3 17 28 19 28 1 134

Cut(1) 10 19 1 1 12/26/2021 3 14 17 5 5 10 14 Kapitel

Cut(1) 10 19 1 1 12/26/2021 3 14 17 5 5 10 14 Kapitel 3 17 28 19 28 1 135

Cut(5) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5

Cut(5) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 17 28 19 28 1 136

Cut(5) 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14

Cut(5) 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 17 28 19 28 1 137

Cut(5) 14 19 10 1 3 5 1 12/26/2021 3 5 1 10 17

Cut(5) 14 19 10 1 3 5 1 12/26/2021 3 5 1 10 17 14 Kapitel 3 17 28 19 28 1 138

Cut(10) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5

Cut(10) a=2, b=4 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 17 28 19 28 1 139

Cut(10) 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14

Cut(10) 10 19 14 17 1 3 5 1 12/26/2021 3 5 10 14 Kapitel 3 17 28 19 28 1 140

Cut(10) 19 14 17 1 3 5 10 1 12/26/2021 3 5 10 1

Cut(10) 19 14 17 1 3 5 10 1 12/26/2021 3 5 10 1 14 Kapitel 3 17 28 19 28 1 141

Cut(10) 3 1 1 12/26/2021 19 14 17 5 10 3 5 10 1

Cut(10) 3 1 1 12/26/2021 19 14 17 5 10 3 5 10 1 14 Kapitel 3 17 28 19 28 1 142

n Update-Operationen Theorem 3. 11: Es gibt eine Folge von n insert und delete

n Update-Operationen Theorem 3. 11: Es gibt eine Folge von n insert und delete Operationen im (2, 3)Baum, so dass Gesamtanzahl der split und merge Operationen (n log n) ist. Beweis: Übung. 12/26/2021 Kapitel 3 143

n Update-Operationen Theorem 3. 12: Betrachte einen (a, b)-Baum mit b>=2 a, der anfangs

n Update-Operationen Theorem 3. 12: Betrachte einen (a, b)-Baum mit b>=2 a, der anfangs leer ist. Für jede Folge von n insert und delete Opera-tionen ist die Gesamtanzahl der split und merge Operationen O(n). Beweis: Amortisierte Analyse 12/26/2021 Kapitel 3 144

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit hoher Wkeit gut balanciert) • (a, b)-Baum (garantiert gut balanciert) • Rot-Schwarz-Baum (konstanter Reorganisationsaufwand) • Gewichtsbalancierter Baum (kompakt einbettbar in Feld) 12/26/2021 Kapitel 3 145

Rot-Schwarz-Baum Rot-Schwarz-Bäume sind binäre Suchbäume mit roten und schwarzen Knoten, so dass gilt: •

Rot-Schwarz-Baum Rot-Schwarz-Bäume sind binäre Suchbäume mit roten und schwarzen Knoten, so dass gilt: • Wurzelregel: Die Wurzel ist schwarz. • Externe Regel: Jeder Listenknoten ist schwarz. • Interne Regel: Die Kinder eines roten Knotens sind schwarz. • Tiefenregel: Alle Listenknoten haben dieselbe “Schwarztiefe” eines Knotens: Anzahl der schwarzen Baumknoten (außer der Wurzel) auf dem Pfad von der Wurzel zu diesem Knoten. 12/26/2021 Kapitel 3 146

Rot-Schwarz-Baum Beispiel: 10 3 19 1 1 12/26/2021 5 3 5 14 10 14

Rot-Schwarz-Baum Beispiel: 10 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 147

Rot-Schwarz-Baum Es gibt einen direkten Zusammenhang zwischen (2, 4)- und Rot-Schwarz-Bäumen: 15 15 13

Rot-Schwarz-Baum Es gibt einen direkten Zusammenhang zwischen (2, 4)- und Rot-Schwarz-Bäumen: 15 15 13 13 14 14 oder 14 13 7 6 7 8 6 12/26/2021 Kapitel 3 8 148

Rot-Schwarz-Baum R-S-Baum: 10 3 19 1 1 12/26/2021 5 3 5 14 10 14

Rot-Schwarz-Baum R-S-Baum: 10 3 19 1 1 12/26/2021 5 3 5 14 10 14 Kapitel 3 28 19 28 1 149

Rot-Schwarz-Baum (2, 4)-Baum: 3 10 14 19 28 1 1 12/26/2021 5 3 5

Rot-Schwarz-Baum (2, 4)-Baum: 3 10 14 19 28 1 1 12/26/2021 5 3 5 10 14 Kapitel 3 19 28 1 150

Rot-Schwarz-Baum Lemma 3. 13: Die Tiefe eines Rot-Schwarz-Baums T mit n Elementen ist O(log

Rot-Schwarz-Baum Lemma 3. 13: Die Tiefe eines Rot-Schwarz-Baums T mit n Elementen ist O(log n). Beweis: Wir zeigen: log(n+1)<=t<=2 log(n+1) für die Tiefe t des Rot-Schwarz-Baums. • d: Schwarztiefe der Listenknoten • T’: (2, 4)-Baum zu T • T’ hat Tiefe exakt d überall und d<=log(n+1) • Aufgrund der internen Eigenschaft gilt t<=2 d • Außerdem ist t>=log(n+1), da Rot-Schwarz. Baum ein Binärbaum ist. 12/26/2021 Kapitel 3 151

Rot-Schwarz-Baum search(k): wie im binären Suchbaum insert(e): • führe search(k) mit k=key(e) aus •

Rot-Schwarz-Baum search(k): wie im binären Suchbaum insert(e): • führe search(k) mit k=key(e) aus • füge e vor Nachfolger e’ in Liste ein Fall 1: Baum leer k 1 e 12/26/2021 Fall 2: Baum nicht leer k 1 e’ Kapitel 3 e e’ 152

Rot-Schwarz-Baum insert(e): • führe search(k) mit k=key(e) aus • füge e vor Nachfolger e’

Rot-Schwarz-Baum insert(e): • führe search(k) mit k=key(e) aus • füge e vor Nachfolger e’ in Liste ein (bewahrt alles bis auf evtl. interne Regel) • interne Regel verletzt (Fall 2 vorher): 2 Fälle – Fall 1: Vater von k in T hat schwarzen Bruder (Restrukturierung, aber beendet Reparatur) – Fall 2: Vater von k in T hat roten Bruder (setzt Reparatur nach oben fort, aber keine Restrukturierung) 12/26/2021 Kapitel 3 153

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w u

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w u v w w k k Alternativen u w u v w k 12/26/2021 v k Kapitel 3 154

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung:

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung: u v v D k u k C A A 12/26/2021 B C D B Kapitel 3 155

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung:

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung: u k v v D u k A A B 12/26/2021 B C D C Kapitel 3 156

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung:

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung: u k v u A v k D B 12/26/2021 A B C D C Kapitel 3 157

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung:

Rot-Schwarz-Baum Fall 1: Vater v von k in T hat schwarzen Bruder w Lösung: u v v u A k k B A C 12/26/2021 B C D D Kapitel 3 158

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w u

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w u v w w k k Alternativen u w u v w k 12/26/2021 v k Kapitel 3 159

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w Schwarztiefe+1

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w Schwarztiefe+1 u v w w k k Lösungen (u ist Wurzel) u w u v w k 12/26/2021 v k Kapitel 3 160

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w bewahrt

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w bewahrt Schwarztiefe! u v w w k k Lösungen (u keine Wurzel) u w u v w k 12/26/2021 v k Kapitel 3 161

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w u

Rot-Schwarz-Baum Fall 2: Vater v von k in T hat roten Bruder w u v w weiter mit u wie mit k u v w k k Lösungen (u keine Wurzel) u w u v w k 12/26/2021 v k Kapitel 3 162

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k wie im binären Suchbaum • Fall 1: Baum ist dann leer k 1 e 12/26/2021 1 Kapitel 3 163

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k wie im binären Suchbaum • Fall 2: Vater v von e ist rot (d. h. Bruder schwarz) v e 12/26/2021 v oder e’ e’ e Kapitel 3 r r 164

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k wie im binären Suchbaum • Fall 3: Vater v von e ist schwarz und Bruder rot v e 12/26/2021 r r Kapitel 3 165

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k wie im binären Suchbaum • Fall 4: Vater v von e und Bruder r sind schwarz x x Tiefenregel verletzt! r heißt dann doppelt schwarz v e 12/26/2021 r r Kapitel 3 166

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k

Rot-Schwarz-Baum delete(k): • führe search(k) auf Baum aus • lösche Element e mit key(e)=k wie im binären Suchbaum • falls Vater v von e und Bruder r sind schwarz, dann 3 weitere Fälle: – Fall 1: Bruder y von r ist schwarz und hat rotes Kind – Fall 2: Bruder y von r ist schwarz und beide Kinder von y sind schwarz (evtl. weiter, aber keine Restrukt. ) – Fall 3: Bruder y von r ist rot 12/26/2021 Kapitel 3 167

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O.

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O. B. d. A. sei r rechtes Kind von x (links: analog) Alternativen: (x: beliebig gefärbt) x y oder r y z 12/26/2021 x r z Kapitel 3 168

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O.

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O. B. d. A. sei r rechtes Kind von x (links: analog) x y y r z x z C A 12/26/2021 r A B Kapitel 3 B C 169

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O.

Rot-Schwarz-Baum Fall 1: Bruder y von r ist schwarz, hat rotes Kind z O. B. d. A. sei r rechtes Kind von x (links: analog) x z y r y z A r A B 12/26/2021 x B C C Kapitel 3 170

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y sind schwarz O. B. d. A. sei r rechtes Kind von x (links: analog) Alternativen: (z beliebig gefärbt) z z oder x y 12/26/2021 x y r Kapitel 3 r 171

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y sind schwarz O. B. d. A. sei r rechtes Kind von x (links: analog) 2 a) z z x y 12/26/2021 x y r Kapitel 3 r 172

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y sind schwarz O. B. d. A. sei r rechtes Kind von x (links: analog) 2 b) z z x y r r x ist Wurzel: fertig (Schwarztiefe-1) 12/26/2021 Kapitel 3 173

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y

Rot-Schwarz-Baum Fall 2: Bruder y von r ist schwarz und beide Kinder von y sind schwarz O. B. d. A. sei r rechtes Kind von x (links: analog) 2 b) z z x y r r x keine Wurzel: weiter wie mit r 12/26/2021 Kapitel 3 174

Rot-Schwarz-Baum Fall 3: Bruder y von r ist rot O. B. d. A. sei

Rot-Schwarz-Baum Fall 3: Bruder y von r ist rot O. B. d. A. sei r rechtes Kind von x (links: analog) x y A y x r A B B r Fall 1 oder 2 a ! terminiert dann 12/26/2021 Kapitel 3 175

Rot-Schwarz-Baum Laufzeiten der Operationen: • search(k): O(log n) • insert(e): O(log n) • delete(k):

Rot-Schwarz-Baum Laufzeiten der Operationen: • search(k): O(log n) • insert(e): O(log n) • delete(k): O(log n) Restrukturierungen: • insert(e): max. 1 • delete(k): max. 2 12/26/2021 Kapitel 3 176

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit

Binärbaum Problem: Binärbaum kann entarten! Lösungen: • Splay-Baum (sehr effektive Heuristik) • Treaps (mit hoher Wkeit gut balanciert) • (a, b)-Baum (garantiert gut balanciert) • Rot-Schwarz-Baum (konstanter Reorganisationsaufwand) • Gewichtsbalancierter Baum (kompakt einbettbar in Feld) 12/26/2021 Kapitel 3 177

Gewichtsbalancierter Baum • n: Anzahl der Elemente im Baum (gerundet auf einen Wert (1+

Gewichtsbalancierter Baum • n: Anzahl der Elemente im Baum (gerundet auf einen Wert (1+ )k für ein k 2 IN und eine feste Konstante 0< <1/2 ) • w(v): Anzahl Listenknoten unter Baum T(v) von v • Suchbaum-Regel: (s. o. ) • Grad-Regel: Alle Baumknoten haben zwei Kinder (sofern #Elemente >1) • Schlüssel-Regel: Für jedes Element e in der Liste gibt es genau einen Baumknoten v mit key(v)=key(e). • Gewichts-Regel: Für jeden Knoten v der Tiefe d gilt w(v) 2 [(1 - /log n)d(1 - ) n/2 d, (1+ /log n)d(1+ ) n/2 d] 12/26/2021 Kapitel 3 178

Gewichtsbalancierter Baum Tiefe 0 w(10)=8=n/20 10 1 3 w(3)=4=n/21 19 w(5)=n/22 1 12/26/2021 5

Gewichtsbalancierter Baum Tiefe 0 w(10)=8=n/20 10 1 3 w(3)=4=n/21 19 w(5)=n/22 1 12/26/2021 5 3 5 14 10 Kapitel 3 14 28 19 28 1 179

Gewichtsbalancierter Baum Gewichtsregel impliziert Tiefe max. log n+O(1). search(k): wie im binären Suchbaum insert(e):

Gewichtsbalancierter Baum Gewichtsregel impliziert Tiefe max. log n+O(1). search(k): wie im binären Suchbaum insert(e): • füge e ein wie im binären Suchbaum • Gewichtsregel nirgendwo verletzt: fertig • sonst sei v der höchste Knoten im Baum mit verletzter Gewichtsregel 12/26/2021 Kapitel 3 180

Gewichtsbalancierter Baum max. (1+ /log n)d-1(1+ ) n/2 d-1 Blätter unter u v keine

Gewichtsbalancierter Baum max. (1+ /log n)d-1(1+ ) n/2 d-1 Blätter unter u v keine Wurzel v u w Rebalanciere Aufwand: (n/2 d) 12/26/2021 Kapitel 3 181

Gewichtsbalancierter Baum u max. (1+ /log n)d-1(1+ ) n/2 d Blätter unter v und

Gewichtsbalancierter Baum u max. (1+ /log n)d-1(1+ ) n/2 d Blätter unter v und w Grenze für v und w: (1+ /log n)d(1+ ) n/2 d v w Rebalanciere mind. ( /log n)¢n/2 d inserts, bis v wieder übergewichtig 12/26/2021 Kapitel 3 182

Gewichtsbalancierter Baum v ist Wurzel v Erhöhe n um (1+ )-Faktor und rebalanciere kompletten

Gewichtsbalancierter Baum v ist Wurzel v Erhöhe n um (1+ )-Faktor und rebalanciere kompletten Baum nach neuem n (Aufwand: (n) ). • Obere Grenze für altes n: (1+ )k für ein k 2 IN • Untere Grenze für neues n: (1 - )(1+ )k+1 • Differenz: (1+ )k+1 = nneu viele deletes notwendig! 12/26/2021 Kapitel 3 183

Gewichtsbalancierter Baum delete(k): • führe zunächst delete(k) durch wie im binären Suchbaum • Gewichtsregel

Gewichtsbalancierter Baum delete(k): • führe zunächst delete(k) durch wie im binären Suchbaum • Gewichtsregel nirgendwo verletzt: fertig • sonst sei v der höchste Knoten im Baum mit verletzter Gewichtsregel 12/26/2021 Kapitel 3 184

Gewichtsbalancierter Baum min. (1 - /log n)d-1(1 - ) n/2 d-1 Blätter unter u

Gewichtsbalancierter Baum min. (1 - /log n)d-1(1 - ) n/2 d-1 Blätter unter u v keine Wurzel u v w Rebalanciere Aufwand: (n/2 d) 12/26/2021 Kapitel 3 185

Gewichtsbalancierter Baum u mind. (1 - /log n)d-1(1 - ) n/2 d Blätter unter

Gewichtsbalancierter Baum u mind. (1 - /log n)d-1(1 - ) n/2 d Blätter unter v und w Grenze für v und w: (1 - /log n)d(1 - ) n/2 d v w Rebalanciere mind. ( /log n)(1 - )¢n/2 d deletes, bis v wieder untergewichtig 12/26/2021 Kapitel 3 186

Gewichtsbalancierter Baum v ist Wurzel v Erniedrige n um (1+ )-Faktor und rebalanciere kompletten

Gewichtsbalancierter Baum v ist Wurzel v Erniedrige n um (1+ )-Faktor und rebalanciere kompletten Baum nach neuem n. • Untere Grenze für altes n: (1 - )(1+ )k für ein k 2 IN • Obere Grenze für neues n: (1+ )k-1 • Differenz: (1+ )k = nalt viele inserts notwendig! 12/26/2021 Kapitel 3 187

Gewichtsbalancierter Baum Es gilt: • Für jeden Knoten v der Tiefe d nur Reorganisation

Gewichtsbalancierter Baum Es gilt: • Für jeden Knoten v der Tiefe d nur Reorganisation alle (( /log n) n/2 d) viele insert/delete Operationen. • Knoten v hat zu jeder Zeit (n/2 d) Knoten unter sich. Das ist auch Reorganisationsaufwand. • Pro insert/delete Operation maximal O(log n) Knoten betroffen (d. h. sie erfahren Gewichtsveränderung). Amortisierter Aufwand pro insert/delete Operation: O( d 12/26/2021 (n/2 d) ( /log n) (n/2 d) ) = O( log 2 n / ) Kapitel 3 188

Gewichtsbalancierter Baum Vorteil: Baum kann in Feld eingebettet werden Regel: Gib Knoten v der

Gewichtsbalancierter Baum Vorteil: Baum kann in Feld eingebettet werden Regel: Gib Knoten v der Tiefe d Feld der Größe (1+ )2 n/2 d, v selbst in der Mitte des Feldes Reicht, da (1+ /log n)d(1+ ) n/2 d <= (1+ )2 n/2 d Feldgröße (1+ )2 n 12/26/2021 Kapitel 3 189

Gewichtsbalancierter Baum Beispiel: 10 3 19 1 12/26/2021 5 3 3 5 14 10

Gewichtsbalancierter Baum Beispiel: 10 3 19 1 12/26/2021 5 3 3 5 14 10 28 19 14 Kapitel 3 28 19 1 28 190

Gewichtsbalancierter Baum Wir können also auch effizient sortierte Felder verwalten. Anwendungen: • Bereichsanfragen mit

Gewichtsbalancierter Baum Wir können also auch effizient sortierte Felder verwalten. Anwendungen: • Bereichsanfragen mit wenig I/O Operationen • Inhalt editierter Files bleibt aufeinanderfolgend, d. h. keine Fragmentierung 12/26/2021 Kapitel 3 191

Ausblick Weiter mit Wörterbüchern und Hashing 12/26/2021 Kapitel 3 192

Ausblick Weiter mit Wörterbüchern und Hashing 12/26/2021 Kapitel 3 192