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