870 likes | 1.05k Views
Geoinformation II. Vorlesung 2 SS 2001. AVL-Bäume. Übersicht I. Einfacher Segmentschnitt I Verwaltung der aktiven Elemente letzte Stunde zur Erinnerung: Algorithmus Scan-Line Datenstrukturen für T und S Binärer Suchbaum Exkurs: AVL-Bäume AVL-Baum (Definition) AVL-Baum: Beispiel
E N D
Geoinformation II Vorlesung 2 SS 2001 AVL-Bäume
Übersicht I • Einfacher Segmentschnitt I • Verwaltung der aktiven Elemente • letzte Stunde • zur Erinnerung: Algorithmus Scan-Line • Datenstrukturen für T und S • Binärer Suchbaum • Exkurs: AVL-Bäume • AVL-Baum (Definition) • AVL-Baum: Beispiel • Balancefaktor Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Übersicht II • AVL-Baum: Beispiel • Einfügen von Knoten • Löschen von Knoten • L-Rotation • LR-Rotation • Exkurs: AVL-Bäume in Kürze • Vollständige Bäume • Minimale Knotenanzahl von AVL-Bäumen • Fibonacci-Zahlen Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Übersicht III • Minimale Knotenanzahl von AVL-Bäumen • Maximale Höhe von AVL-Bäumen • Das Wichtigste zu AVL in Kürze • 4 Fälle im Überblick • Zurück zur GIS Vorlesung • Eine Variante des AVL-Baums • für die Haltepunkte ... Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
P2 P2 P3 P2 P3 P4 P1 g P4 P4 g` P1 P1 P3 Einfacher Segmentschnitt I S1 = det ( P1,P3,P4) Def.: Vor.: Alle Determinanten sind 0: S2 = det ( P3,P1,P2) g und g` schneiden sich genau dann, wenn S1, S2 S3 = det ( P2,P3,P4) sowie S3, S4jeweils verschiedene Vorzeichen S4 = det ( P4,P1,P2) haben. Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
B C E D Verwaltung der aktiven Elemente F B S2 S3 C S4 D A S1 E Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
letzte Stunde • Scan-Line • Hauptideen • Projektion auf x-Achse • Beschränkung auf aktive Elemente • Ordnung der aktiven Elemente durch Scan-Line • Beschränkung auf Nachbarn • zum Schluß: 2-Segment-Schnitt (müßte Ihnen bekannt sein) • heute: • Datenstrukturen für Scan-Line • Polygon-Overlay Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Input: S: eine Menge von Segmenten Output: die Schnittpunkte der Elemente von S Sei T = Endpunkte der Segmente von S nach x-Koordinaten sortiert (Haltepunkte) L = // aktive Segmente von S while T do bestimme und entferne den nächsten Punkt pT x ist x-Koordinate von p case: p ist linker Endpunkt von sfuege_ein(s,x,L)sl = vorgaenger(s,x,L)sr = nachfolger(s,x,L) schnitt(sl,s,T); schnitt(s,sr,T); p ist rechter Endpunkt von s sl = vorgaenger(s,x,L)sr = nachfolger(s,x,L) entferne(s,x,L) schnitt(sl,sr,T) p ist Schnittpunkt von s und t vertausche(s,t,L,x) // t < ssl = vorgaenger(t,x,L)sr = nachfolger(s,x,L) schnitt(sl,t,T) schnitt(s,sr,T) zur Erinnerung: Algorithmus Scan-Line Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Datenstrukturen für T und S • Datenstrukur für T • AVL-Baum • siehe diskrete Mathematik • zur Erinnerung: was ist ein AVL-Baum • erstens ein Suchbaum • und zwar ein ausgeglichener Suchbaum • Datenstruktur für L • AVL-Baum? • Vorgänger und Nachfolger • Variante des AVL-Baums • alle Informationen sind in Blättern (nicht in inneren Knoten) • die Blätter bilden eine doppelt verkettete Liste Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
<n >n Binärer Suchbaum • Ein binärer Baum B ist ein binärer Suchbaum, falls er leer ist oder die folgenden Eigenschaften erfüllt sind: • die beiden Unterbäume sind binäre Suchbäume • die Beschriftungen der Knoten des linken Suchbaums sind kleiner als die Beschriftung der Wurzel • die Beschriftungen des rechten Suchbaums sind größer als die Beschriftung der Wurzel n Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Exkurs: AVL-Bäume siehe Vorlesung Nr. 9 Diskrete Mathe I
AVL-Baum (Definition) Ein binärer Baum heißt ausgeglichener Baum oder AVL-Baum (nach Adelson-Velskij und Landis), falls sich für jeden Knoten k die Höhen h der beiden Teilbäume um höchstens 1 unterscheiden. Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
AVL-Baum: Beispiel Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Balancefaktor Balancefaktor bal(k) bal(k) = h(rechter Teilbaum von k) - h(linker Teilbaum von k) Für AVL-Bäume gilt: bal(k) Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
AVL-Baum: Beispiel +1 -1 +1 0 0 +1 0 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
AVL-Baum: Beispiel +1 -1 +1 0 0 +1 0 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
AVL-Baum: Beispiel +2 0 +1 0 +1 0 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Einfügen von Knoten Einfügen von k = 30 +1 14 0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Einfügen von Knoten Einfügen von k = 30 +1 14 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Einfügen von Knoten Einfügen von k = 30 +1 14 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 0 3 11 33 0 0 26 39 Einfügen von Knoten Einfügen von k = 30 +1 14 +1 20 0 17 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 0 3 11 33 0 0 26 39 Einfügen von Knoten Einfügen von k = 30 +1 14 +1 20 0 17 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Einfügen von Knoten Einfügen von k = 30 +1 14 0 30 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 +1 8 20 0 0 0 0 3 11 17 33 0 26 39 0 30 Einfügen von Knoten Einfügen von k = 30 +1 14 +1 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 3 11 33 +1 0 26 39 0 30 Einfügen von Knoten Einfügen von k = 30 +1 14 +1 20 0 -1 17 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 -1 3 11 33 +1 0 26 39 0 30 Einfügen von Knoten Einfügen von k = 30 +1 14 +2 20 0 17 Ausgeglichenheit ist verletzt Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 -1 3 11 33 +1 0 26 39 0 30 Einfügen von Knoten Einfügen von k = 30 +1 14 +2 20 0 17 Ausbalancieren durch Rotation Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Einfügen von Knoten Einfügen von k = 30 +1 14 0 +2 8 20 0 0 0 -1 3 11 17 33 +1 0 26 39 R- Rotation 0 30 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 -1 3 11 33 +1 0 26 39 0 30 Einfügen von Knoten Einfügen von k = 30 +1 14 +2 20 0 17 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Einfügen von Knoten Einfügen von k = 30 +1 14 0 +2 8 20 0 0 0 -1 3 11 17 33 +1 0 26 39 0 30 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 3 11 26 33 30 39 Einfügen von Knoten Einfügen von k = 30 +1 14 +2 20 0 17 L- Rotation Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 3 11 33 30 39 Einfügen von Knoten Einfügen von k = 30 +1 14 +2 20 0 17 26 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Einfügen von Knoten Einfügen von k = 30 +1 14 0 +2 8 20 0 0 0 3 11 17 26 33 30 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 8 0 0 0 0 3 11 20 33 0 0 0 17 30 39 Einfügen von Knoten Einfügen von k = 30 +1 14 0 26 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 0 20 33 0 0 30 39 Einfügen von Knoten Einfügen von k = 30 +1 14 0 0 8 26 0 0 3 11 0 17 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Einfügen von Knoten +1 14 0 0 8 26 0 0 0 0 3 11 20 33 0 0 0 17 30 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Löschen von Knoten Löschen von k = 8 +1 14 0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Löschen von Knoten Löschen von k = 8 +1 14 0 +1 8 20 0 0 0 0 3 11 17 33 0 0 26 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 8 +1 14 0 8 0 0 3 11 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 8 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 8 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 8 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +1 14 -1 11 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +1 14 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +2 14 0 3 L- Rotation Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
+1 20 0 0 17 33 0 0 26 39 Löschen von Knoten Löschen von k = 11 +2 14 0 3 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
Löschen von Knoten Löschen von k = 11 +2 14 0 +1 3 20 0 0 17 33 0 0 26 39 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2
0 0 14 33 0 0 0 0 3 17 26 39 Löschen von Knoten 0 20 Lutz Plümer - Geoinformation - 6. Semester - SS 2001 - Vorlesung 2