Folien zur 2. Übung

Werbung
Übung zur Vorlesung Algorithmische Geometrie
Dipl.-Math. Bastian Rieck
Arbeitsgruppe Computergraphik und Visualisierung
Interdisziplinäres Zentrum für Wissenschaftliches Rechnen
8. Mai 2012
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
1 / 32
Vorlesung
Die Vorlesung
Fragen?
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
2 / 32
Konvexe Hülle
Konvexe Hülle einer Menge im R2
(Demo)
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
3 / 32
Balancierte Binärbäume
Motivation
Binärbaum
Ideale Datenstruktur für Suchanfragen
Performance hängt von Baumhöhe h ab:
Ideal: h = O(log n)
Worst-case: h = O(n)
Will daher balancierten Binärbaum.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
4 / 32
Balancierte Binärbäume
Rot-Schwarz-Bäume
Definition
Ein Rot-Schwarz-Baum ist ein Binärbaum, dessen Knoten jeweils eine
Farbe (rot oder schwarz) zugewiesen ist. Zusätzlich hat der Baum folgende
Eigenschaften:
1
Jeder Knoten ist entweder schwarz oder rot.
2
Der Wurzelknoten ist schwarz.
3
Alle Blattknoten sind schwarz.
4
Die Kinderknoten jedes roten Knotens sind schwarz.
5
Jeder (einfache) Pfad von einem Knoten zu irgendeinem Blattknoten
im gleichen Teilbaum enthält die gleiche Anzahl von schwarzen
Knoten.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
5 / 32
Balancierte Binärbäume
Zwei rote Knoten können also nicht direkt verbunden sein.
Folgerung
Der (einfache) Pfad vom Wurzelknoten zum am weitesten entfernten Blatt
ist höchstens doppelt so lange wie der (einfache) Pfad vom Wurzelknoten
zum am nächsten gelegenen Blatt.
Habe also h = O(2 log n) = O(log n).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
6 / 32
Balancierte Binärbäume
Operationen
Konvention
Jeder innere Knoten habe zwei Kinder.
Füge gegebenenfalls NULL-Knoten ein, um dies sicherzustellen.
Erhaltung der Eigenschaften bei Einfügen und Entfernen nötig.
Erhaltung der Eigenschaften entweder durch Umfärbung oder
Rotation.
Amortisierter Aufwand für beide Operationen: O(1)
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
7 / 32
Balancierte Binärbäume
Einfügen
Generell: Ersetze schwarzes Blatt durch roten Knoten (mit zwei schwarzen
NULL-Kinderknoten).
Stabilität der Eigenschaften
Eigenschaft 3 bleibt immer erhalten.
Eigenschaft 4 kann durch neuen roten Knoten verletzt werden, sowie
beim Umfärben oder Rotieren.
Eigenschaft 5 kann durch neuen schwarzen Knoten verletzt werden,
sowie beim Umfärben oder Rotieren.
Bezeichnungen: n (aktueller Knoten), p (Vaterknoten), g
(Großvaterknoten), u (Onkelknoten, d.h. Bruderknoten des Vaterknotens).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
8 / 32
Balancierte Binärbäume
Fall 1
n ist Wurzelknoten, d.h. der Baum war vorher leer:
Färbe n schwarz wegen Eigenschaft 2.
Da nun jeder Pfad von der Wurzel einen schwarzen Knoten mehr
enthält, ist Eigenschaft 5 nicht verletzt.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
9 / 32
Balancierte Binärbäume
Fall 2
p ist schwarz gefärbt.
Eigenschaft 4 ist nicht verletzt.
Eigenschaft 5 ist nicht verletzt, da wir einen roten Knoten einfügen,
der einen schwarzen Knoten ersetzt.
Müssen also nichts tun.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
10 / 32
Balancierte Binärbäume
Ab jetzt
p ist rot gefärbt. Wegen Eigenschaften 4 und 2 muss es auch einen
Großvaterknoten g geben. Ebenso muss es auch einen Onkelknoten u
geben (der auch ein Blatt sein kann).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
11 / 32
Balancierte Binärbäume
Fall 3
Sowohl p als auch u sind rot.
Färbe beide Knoten schwarz.
Färbe g rot (Eigenschaft 5!)
Färbe von g ausgehend rekursiv neu (beginne mit Fall 1).
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
12 / 32
Balancierte Binärbäume
Ab jetzt
Annahme: p ist das linke Kind (sonst: Bezeichnungen links und rechts
vertauschen).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
13 / 32
Balancierte Binärbäume
Fall 4
p ist rot, u ist schwarz. n ist das rechte Kind von p.
Führe Linksrotation durch, um n und p zu vertauschen.
Färbe p ausgehend von Fall 5 neu, um Eigenschaft 4
wiederherzustellen.
Eigenschaft 5 bleibt erhalten, obwohl Pfade, die durch p gingen, nun
auch durch n gehen!
Wende Fall 5 an, um Eigenschaft 4 wiederherzustellen.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
14 / 32
Balancierte Binärbäume
Fall 5
p ist rot, u ist schwarz. n ist das linke Kind von p.
Führe Rechtsrotation durch.
p ist jetzt Vaterknoten von n und g . Wir wissen, dass g schwarz sein
muss, da p rot ist und Eigenschaft 4 gilt.
Tausche Farben von p und g , um Eigenschaft 4 wiederherzustellen.
Eigenschaft 5 bleibt erhalten, denn alle Pfade, die durch p, n, g
gingen, haben Knoten g verwendet und laufen nun durch p. p ist als
einziger der drei Knoten schwarz.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
15 / 32
Balancierte Binärbäume
Löschen
Regulärer Binärbaum
Trivial, falls die Nachfolger des Knotens Blätter sind oder der Knoten
selbst ein Blattknoten ist.
Falls Knoten zwei Nachfolger hat, die keine Blattknoten sind, suche
entweder maximales Element im linken Teilbaum oder minimales
Element im rechten Teilbaum. Ersetze den Wert im zu löschenden
Knoten dann durch das gefundene Element und lösche den Knoten
aus dem Teilbaum.
7
6
9
6
9
9
6
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
16 / 32
Balancierte Binärbäume
Löschen
Sei m der zu löschende Knoten.
Rot-Schwarz-Baum
Umkopieren der Werte verletzt keine der Eigenschaften.
Muss also nur Fall betrachten, in dem m höchstens einen
Kinderknoten hat, der kein Blattknoten ist (andere Fälle können
darauf reduziert werden).
Sei daher c das Kind von m (falls beide Kinder von m Blätter sind, wähle
irgendeines aus).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
17 / 32
Balancierte Binärbäume
Einfache Fälle
Falls m rot ist, ersetze m durch c. c muss wegen Eigenschaft schwarz
sein und die Ersetzung verletzt keine Eigenschaften.
Falls m schwarz ist und c rot, färbe c schwarz und entferne m.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
18 / 32
Balancierte Binärbäume
Komplexere Fälle
m und c sind beide schwarz. Ersetze m durch c und bezeichne c in seiner
neuen Position mit n. Sei s der Bruderknoten (mit Kindern sl und sr ) von
n. Mit p sei der Vaterknoten von n bezeichnet.
Warum gibt es sl und sr ?
Wir haben angenommen, dass m und c beide schwarz sind. Der Teilbaum
von p, der n enthält, hat mindestens zwei schwarze Knoten, nämlich n und
einen Blattknoten. Also muss der Teilbaum von p, der s enthält, auch
mindestens zwei schwarze Knoten haben. Dies kann aber nicht der Fall
sein, wenn s ein Blattknoten ist.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
19 / 32
Balancierte Binärbäume
Fall 1
n ist die neue Wurzel. Hier ist nichts zu tun, denn wir haben einen
schwarzen Knoten von jedem Pfad entfernt und die neue Wurzel ist
schwarz. Also gelten alle Eigenschaften weiterhin.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
20 / 32
Balancierte Binärbäume
Fall 2
s ist rot und das linke Kind von p (sonst alle Bezeichnungen umdrehen).
Tausche Färbung von p und s.
Führe Linksrotation an p durch.
Fahre mit Fall 3 fort für n.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
21 / 32
Balancierte Binärbäume
Fall 3
p, s und die Kinderknoten von s sind schwarz.
Färbe s rot.
Alle Pfade, die durch s gehen, durchlaufen nun einen Knoten weniger.
Aber alle Pfade, die durch n gehen, durchlaufen auch einen Knoten
weniger, denn wir haben den Vaterknoten von n gelöscht.
Durch das Löschen des Vaterknotens von n haben wir allerdings
Eigenschaft 5 verletzt: Pfade, die durch p gehen, haben einen
schwarzen Knoten weniger als Pfade, die nicht durch p gehen. Fahre
daher mit Fall 1 fort für p.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
22 / 32
Balancierte Binärbäume
Fall 4
s und seine Kinderknoten sind schwarz, aber p ist rot.
Tausche die Farben von s und p.
Dies ändert nichts an der Anzahl der schwarzen Knoten für Pfade, die
durch s laufen (denn solche Pfade laufen auch durch p). Stattdessen
durchlaufen Pfade, die durch n gehen, einen zusätzlichen schwarzen
Knoten (nämlich p), sodass der gelöschte schwarze Knoten (der
ursprüngliche Vaterknoten von n) ausgeglichen wird.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
23 / 32
Balancierte Binärbäume
Fall 5
s ist schwarz, sl ist rot, sr ist schwarz und n ist das linke Kind seines
Vaterknotens (falls n das rechte Kind ist, alle Richtungen umdrehen).
Führe Rechtsrotation an s durch.
Tausche dann die Farben von s und seinem neuen Vaterknoten. Dies
ändert nichts an der Anzahl der scharzen Knoten.
Fahre dann mit Fall 6 für n fort.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
24 / 32
Balancierte Binärbäume
Fall 6
s ist schwarz, sr ist rot und n ist das linke Kind seines Vaterknotens (falls
n das rechte Kind ist, alle Richtungen umdrehen).
Führe Linksrotation an p durch.
Tausche Farben von p und s.
Färbe sr schwarz. Pfade durch n enthalten einen zusätzlichen
schwarzen Knoten (entweder p oder s), der den fehlenden Knoten
ausgleicht. Pfade, die nicht durch n gehen, ändern sich nicht.
Quelle: Wikipedia
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
25 / 32
Balancierte Binärbäume
Komplexität
Lemma
Sei m ein Knoten des Rot-Schwarz-Baumes. Sei bh die Anzahl der
schwarzen Knoten ausgehend von m zu einem Blattknoten (ohne m zu
zählen). Dann hat der Teilbaum, der bei m beginnt, mindestens 2bh − 1
interne Knoten.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
26 / 32
Balancierte Binärbäume
Beweis
Induktion über die Höhe von m.
Für h = 0 ist m schwarz und ein Blattknoten. Es gibt also 20 − 1 = 0
interne Knoten.
Für h = 1 ist entweder m schwarz und hat zwei schwarze Blattknoten
oder m ist rot und hat somit wegen Eigenschaft 4 zwei schwarze
Kinder. Es gibt also 21 − 1 = 1 interne Knoten.
Angenommen, die Formel gelte für eine Höhe von h. Wir nehmen nun
einen Knoten m mit Höhe h + 1 an und zeigen, dass die Formel gilt. m ist
oBdA ein innerer Knoten. Er halt also zwei Kinderknoten mit entweder
bh = bh (m) oder bh = bh (m) − 1. Nach der Induktionsannahme hat jedes
Kind mindestens 2bh (m)−1 − 1 innere Knoten, also hat m mindestens
2bh (m)−1 − 1 + 2bh (m)−1 − 1 + 1 = 2bh (m) − 1 innere Knoten.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
27 / 32
Balancierte Binärbäume
Theorem
Ein Rot-Schwarz-Baum mit n internen Knoten hat eine Höhe h von
höchstens 2 log(n + 1).
Beweis
Nach Eigenschaft 4 sind mindestens die Hälfte aller Knoten von der
Wurzel zu einem Blatt schwarz. Es gilt also bh ≥ h2 . Unter Benutzung des
Lemma erhalten wir:
n ≥ 2h/2 − 1
h
2
⇔ h ≤ 2 log(n + 1)
⇔ log(n + 1) ≥
Also ist h = O(log n).
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
28 / 32
Aufgaben
Aufgaben zur konvexen Hülle
Aufgabe 1.1
Zeigen Sie durch Angabe eines Gegenbeispiels, dass die Vereinigung von
zwei konvexen Mengen im Allgemeinen nicht konvex ist.
Zeigen Sie, dass der Schnitt von zwei konvexen Mengen wieder konvex ist.
Aufgabe 1.2
Sei P ⊆ R2 eine Menge von Punkten. Zeigen Sie durch einen
Widerspruchsbeweis, dass das Polygon P mit dem kleinsten Umfang, das
P vollständig enthält, konvex ist. Eine Skizze zum Beweis ist ausreichend.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
29 / 32
Aufgaben
Es sei eine gerichtete Strecke von p = (px , py ) nach q = (qx , qy ) gegeben.
Weiterhin sei r = (rx , ry ) ein beliebiger Punkt.
Aufgabe 2.1
Zeigen Sie, dass das Vorzeichen der Determinante


1 px py
D = det 1 qx qy 
1 rx ry
angibt, auf welcher Seite der Strecke r liegt.
Aufgabe 2.2
Zeigen Sie, dass |D| genau das Doppelte der Fläche des von p, q, r
aufgespannten Dreiecks ist.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
30 / 32
Aufgaben
Aufgabe 2.3
Begründen Sie, warum der in 2.1 vorgestellte Weg zur Entscheidung, auf
welcher Seite r liegt, sich besonders gut implementieren lässt.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
31 / 32
Aufgaben
Erweiterung des implementierten Rot-Schwarz-Baumes
Aufgabe 3
Verwenden Sie den vorgestellten Rot-Schwarz-Baum in einem eigenen
Projekt mit dem Datentyp double. Erzeugen Sie 10 Zufallszahlen und
fügen Sie diese in den Baum ein.
Passen Sie für den Streamingoperator die Anzahl der
Nachkommastellen (5) sowie das Format (wissenschaftliche Notation)
an. Verwenden Sie hierzu Templatespezialisierung von operator<<.
B. Rieck (CoVis)
Algorithmische Geometrie
8. Mai 2012
32 / 32
Herunterladen