Algorithmen und Datenstrukturen - Humboldt

Werbung
Übung Algorithmen und Datenstrukturen
Sommersemester 2015
Marc Bux, Humboldt-Universität zu Berlin
Organisatorisches
• Probeklausur
• Übungsreihenfolge vertauschen?
• Klausurvorbereitung – Wunschthemen
2
Agenda
• Hashing
• Binäre Suchbäume
• AVL-Bäume
3
Aufgabe zu Hashing
4
Agenda
• Hashing
• Binäre Suchbäume
• AVL-Bäume
5
Binäre Suchbäume
• Knoten
 beinhaltet „Schlüssel“
 hat Verweis auf linkes und rechtes Kind
• Sortierung/Sucheigenschaft
 Schlüssel des linken Teilbaums eines Knotens sind kleiner als Schlüssel
des Knotens selbst
 Schlüssel des rechten Teilbaums eines Knotens sind größer als
Schlüssel des Knotens selbst
 Gleiche Schlüssel entweder links oder rechts
10
6
1
15
8
13
19
14
6
Aufgabe zu Binären Suchbäumen
7
Agenda
• Hashing
• Binäre Suchbäume
• AVL-Bäume
8
AVL-Bäume
• Benannt nach Erfindern Adelson-Velsky und Landis (AVL)
• Älteste Datenstruktur für balancierte Bäume
• Binärer Suchbaum mit zusätzlicher Eigenschaft
 In jedem Knoten unterscheidet sich die Höhe der beiden Teilbäume
um höchstens eins
 Höhe logarithmisch in Anzahl der Schlüssel
• Rebalancierung (Rotation) beim Einfügen und Löschen
• Definition:
 Sei u Knoten in binärem Baum.
 bal(u) = Differenz zwischen Höhe
des rechten Teilbaums von u und
Höhe des linkes Teilbaums von u
 Ein binärer Baum heißt AVL-Baum,
falls für alle Knoten u gilt: |bal(u)| ≤ 1
10 1
6 0
15 –1
1 0 8 0 13 1 19 0
14 0
9
Rebalancierung von AVL-Bäumen
• 4 Rotationsoperationen auf AVL-Bäumen:





Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe
bal(u) = 2, bal(v) = 1: Einfachrotation Links(u)
bal(u) = 2, bal(v) = -1: Doppelrotation Rechts(v) + Links(u)
bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u)
bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u)
• Laufzeit: Rotationen sind lokale Operationen, die nur
Umsetzen einiger Zeiger erfordern, und in Zeit 𝒪(1) erfolgen
Aufgabe: Sei T ein leerer AVL-Baum. Fügen Sie nacheinander die
Elemente 30, 20, 22, 55, 66, 44, 33 ein
10
Aufgabe zu AVL-Bäumen
Sei T folgender AVL-Baum:
30 1
22 -1
20 0
55 -1
44 -1 66 0
33 0
Fügen Sie nacheinander die Schlüssel
39, 42
in T ein und zeichnen Sie den jeweiligen AVL-Baum nach jeder
insert-Operation.
11
Einfügen von 39
bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u)
30 1
22 -1
20 0
30
55 -1
22
44 -1 66 0
55
20
44
33 0
66
39
33
30 2
22 -1
20 0
30 1
55 -2
44 -2 66 0
33 1
39 0
22 -1
20 0
55 -1
39 0
33 0
66 0
44 0
12
Einfügen von 42
bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u)
30 1
22 -1
20 0
30
55 -1
39 0
33 0
22
66 0
55
20 0
66 0
44
44 0
39
33
42
30 2
22 -1
20 0
30 1
55 -2
39 1
33 0
66 0
44 -1
42 0
22 -1
20 0
44 0
39 0
33 0
55 1
42 0
66 0
13
Agenda
• Hashing
• Binäre Suchbäume
• AVL-Bäume
14
Ausblick: Nächste zwei Wochen
•
•
•
•
•
•
•
Rückgabe der Abgaben zum vierten Übungsblatt
Besprechung der Bewertung zum vierten Übungsblatt
Besprechung der Lösungen des fünften Übungsblatts
Vorstellen der Aufgaben des sechsten Übungsblatts
Optimale Suchbäume
Graphalgorithmen
Fragen?
Herunterladen