Beispiele Gitter Methode

Werbung
Mehrdimensionale
Bereichssuche
Beispiele
ƒ Gegeben: Menge von n Punkten P={p1,…,pn}
im d-dimensionalen Raum, d-dimensionales
Rechteck D
ƒ Gesucht: Alle Punkte aus P die in D liegen
ƒ Menge P schon anfangs bekannt
ƒ Viele Anfragen mit Rechtecken sollen
möglichst schnell bearbeitet werden
ƒ Wollen P in Datenstruktur ablegen, so dass
Bereichsabfragen schnell sind
Technische Universität Wien
36
Institut für Computergraphik und Algorithmen
•
•
•
•
Alter zwischen 20 und 30
Verdienst zwischen 30000 und 40000 Euro p. a.
Zwischen 2 und 3 Kindern
Schuhgröße 41-43
Technische Universität Wien
37
Institut für Computergraphik und Algorithmen
Eindimensionale Bereichssuche
ƒ Satz: Mit Vorbereitungszeit O(n log n) kann
Bereichssuche in Zeit O(R+log n) pro Anfrage
ausgeführt werden, wobei R Anzahl der
Elemente im Bereich
ƒ Beweis:
• Speichere Folge in balanciertem Suchbaum (z.B.
AVL) – Laufzeit O(n log n)
• Anfrage kosten O(log n) für Finden des ersten
Elements und O(R) für Durchgehen der
Treffermenge mit Nachfolger-Operation
Technische Universität Wien
ƒ d=1: Aufzählen aller Elemente in Folge mit
Schlüssel zwischen a und b
ƒ d=2: Aufzählen aller Städte im Quadrat mit
Seitenlänge 100km und Zentrum Wien
ƒ d>2: Datenbankabfragen. Finde alle
Personen in Datenbank mit
38
Institut für Computergraphik und Algorithmen
Höherdimensionale
Bereichssuche
ƒ Naives Verfahren: Teste alle Punkte ob sie im
Bereich liegen
ƒ Laufzeit: O(n)
ƒ Optimal, wenn Größe der Treffermenge Ω(n)
ƒ Schlecht wenn Treffermenge Größe o(1) hat
ƒ Wollen output-sensitiven Algorithmus:
Laufzeit hängt von Größe der Treffermenge
ab
Technische Universität Wien
39
Institut für Computergraphik und Algorithmen
Gitter Methode
Zweidimensionale Suchbäume
ƒ Lege regelmäßiges Gitter über Punkte
ƒ Betrachte nur Punkte in den Gitterzellen, die
von Suchbereich geschnitten werden
ƒ Funktioniert gut wenn Verteilung regelmäßig
und aller Gitterzellen etwa gleich voll
ƒ Schlecht wenn fast alle Gitterzellen leer und
Punkte alle in ein paar Zellen konzentriert
sind
ƒ Knoten entsprechen den Punkten in 2D
ƒ Auf Ebene mit gerader Tiefe sind Schlüssel
die x-Koordinaten, sonst y-Koordinaten
ƒ Bei x-Koordinate: Linker Teilbaum von pi
enthält Punkte links von pi, rechter Teilbaum
Punkte rechts von pi
ƒ Bei y-Koordinate: Linker Teilbaum von pi
enthält Punkte unterhalb pi, rechter Teilbaum
Punkte oberhalb von pi
Technische Universität Wien
Institut für Computergraphik und Algorithmen
40
Technische Universität Wien
41
Institut für Computergraphik und Algorithmen
1
Beispiel
Suche im Baum
ƒ Suche nach Knoten ähnlich wie bei normalem
binären Suchbaum, nur abwechselnd nach xund y-Koordinate Kind wählen
ƒ Bei Bereichssuche kann es auch sein, dass
man beide Kinder betrachten muss.
ƒ Beispiel: Es wird nach x-Koordinate
aufgespalten und gesuchter Bereich sowohl
links als auch rechts vom aktuellen Knoten
Technische Universität Wien
Technische Universität Wien
42
Institut für Computergraphik und Algorithmen
43
Institut für Computergraphik und Algorithmen
Beispiel
9
9
Technische Universität Wien
44
Institut für Computergraphik und Algorithmen
9
Technische Universität Wien
45
Institut für Computergraphik und Algorithmen
Laufzeit
Aufteilung der Folge
ƒ Wenn Baum balanciert kann man nach
Ergebnismengen konstanter Größe in
logarithmischer Zeit suchen
ƒ Wenn Baum nicht balanciert kann er in Pfad
entarten, nicht besser als naives Verfahren
ƒ Muss beim Aufstellen des Baums Balance
garantieren
ƒ Aufteilung der aktuellen Teilfolge am Median
1. Sortiere Folge ein Mal nach x- und ein Mal
nach y-Koordinate ⇒ 2 sortierte Folgen
2. Teile y-Folge am Median in y1 und y2
3. Teile x-Folge in Folgen x1 und x2 mit gleichen
Elementen wie y1 und y2
4. Teile Folgen x1 und x2 rekursiv am Median
auf und teile y1 und y2 entsprechend dieser
Aufteilung usw...
Technische Universität Wien
Institut für Computergraphik und Algorithmen
46
Technische Universität Wien
47
Institut für Computergraphik und Algorithmen
2
Beispiel zur Aufteilung
X: G D A C
B F
Y: F
A B D
G C
E
E
B
D
A
X1: G C F
Y1: F G C
X1: D A B
Y1: A B D
E
G
C
F
E
C
G
Technische Universität Wien
48
Institut für Computergraphik und Algorithmen
A
F
D
B
Technische Universität Wien
49
Institut für Computergraphik und Algorithmen
Laufzeit
Höhere Dimensionen
ƒ Aufbau:
ƒ Verwende im Prinzip gleichen Algorithmus
ƒ Teile Punkte reihum nach Dimensionen auf
ƒ Bei Suche auch wieder Dimensionen
abwechseln
ƒ In Dimension k:
• T(n): Aufbauzeit bei n Punkten
• Es gilt: T(n)=2T(n/2)=cn
• Also Laufzeit Θ(n log n) (Beweis wie bei Mergesort
durch Induktion)
ƒ Suche:
• Laufzeit bei R Punkten im Bereich:
• Beweis: Schwierig
• Bei kleinem R sehr viel besser als alle Punkte
testen
Technische Universität Wien
50
Institut für Computergraphik und Algorithmen
• Aufbau:
• Suche:
Technische Universität Wien
51
Institut für Computergraphik und Algorithmen
Statistiken
ƒ 3 Teams ⇒ Preise für alle Teilnehmer
ƒ Bewertung:
Programmierwettbewerb
Die Sieger
Technische Universität Wien
Institut für Computergraphik und Algorithmen
52
• Für jede der Instanzen gibt es untere Schranke l
für minimal nötige Kamele berechnet mit MOSEL
Programm
• Berechne für jede Lösung mit k Kamelen
• Die Gruppe, bei der der Durchschnitt der
Abweichung über alle drei Instanzen minimal ist,
hat gewonnen
Technische Universität Wien
53
Institut für Computergraphik und Algorithmen
3
Statistiken
Namen
v500 v800 v1000 Abweichung v500 Abweichung v800Abweichung v1000 Durchschnittliche Abweichung
Friedrich_Slivovsky
65645 84803 141744
0,14%
0,31%
0,14%
0,19%
Adrian_Dabrowski,Michael_Jakl 65565 84544 141551
0,02%
0,00%
0,00%
0,01%
0,72%
0,39%
0,16%
0,42%
Stefan_Ehman,Andreas_Monitzer 66023 84875 141782
Lower Bounds
65554 84544 141550
Technische Universität Wien
54
Institut für Computergraphik und Algorithmen
4
Zugehörige Unterlagen
Herunterladen